Observium – Monitoramento de Rede

Observe sua rede com o Observium

Quando se fala em “sistema de monitoramento de rede open source”, um nome vem a cabeça: Cacti. É quase uma unanimidade, pela facilidade de utilização, por estar “empacotado” para as principais distribuições GNU/Linux, bastando um apt-get/yum install cacti e o sistema já está instalado. E também pela ampla documentação.

Há algum tempo atrás, por uma indicação de um colega da lista de discussão GTER, conheci o Observium e o tenho utilizado desde então, não como um substituto ao Cacti, mas sim como um complemento.

Sei que isso não é uma métrica muito confiável, mas fazendo uma busca pelo termo “cacti network monitoring” nos principais mecanismos de busca que temos hoje, os números são consideráveis.

Busca pelo termo “cacti network monitoring”:

  • Google: Aproximadamente 154.000 resultados;
  • Bing: Aproximadamente 104.000 resultados;
  • Yahoo: Aproximadamente 102.000 resultados.

Busca pelo termo “observium network monitoring”:

  • Goggle: Aproximadamente 8.460 resultados;
  • Bing: Aproximadamente 6.300 resultados;
  • Yahoo: Aproximadamente 6.320 resultados.

Em alguns sites do Brasil:

Este guia mostra como instalar o Observium no CentOS/RHEL/Scientific Linux.

Neste exemplo usei o CentOS 6.3 64 bits, mas para outras distribuições o processo é semelhante, pois a instalação do Observium é feita por SVN.

Repositórios

Para obter todos os módulos adicionais, é ideal ter os repositórios adicionais RPM Forge e EPEL:

# rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt
# rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# rpm -Uvh http://mirror.globo.com/epel/6/x86_64/epel-release-6-8.noarch.rpm

Pacotes:

# yum install httpd.x86_64 mysql-server.x86_64 mysql.x86_64 php-gd.x86_64 php-mcrypt php-mysql.x86_64 php-pear net-snmp.x86_64 php-pear.noarch php-snmp.x86_64 php.x86_64 fping.x86_64 graphviz.x86_64 ImageMagick.x86_64 jwhois.x86_64 net-snmp-utils.x86_64 nmap.x86_64 OpenIPMI-tools.x86_64 rrdtool.x86_64 subversion.x86_64 vixie-cron.x86_64

# pear install Net_IPv6
# pear install Net_IPv4

Instalação do Observium

Criar o diretório:

# mkdir -p /opt/observium && cd /opt

Checar a última versão no repositório do Subversion:

# svn co http://www.observium.org/svn/observer/trunk observium

Mudar para o diretório de instalação:

# cd /opt/observium

Base de Dados

Criar a base de dados e o usuário:

mysql> CREATE DATABASE observium;
mysql> GRANT ALL PRIVILEGES ON observium.* TO ‘observium’@’localhost’ IDENTIFIED BY ‘<Senhas>’;

Configuração

Copie o arquivo de configuração padrão e faça as alterações necessárias:

# cp config.php.default config.php

Adicione uma entrada para o fping:

$config[‘fping’] = “/usr/sbin/fping”;

Configure o schema da base de dados:

# php includes/sql-schema/update.php

Alguns erros devem aparecer, isso é normal. Mas se forem mais do que 6, revise sua configuração.

Crie os diretórios “graphs” e “rrd” (* Lembre-se: ainda estamos abaixo do diretório /opt/observium):

# mkdir graphs rrd
# chown apache.apache graphs rrd

Obs.: O sistema não aceita rodar como um diretório. Exemplo: http://www.dominio.com/observium

Adicionar o primeiro usuário (use o nível 10 para admin):

# cd /opt/observium
# ./adduser.php <username> <password> <level>

Adicione o primeiro dispositivo para ser monitorado:

# ./addhost.php <hostname> <community> v2c

Obs.: DEVE-SE, obrigatoriamente, ter um nome válido, seja por DNS ou pelo /etc/hosts.

Faça uma verificação inicial do novo dispositivo:
# ./discovery.php -h all
# ./poller.php -h all

Adicione na crontab (Ex.: /etc/cron.d/observium) o conteúdo abaixo:

33 */6  * * *   root    /opt/observium/discovery.php -h all >> /dev/null 2>&1
*/5 *  * * *    root   /opt/observium/discovery.php -h new >> /dev/null 2>&1
*/5 *  * * *    root   /opt/observium/poller.php -h all >> /dev/null 2>&1

Faça um reload/restart no serviço:

# /etc/init.d/crond reload/restart

O sistema já estará disponível em: http://<server ip>

Atualização

É utilizado o SVN para a atualização, bastando executar o comando abaixo:

# cd /opt/observium
# svn update
# ./discovery.php -h new

Billing e outras configurações

Billing

Uma função muito útil e interessante é o Billing, onde você pode contabilizar a utilização de uma ou mais portas.

Como podemos ver na imagem, pelo menos aqui, o Barrichello está na frente de do Schumacher e do Senna. 🙂

Para ativá-lo, altere a linha abaixo no “config.php”:

$config[‘enable_billing’] = 1;

E adicione as linhas abaixo no /etc/cron.d/observium:

*/5 *  * * *   root    /opt/observium/poll-billing.php >> /dev/null 2>&1
01 *  * * *   root    /opt/observium/billing-calculate.php >> /dev/null 2>&1

 

Desativar itens

Por padrão, quando você adiciona um dispositivo, ele traz todas as configurações de rede.

Num servidor Windows, que eu usei como exemplo para montar este tutorial, ele acaba trazendo uma série de interfaces que não precisam ser vistas, o que num primeiro momento pode deixar o visual um pouco poluído, ao contrário do Cacti, que você precisa especificar o quer que seja monitorado.

Na imagem abaixo podemos ver o Item Ports com todos os itens habilitados:

Para desativar estes itens, siga os passos abaixo ao acessar a interface WEB:

Devices → All Devices → *NomeDoServidor* → Edit (a chave que fica bem escondida bem à direita) → Ports

Nas colunas “Polling” e “Alerts”, deixe todos os itens no “No”, com exceção da placa de rede que você quer monitorar.

Na mesma tela no item “Modules”, estão todos os módulos que, por padrão, vem todos ativados:

Redirecionar todo tráfego HTTP para HTTPS

Pode parecer óbvio, mas tenho por padrão não usar HTTP para qualquer serviço WEB, somente HTTPS.

Para isso, redireciono todo o tráfego alterando os arquivos abaixo:

1. /etc/httpd/conf/httpd.conf:

NameVirtualHost *:80

<VirtualHost *:80>

RewriteEngine    on
RewriteCond      %{SERVER_PORT} ^80$
RewriteRule       ^(.*)$ https://%{SERVER_NAME}$1 [L,R]

</VirtualHost>

2. /etc/httpd/conf.d/ssl.conf (arquivo padrão do SSL):

LoadModule ssl_module modules/mod_ssl.so

Listen 443

SSLPassPhraseDialog builtin

SSLSessionCache   shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout  300
NameVirtualHost *:443

SSLMutex default

SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin

SSLCryptoDevice builtin

<VirtualHost *:443>

ServerName wiki.domain.net:443
ServerAlias wiki.domain.com:443

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on

SSLProtocol all -SSLv2

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

SSLCertificateFile /etc/pki/tls/certs/localhost.crt

SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

<Files ~ “\.(cgi|shtml|phtml|php3?)$”>
SSLOptions +StdEnvVars
</Files>
<Directory “/home/viaza132/www/cgi-bin”>
SSLOptions +StdEnvVars
</Directory>

SetEnvIf User-Agent “.*MSIE.*” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \
“%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”

</VirtualHost>

3. /etc/httpd/conf.d/ssl-observium.conf (este arquivo não existe, deve ser criado):

<VirtualHost *:443>

ServerName observium.domain.net:443
ServerAlias observium.domain.com:443

DocumentRoot “/opt/observium/html”

<Directory /opt/observium/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
AuthUserFile /home/viaza132/www/.htpasswd
AuthName “Please enter your ID and password”
AuthType Basic
require valid-user
Order allow,deny
Allow from all
</Directory>

ErrorLog logs/ssl-observium_error_log
TransferLog logs/ssl-observium_access_log
LogLevel warn

SSLEngine on

SSLProtocol all -SSLv2

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

SSLCertificateFile /etc/pki/tls/certs/localhost.crt

SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

<Files ~ “\.(cgi|shtml|phtml|php3?)$”>
SSLOptions +StdEnvVars
</Files>
<Directory “/home/viaza132/www/cgi-bin”>
SSLOptions +StdEnvVars
</Directory>

SetEnvIf User-Agent “.*MSIE.*” \     nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \
“%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”

</VirtualHost>

Além de tudo, proteger o acesso com senha:

# htpasswd /home/viaza132/www/.htpasswd admin

Tela dos dispositivos configurados com algumas informações básicas:

Tela de status dos dispositivos:

Algumas outras checagens que ele faz por padrão (Memory, CPU e Disk Usage):

Rolar para cima