Observe sua rede com o Observium
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: Uma referência em 2009;
- Viva o Linux: Nenhuma referência;
- UnderLinux: Menos de 5 referências no fórum de usuários.
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:
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:
*/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”:
E adicione as linhas abaixo no /etc/cron.d/observium:
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:
<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):
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):
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):