Um dos melhores programas de monitoramento de hosts e serviços open source é o Nagios, essa incrível e, a princípio, complicada ferramenta. Existe muita documentação sobre o Nagios, porém poucas reúnem todo o processo, desde a instalação, configuração e testes. Por isso, depois de enfrentar dificuldades, resolvi publicar minhas descobertas.
Plugins são os scripts que o Nagios executa (também podem ser executados manualmente) para verificar o status de um host ou serviço. Existem vários plugins neste pacote, e podemos ainda criar plugins personalizados... mas essa é uma outra história.
Os plugins ficam, por padrão, dentro de /usr/local/nagios/libexec.
Primeiro, descompacte o arquivo baixado:
# tar zxvf nagios-plugins-1.4.9.tar.gz
Agora, vamos criar o Makefile:
# cd nagios-plugins-1.4.9
# ./configure
# make all
# make install
Pronto, os plugins já estão instalados e prontos para serem acessados.
O único problema dos plugins é que a maioria deles são para uso local no servidor, para monitoramento de uso de disco, partições, usuários logados, processos, cpu, memória, etc.
Para realizar o monitoramento desses recursos em hosts remotos (outras máquinas linux ou Unix), utilizamos o NRPE (Nagios Remote Plugin Executor).
Para isto, não é preciso instalar o Nagios nos hosts remotos, apenas os plugins e o NRPE.
Para instalar o NRPE, primeiro descompacte o arquivo:
# tar zxvf nrpe-2.8.1.tar.gz
Vamos ao Makefile:
# ./configure
À compilação:
# make all
À instalação do plugin "check_nrpe" dentro de libexec:
# make install-plugin
O daemon do serviço:
# make install-daemon
O arquivo de configuração padrão:
# make install-daemon-config
E a criação do serviço dentro do xinetd:
# make install-xinetd
Pronto. Plugin e daemon instalados, arquivo de configuração e serviço xinetd criados.
Vamos agora apontar o número da porta no arquivo /etc/services.
# vi /etc/services
Insira a linha:
nrpe 5666/tcp # NRPE
Salve e saia. Reinicie o serviço XINETD.
# /etc/init.d/xinetd restart
Pronto, o NRPE já está, ou deveria estar rodando.
Para testar, utilize:
# nmap localhost -p 5666
Se retornar o status 5666/tcp open, o NRPE está rodando. Se o status estiver como closed, verifique a configuração do serviço nrpe no xinetd está como disable = no.
Nos clientes
Para fazer a instalação nos hosts remotos, altere também o serviço no xinetd, para permitir a conexão do Nagios Server ao NRPE:
# vi /etc/xinetd.d/nrpe
Altere a linha:
only from = 127.0.0.1
para
only from = 127.0.0.1 <ip_nagios_server>
Salve e saia. Reinicie o serviço XINETD.
# /etc/init.d/xinetd restart
Para permitir que o servidor Nagios execute os plugins remotamente no cliente, o arquivo /usr/local/nagios/etc/nrpe.cfg nos clientes deve estar correto, e com todos os comandos a serem executados já definidos.
Por exemplo:
Se a linha de comando local do plugin "check_swap" é:
[2] Comentário enviado por augustoferronato em 09/07/2007 - 09:30h
Amigo, estou com este problema
It appears as though you do not have permission to view information you requested...
If you believe this is an error, check the HTTP server authentication requirements for accessing this CGI
and check the authorization options in your CGI configuration file.
[4] Comentário enviado por rgavioli em 10/07/2007 - 23:34h
Olá Augusto!
você descomentou no arquivo cgi.cfg as linhas de autorização ?
#authorization_*=nagiosadmin
Se sim, apesar de não ser necessário, coloque no diretório /usr/local/nagios/libexec as permissões para o grupo nagcmd:
chgrp -R nagcmd /usr/local/nagios/libexec
[5] Comentário enviado por rgavioli em 10/07/2007 - 23:36h
Valeu Clayton,
contei com ajuda de algumas pessoas, claro... pra desenvolver esse artigo!
Obrigado ao Fabio Munhoz que me ajudou nas experiências, e ao Fabiano Rodrigues, com a motivação !!!
[11] Comentário enviado por _holtz_ em 14/09/2007 - 11:41h
Bom dia! Pessoal, Meu Nagios tah funcionando legal, o problema eh que as notificações geradas não estão sendo enviadas para meu e-mail. To usando o exim4, ao usar # echo "teste de envio" | mail -s "teste de envio" meu_e-mail@gmail.com, consigo receber a msg, porém, as notificações no nagios não chegam em meu e-mail. No arquivo contacts.cfg, tah habilitado notify-by-email. Se alguem puder me ajudar eu ficaria agradecido. Obrigado
Att,
[12] Comentário enviado por rgavioli em 14/09/2007 - 13:22h
Olá holtz,
dê uma olhada no arquivo commands.cfg, na seção #notify-by-email.
Dentro dessa seção, existe a linha "command_line", que é onde fica o comando para envio do e-mail e as variáveis que serão enviadas na mensagem. Pode ser que o comando de envio de e-mail não seja suportado na sua distro.
Fica assim:
command_line /usr/bin/printf "%bla bla bla bla | /usr/bin/mail -s bla bla bla...
De uma olhada com cuidado nessa linha, para não alterar no lugar errado... faça um backup desse arquivo antes de alterar.
[13] Comentário enviado por _holtz_ em 15/09/2007 - 15:00h
Blz Ricardo, vo dar uma olhada nesse arquivo, aliás, vo olhar de novo, pra ver se não tem nada errado. O estranho é pq to usando Debian etch e Nagios 2.9, assim como seu artigo, porém sem sucesso no envio de e-mails.
Obrigado pela atenção. Vo olhar e posto aqui o resultado e uma possível dúvida. Vlw de novo!
[14] Comentário enviado por _holtz_ em 18/09/2007 - 12:28h
Bom dia Gavioli, seguinte: Problema resolvido, modifquei o comando Info:\n\n$SERVICEOUTPUT$" | /bin/mail -s "** $NOTIFICATIONTYPE$ alert , o que fez funcionar foi especificar todo o caminho do diretorio depois do pipe, ficando assim | /usr/bin/mail -s. Valeu pela ajuda! Estou com uma outra duvida, o arquivo nagios.cmd, existente /nagios/var/rw/ é deletado toda vez que o nagios é reiniciado, e isso faz com que as permissões de escrita sejam alteradas. Quando vou tentar editar algum arquivo utilizando a interface web, dá erro de permissão desse arquivo. Já utilizei o comando "chown nagios. /usr/local/nagios/var/rw" porém isso não resolveu o problema. Tentei alterar algumas linhas no script de inicialização no Nagios, mas sem sucesso. Alguma solução? Obrigado
[15] Comentário enviado por diramos em 23/01/2008 - 19:40h
Ricardo.
Ótimo artigo.
Mas tenho uma configuração "extra" a fazer no Nagios que instalei na minha empresa.
É referente à notificação por email.
Por questão de segurança, as caixas postais de email da empresa são configuradas para receber emails somente de contas padrões e previamente cadastradas.
O Nagios tem enviado notificações por email usando o remetente "nagios@mail.meuprovedor".
E as mensagens são barradas pelo Exchange, pois deveira ser no formato de exemplo assim: "diramos@mail.meuprovedor".
Então, a pergunta é: onde eu configuro isso?
Tente mudar o user no nagios.cfg para o padrão nosso e deu erro. Nem carregou o Nagios.
Se puder responder, fico devendo essa.
[19] Comentário enviado por jgaleti em 09/10/2008 - 16:10h
Aos colegas que estao com dificuldades ao instalar o NRPE, e que estão com problemas com SSL, se estiverem usando o debian ou qualquer derivado dele instalem uma dependencia:
apt-get install libssl-dev
Após instalar entre no diretorio e rode o ./configure e depois o make e os outros comandos do tutorial.
Espero uma resposta positiva de vocês: steve_harris e l-x.
[20] Comentário enviado por donabuba em 15/10/2008 - 15:52h
Olá.
Em minha rede, tenho +/- 200 máquinas sendo monitoradas, por isso, e grande a avalanche de e-mails com notificações.
Gostaria de filtrar essas notificações para que sói sejam enviadas as referentes aos servidores mais importantes da minha rede.
Obrigada.
[23] Comentário enviado por geber em 20/08/2009 - 19:01h
Olá, alguém pode me ajudar?
Ao acessar a página do Nagios aparece a msg: "It appears as though you do not have permission to view information for any of the hosts you requested... If you believe this is an error, check the HTTP server authentication requirements for accessing this CGI
and check the authorization options in your CGI configuration file."
Já tentei todas as soluções enviadas, mas nenhuma funcionou. Reparei também que após fazer o logon aparece a seguinte informação:
Current Network Status
Last Updated: Thu Aug 20 18:27:45 BRT 2009
Updated every 90 seconds
Nagios® Core™ 3.2.0 - www.nagios.org
Logged in as ? >>>>>>>>>> não aparece a minha conta
Segue abaixo minhas configurações:
Estou utilizando o Debian 5.0.
CGI.CFG:
todos os authorized com nagiosadmin ( authorized_for_system_commands=nagiosadmin )
Pasta /usr/local/nagios:
- dono: nagios
- grupo nagcmd
[24] Comentário enviado por poti em 28/08/2009 - 13:50h
Olá, ao testar a configuração estou tendo o seguinte erro:
Warning: Duplicate definition found for command 'check_http' (config file '/usr/local/nagios/etc/objects/commands.cfg', starting on line 241)
Error: Could not add object property in file '/usr/local/nagios/etc/objects/commands.cfg' on line 242.
Error processing object config files!
Abraços
t+
[25] Comentário enviado por ticopan em 14/09/2009 - 14:04h
Boa tarde... se alguém puder me ajudar com o Nagios eu agradeço. Ao tentar iniciar o Nagios pelo comando: /nagios/bin/nagios -v /nagios/etc/nagios.cfg
Ele me apresenta o seguinte erro:
Error: Could not add object property in file '/nagios/etc/hosts.cfg'
Abaixo segue o conteúdo do arquivo hosts.cfg:
################################################################################
# Sample object config file for Nagios
#
# Read the documentation for more information on this configuration file. I've
# provided some comments here, but things may not be so clear without further
# explanation, so make sure to read the HTML documentation!
#
# Last Modified: 03-10-2002
#
################################################################################
# Generic host definition template
define host{
name generic-host ; The name of this host template - referenced in other host definitions, used for template recursion/resolution
notifications_enabled 1 ; Host notifications are enabled
event_handler_enabled 1 ; Host event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}
# 'Localhost' host definition
define host{
use generic-host ; Name of host template to use