Monitorando redes e servidores com Nagios

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.

[ Hits: 187.193 ]

Por: Ricardo Gavioli em 07/07/2007


Configurando o Nagios



O diretório padrão da instalação do Nagios (se você não alteração durante a criação do Makefile) é /usr/local/nagios.

Deverão existir, basicamente, 6 subdiretórios:
  • bin - Executáveis do Nagios;
  • etc - Arquivos de configuração;
  • libexec - Plugins;
  • sbin - Scripts CGI para interface Web;
  • share - Arquivos HTML e imagens para Web;
  • var - Logs.

Dentro do diretório etc, se você executou o comando "make install-config" durante a instalação, deverão estar os arquivos de exemplo de configuração. Estes arquivos estão bem completos, precisando apenas de poucas alterações para o correto funcionamento. Portanto, vamos utilizar esses mesmos arquivos para levantar nosso sistema.

Antes de mais nada, realizamos um backup dos arquivos originais para eventuais problemas na configuração:

# cd /usr/local/nagios/etc
# mkdir original
# cp *.cfg-sample original


Renomeie todos os arquivos com nome .cfg-sample para .cfg:

# for i in *cfg-sample; do mv $i `echo $i|sed -e s/cfg-sample/cfg/`; done;

Pronto, temos agora no diretório etc os arquivos necessários para começarmos as configurações do Nagios.

Arquivos de configuração

cgi.cfg

Contém as configurações de acesso e visualização via Web-CGI. Descomente as linhas de autorização, e defina os usuários que podem acessar as funções, de acordo com o arquivo htpasswd.users, conforme já visto na página anterior.

nagios.cfg

Configurações padrão do Nagios. Precisamos alterar apenas a definição para busca de comandos externos (para uso do NRPE), e o formato da data:

check_external_commands=1
date_format=euro

commands.cfg

Definição dos comandos a serem executados para monitoramento.

Todos os plugins podem ser executados manualmente, utilizando a opção "-h" para exibir a ajuda.

# /usr/local/nagios/libexec/check_http -h

No caso do plugin check_http, a opção "-H" define o IP do HTTP server a ser testado:

# /usr/local/nagios/libexec/check_http -H <ip_httpserver>

Com esta linha de comando, a definição do comando dentro de commands.cfg, será:

define command{
command_name check_http
command_line check_http -H $HOSTADDRESS$
}

Na linha acima, a variável $HOSTADDRESS$ será informada pelo Nagios no momento da verificação desse serviço.

O arquivo commands.cfg original já possui muitos comandos predefinidos, por isso não daremos tanta atenção a este arquivo agora.

services.cfg

Definição dos serviços de monitoramento. Utilizando a definição do comando check_http em commands.cfg, podemos ativar o monitoramento de um servidor http, utilizando a seguinte configuração, dentro de services.cfg:

Primeiro, definimos um template (padrão), afim de diminuir o número de linhas nesse arquivo, podendo aplicar esse template aos serviços desejados.

define service{
name local-service
active_checks_enabled 1
passive_checks_enabled 1
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
is_volatile 0
check_period 24x7
max_check_attempts 2
normal_check_interval 5
retry_check_interval 1
contact_groups <nome_do_grupo>
notification_options w,u,c,r
notification_interval 60
notification_period 24x7
register 0
}

Agora, definimos o serviço HTTP a monitorar:

define service{
use local-service # (nome do template)
host_name site
service_description Servidor HTTP
check_command check_http!<ip_http_server>
contact_groups <Grupo de Contato>
}

Repare que na linha "check_command", deverá ser colocado o nome do serviço plugin "check_http", seguido de (!) exclamação e o IP do servidor, que será o valor da variável $HOSTADDRESS$ declarada no arquivo commands.cfg.

Adicione também no arquivo commands.cfg, a definição do plugin NRPE:

define command{
command_name check_nrpe
command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

contacts.cfg

Definição dos contatos para envio de notificações e alertas.

define contact{
contact_name <login>
alias <Nome_Completo>
service_notification_period <Periodos definidos em TIMEPERIODS.CFG>
host_notification_period <Periodos definidos em TIMEPERIODS.CFG>
service_notification_options w,u,c,r #( w=warning / u=unknown / c=critical / r=recoveries / n=none)
host_notification_options d,u,r #( d=down / u=notify / r=recoveries / n=none )
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email email@seudominio.com.br
}

contactgroups.cfg

Definição dos grupos de contatos, facilitando a configuração para envio de notificações e alertas.

define contactgroup{
contactgroup_name <grupo>
alias <nome do grupo>
members <Logins definidos no arquivo contacts.cfg>
}

hosts.cfg

Configuração dos hosts que serão monitorados.

Pode ser definido um host padrão (template) e utilizado para todos os hosts, diminuindo muito o número de linhas no arquivo hosts.cfg.

define host{
name generic-host
event_handler_enabled 1
flap_detection_enabled 1
max_check_attempts 5
notification_interval 20
notification_options d,u,r
notification_period 24x7
notifications_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
register 0 # não deve ser registrado, pois não é um host, apenas um template
}

define host{
use generic-host # nome do template criado acima
address <ip_servidor>
alias <Nome do Servidor>
check_command <comando pre-definido em services.cfg>
host_name <Host_Name_do_servidor>
}

hostgroups.cfg

Definição dos grupos de hosts.

define hostgroup{
hostgroup_name <nome_do_grupo>
alias <Descrição do Grupo>
contact_groups <grupos_que_fazem_parte>
members <hosts_que_fazem_parte>
}

timeperiods.cfg

Declaração dos horários para monitoramento.

define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}


define timeperiod{
timeperiod_name workhours
alias "Normal" Working Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}


define timeperiod{
timeperiod_name nonworkhours
alias Non-Work Hours
sunday 00:00-24:00
monday 00:00-09:00,17:00-24:00
tuesday 00:00-09:00,17:00-24:00
wednesday 00:00-09:00,17:00-24:00
thursday 00:00-09:00,17:00-24:00
friday 00:00-09:00,17:00-24:00
saturday 00:00-24:00
}
Página anterior     Próxima página

Páginas do artigo
   1. Apresentação e motivação
   2. Mãos à obra
   3. Instalação dos plugins e NRPE
   4. Configurando o Nagios
   5. Iniciando pela primeira vez
   6. Configurando o Apache
   7. Onde está a dificuldade?
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Instalação do Cacti baseado em uma distribuição própria - CactiEZ

Biometria: Processamento de imagens capturadas em leitores de impressão digital

Asterisk com PostgreSQL e unixodbc

SuperGRUB - Perdeu a MBR? Recupere-a com este programa

Logrotate, uma importante ferramenta de administração dos logs do sistema

  
Comentários
[1] Comentário enviado por removido em 07/07/2007 - 10:56h

Muito bom, esta favoritado
:D

Att

RaFaBRA

[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.

Não consigo acessar arquivos de configuração.

Você poderia me ajudar?

Att
Augusto

[3] Comentário enviado por cppatricio em 10/07/2007 - 18:04h

Mandou bem hein Gavioli,

Muito bom o artigo.

Parabéns....

[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

Qq coisa, avise !
RGavioli

[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 !!!

[6] Comentário enviado por dani_menezes em 17/07/2007 - 14:58h

opa ... tive problemas para extrair o nrpe ...

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors

qq faltou??

[7] Comentário enviado por dani_menezes em 17/07/2007 - 15:39h

descobri .. eheheh .. tava usando o DAP pra baixar os arquivos .. nao sei pq mas ele corrompia os arquivos. agora ta blz.

[8] Comentário enviado por rgavioli em 17/07/2007 - 15:42h

Olá Daniel.
Provavelmente o arquivo está corrompido... tente baixar direto via WGET no Linux:
# wget http://ufpr.dl.sourceforge.net/sourceforge/nagios/nrpe-2.8.1.tar.gz

Ricardo Gavioli

[9] Comentário enviado por steve_harris em 10/08/2007 - 17:31h

boa tarde, ao instalar o nrpe (./configure) funciona normal, mas qnd faço o make all da o seguinte erro.

steve@ibmserver:/tmp/nagios/nrpe-2.8.1$ sudo make all
make: *** Sem regra para processar o alvo `all'. Pare.

No aguardo de respostas!!!!!!!!!!!!!!!!!!!!!1

[10] Comentário enviado por jmsmaster em 16/08/2007 - 18:37h

Olá pessoal,

A configuração do arquivo hostgroups.cfg não deve conter a linha

contact_groups <grupos_que_fazem_parte>, esta linha deve estar no arquivo hosts.cfg, para cada host configurado.

Quebrei a cabeça para fazer funcionar isso, até encontrar esta solução.

Att.

Josue






[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,

Marcelo Holtz

[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.

Boa sorte.
Ricardo Gavioli

[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!

Marcelo Holtz

[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


Marcelo Holtz

[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.

Abraço

Diramos

[16] Comentário enviado por smurf_o em 03/04/2008 - 19:58h

Valeu pela dica cara, vou testar e ver se esta tudo ok.

Um Abraço

[17] Comentário enviado por luizgalssa em 07/07/2008 - 13:54h

Poxa, excelente artigo.
Desde já informo que já faz parte de minhas páginas Favoritas.
Mantenha sempre esta qualidade.
Abraço.

[18] Comentário enviado por l-x em 26/08/2008 - 16:26h

Cara, pelo post.

Mas estou com um problema esquisito:

qnd eu rodo o ./configure no NRPE ele acusa esse erro:

"checking for SSL... configure: error: Cannot find ssl libraries"

Tentei de várias forma configurar o ssl, mas ele ta redondo. O q posso fazer a respeito?????

[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.

Saudações.

[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.

[21] Comentário enviado por diegoaraujo9 em 05/12/2008 - 10:33h

oi,

dei make install em todos os arquivos e tudo foi compilado corretamente, exceto para o xinetd.d, que apresentou a seguinte mensagem:

impossível criar arquivo comum `/etc/xinetd.d/nrpe': Arquivo ou diretório não encontrado

o que devo fazer?

Obrigado.

[22] Comentário enviado por ashmsx em 14/07/2009 - 11:05h

aqui deu erro na hora do ./configure, rodei o comando abaixo e deu certo flw

root@bond:/home/nagios-1.2# ./configure --prefix=/usr/local/nagios \
--with-nagios-user=nagios \
--with-nagios-grp=nagios \
--with-cgiurl=/nagios/cgi-bin \
--with-htmlurl=/nagios \

[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

Agradeço a ajuda!


[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
#
################################################################################


################################################################################
# HOST DEFINITIONS
#
# SYNTAX:
#
################################################################################

# 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

host_name localhost
alias localhost
address 127.0.0.1
check_command check-host-alive
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,r
contact_groups admins
}

[26] Comentário enviado por fferreira1982 em 22/01/2010 - 13:28h

boa tarde a todos,

Alguem poderia me ajudar?

Acabei e configurar o Nagios em um PC simples para testes e estou com o seguinte problema.

Not Found

The requested URL /nagios was not found on this server.
Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny4 with Suhosin-Patch Server at <meu ip> Port 80

Aguardo contato,
Muito Obrigado
Atenciosamente
Felipe Ferreira


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts