Quando se fala em sistema de monitoramento de rede OpenSource um nome vem a cabeça: Cacti (*). É quase uma unanimidade, pela facilidade de utilização,
por estar "empacotado" para as principais distribuições 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
Br-Linux <http://br-linux.org> - Uma referência em 2009
Viva o Linux <http://www.vivaolinux.com.br> - Nenhuma referência
UnderLinux <http://www.underlinux.com.br> -Menos de 5 referências no Fórum de usuários
Introdução
Este guia mostrar instalar o Observium em um Linux CentOS / RHEL / Scientific Linux.
Neste exemplo, usei o CentOS 6.3 64Bits, 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 (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 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
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 esta 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 s 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 excessã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 tráfego, para isso altero nos arquivos abaixo:
/etc/httpd/conf/httpd.conf
NameVirtualHost *:80
<VirtualHost *:80>
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>
''/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 "/var/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>
/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 /var/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 "/var/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 /var/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)
- Referências
Este tutorias foi baseado na documentação oficial, disponível no site http://www.observium.org
Lista de Discussão: http://postman.memetic.org/cgi-bin/mailman/listinfo/observium
(*) http://www.cacti.net/
(**) https://eng.registro.br/mailman/listinfo/gter
(***) http://www.observium.org
para conhecer um demo visite o site http://demo.observium.org/