Avaliação da Ferramenta Nagios
Diego Graciano Damacena
Pós Graduação em Redes e Segurança de Sistemas
Pontifícia Universidade Católica do Paraná
Curitiba, Fevereiro de 2013
1
Introdução
Este artigo o objetivo de demonstrar o uso da ferramenta Nagios. Aplicativo é OpenSource
que essencialmente monitora ativos e serviços de rede. Buscando auxiliar o administrador de
rede no processo de configuração para a utilização desta ferramenta. Alcançar a consciência
imediata de problemas de infraestrutura de TI, assim o tempo de inatividade não prejudicar o
seu negócio.
Nagios oferece monitoramento completo e alertando para os servidores, switches,
aplicações e serviços.
Algumas das características do Nagios são: o monitoramento
de serviços de rede; monitoramento de recursos de servidores e outros recursos; capacidade
de definir hierarquia da rede; notificações imediatas sobre problemas na rede, via e-mail e
pager; capacidade de tomar outras medidas de acordo com o problema na rede; interface web
com mapa da rede em 2D e 3D, relatórios, gráficos e históricos. É versátil, flexível e
verifica constantemente a disponibilidade dos serviços e hosts.
Nesta apresentação trataremos apenas dos aspectos básicos da ferramenta, não
entraremos em maiores detalhes sobre configurações específicas ou aplicações em ambientes.
Todavia, reforçaremos peculiaridades da instalação, com as principais dificuldades
encontradas.
 Descrição do Contexto – Mostrar a necessidade de se usar essa ferramenta para
monitoramento de rede e suas principais funcionalidades.
 Descrição do Projeto – Informações sobre a ferramenta, incluindo descrição, passos da
instalação, configuração e funcionalidade, desenvolvido em ambiente virtual
simulando um real.
 Procedimento de Teste e Avaliação – Abordar as principais configurações testadas e
os principais recursos de monitoramento.
 Conclusão – Resumo das informações importantes em todo o artigo desde, instalação,
configuração, teste e experiências adquiridas.
 Referências – Reúne as fontes utilizadas para o desenvolvimento desse artigo.
2
Descrição do Contexto
O monitoramento de redes é de suma importância para identificar possíveis falhas em um
ambiente. Em mundo corporativo então, exerce um papel fundamental para a administração.
Com esta identificação ou alerta gerado previamente, podemos assegurar que haverá um
trabalho pró-ativo executado pelas equipes de suporte, que buscam controle e desempenho
aceitável.
O Nagios, por sua vez, a quem já o conhece, pode deduzir que é uma ferramenta de
altíssimo nível quando se trata de monitoramento. Ele coleta as informações dos ativos da
rede através do protocolo SNMP que possuem “agentes” configurados para repassar estas
informações ao servidor Nagios. Após esta primeira tratativa o Nagios gera arquivos com a
referência das MIBs previamente configuradas, e começa então a gerar logs dessa
comunicação.
Com assas informações obtidas é possível ter uma visão em tempo real de toda a rede,
antecipando – se a possíveis falhas através de logs gerados, SMS ou e-mails enviados, visando
traçar planos de contingência e auxiliando em projetos de T.I.
Entre diversas ferramentas foi escolhido o Nagios pelas seguintes informações:
- Age prontamente e executa ações de resolução sobre os problemas, notificando quando é
detectado um problema e quando o mesmo é considerado resolvido, reduzindo o tempo de
resposta
em
caso
de
problemas;
- Manutenção preventiva, já que o programa também pode emitir alerta sobre condições
anteriores
à
falha
dos
serviços;
- Monitora toda sua infraestrutura de rede. Capacidade de monitorar vários servidores,
agregando posteriormente numa única interface todos os parâmetros monitorados;
- Aumento da produtividade dos administradores e analistas, visto que monitora os ativos
autonomamente,
permitindo
também
adicionar
novos
plug-ins;
- Integração com plug-ins, que o próprio usuário pode escrever para facilitar e automatizar
ainda mais a monitoração de elementos dentro da rede. Estes plug-ins podem ser
desenvolvidos nas mais diversas linguagens de programação.
- Monitoramento de rede e serviços (SMTP, POP3, HTTP, NNTP, PING, SNMP, etc.);
- Monitoramento dos recursos de clientes (carga de processador uso de disco, etc.);
- Organização simples de plugins que permite aos usuários desenvolverem seus próprios
serviços de checagem;
- Checagem paralela de serviços;
- Habilidade para definir hierarquia de redes de clientes usando clientes pais (parent hosts),
permitindo a detecção e distinção entre clientes que estão desativados e aqueles que estão
inalcançáveis;
- Notificação de contatos quando problemas em serviços e clientes ocorrerem ou forem
resolvidos (via e-mail, pager, ou métodos definidos pelo usuário);
- Habilidade para definir tratadores de eventos (event handlers) que serão executados durante
eventos de serviços ou clientes na tentativa de resolução de problemas;
- Rotatividade automática de arquivos de logs;
- Suporte para implementação de clientes de monitoramento redundantes;
- Interface web para visualização do status atual da rede, histórico de notificações e
problemas, arquivos de log, etc.
3
Descrição do Projeto
O projeto do Nagio foi desenvolvido em um ambiente virtual utilizando o VirtualBox sun,
simulando um ambiente real com possível expansão. O intuito é criar a instalação e a partir
dela expandir para uma aplicabilidade real, em outro ambiente. Para que tudo possa funcionar
perfeitamente, se faz necessário a instalação de alguns programas que serão posteriormente
detalhados.
O Manual do Nagios pode ser baixado do endereço www.nagios.org/docs. O Sistema
Operacional utilizado como base para a elaboração desse guia foi o Ubuntu 11.10 com kernel
linux 3.0.0-30.
3.1 Pré – Requisitos
A única exigência para rodar o Nagios é ter um computador rodando Linux (ou variantes
do UNIX) e um compilador C. Você provavelmente necessitará ter o TCP/IP configurado já que
a maioria das checagens de serviços serão feitas através da rede.
Você não é obrigado a usar os CGIs incluídos com o Nagios. No entanto, se você optar por
usá-los, você precisará dos seguintes programas instalados:
1) Um servidor Web (de preferência Apache);
2) Biblioteca GD (gd library) de Thomas Boutell versão 1.6.3 ou superior (exigida pelas CGIs
statusmap e trends).
3.2 Instalação
3.2.1 Adição do usuário/grupo 'nagios' ao Sistema
#adduser nagios
3.2.2 Download, Descompactação e Instalação do Nagios e dos plugins
#mkdir /home/nagios/tmp

Fazer o download do Nagios e dos plugins (www.nagios.org/download) para o
diretório acima.
#cd /home/nagios/tmp
#ls -a
.
..
nagios-3.4.4.tar
nagios-plugins-1.4.16.tar.gz
 Descompactar os arquivos:
#tar xvfz <nome_do_arquivo_do_Nagios> (ex.: #tar xvfz nagios-3.4.4.tar.gz)
#tar xvfz <nome_do_arquivo_dos_plugins> (ex.: #tar xvfz nagios-plugins-1.4.16.tar.gz)

Entrar no diretório do Nagios criado (ex.: #cd /home/nagios/tmp/ nagios3.4.4).
Rodar o script de configuração do Nagios (Para ver as opções: #./configure -help):
--prefix: diretório de instalação do Nagios;
--with-nagios-user: usuário padrão;
--with-nagios-group: grupo padrão;
--with-htmurl: endereço web de acesso ao Nagios
(padrão: http://<endereço_local>/nagios);

--with-cgiurl: endereço web dos CGIs (padrão: http://<endereço_local>/nagios/cgi-bin).
#./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios -with-htmurl=/nagios --with-cgiurl=/nagios/cgi-bin
-----------------------------------------------------------------------General Options:
------------------------Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagios
Embedded Perl: no
Event Broker: yes
Install ${prefix}: /usr/local/nagios
Lock file: ${prefix}/var/nagios.lock
Init directory: /etc/rc.d/init.d
Host OS: linux-gnu
Web Interface Options:
-----------------------HTML URL: http://localhost/nagios/
CGI URL: http://localhost/nagios/cgi-bin/
Traceroute (used by WAP): /usr/sbin/traceroute
------------------------------------------------------------------------#make all
(Compila os fontes)
#make install
(Instala o programa principal, as CGIs e os arquivos HTML)
#make install-init
(Instala o script de inicialização em /etc/rc.d/init.d)
#make install-commandmode (Instala e configura permissões para o diretório que conterá o
arquivo de comandos externos)
#make install-config
(Instala arquivos de configuração de exemplo [*SAMPLE*] em
/usr/local/nagios/etc)

Ir para o diretório onde foram baixados os plugins: (ex.: #cd
/home/nagios/tmp/nagios-plugins-1.4.16)
OBS.: Para poderem ser usados, alguns dos plugins precisam que se tenha instalados no
computador certos programas e/ou bibliotecas específicos. No caso da inexistência desses
últimos na máquina, os plugins deles dependentes geralmente não são compilados. Destarte,
antes de se iniciar a instalação dos plugins é recomendável a leitura do arquivo
REQUIREMENTS.

Rodar o script de configuração dos plugins (Para ver as opções:
#./configure --help):
# ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-grp=nagios --
with-cgiurl=/nagios/cgi-bin --withhtmurl=/nagios
#make all
#make install
OBS.: Caso se experimente algum problema relativo a acesso, pode ser necessário alterar
algumas permissões.
Diretório de instalação do Nagios (/usr/local/nagios): #chown nagios:nagios
/usr/local/nagios
 Diretório de instalação dos plugins (/usr/local/nagios/libexec): #chown
nagios:nagios /usr/local/nagios/libexec
 Arquivos dos plugins: #chown nagios:nagios /usr/local/nagios/libexec/*

Após a instalação serão criados os diretórios abaixo:





3.2.2.1
/usr/local/nagios
– bin/ ( Arquivos binários do Nagios )
– etc/ ( Diretório de Configuração )
– sbin/ ( CGI's )
– share/ ( Arquivos HTML )
– var/ ( Diretório de logs )
Erro durante a compilação do nagios-plugins
Durante a compilação e instalação dos plugns deparei-me com o seguinte erro.
....
check_http.c: erro:: 312:9 (primeiro uso nessa função) não declarado 'ssl_version'
....
make [2]: *** [check_http.o] Erro 1
make [2]: Saindo do diretório `/ home/nicadmin/nagios-plugins-1.4.16/plugins '
make [1]: *** [all-recursive] Erro 1
make [1]: Saindo do diretório `/ home/nicadmin/nagios-plugins-1.4.16 '
make: *** [all] Erro 2
A solução é instalar o libssl-dev pacote e a reconfiguração.
# apt-get install-dev libssl
# ./configure - with-nagios-user = nagios - with-nagios-group = nagios
# make
# make install
3.2.3 Visão geral dos Diretórios e Arquivos do Nagios
/usr/local/nagios/
bin/ etc/ include/ libexec/ sbin/ share/ var/
/usr/local/nagios/bin/nagios
nagios nagiostats
/usr/local/nagios/etc/
cgi.cfg
nagios.cfg resource.cfg
htpasswd.users objects/
/usr/local/nagios/etc/objects/
commands.cfg localhost.cfg switch.cfg
templates.cfg windows.cfg
/usr/local/nagios/sbin/
avail.cgi
history.cgi
statuswml.cgi config.cgi
summary.cgi
timeperiods.cfg contacts.cfg
status.cgi
tac.cgi
cmd.cgi
outages.cgi
statuswrl.cgi
extinfo.cgi
printer.cfg
notifications.cgi
showlog.cgi
/usr/local/nagios/share/
config.inc.php includes/
media/
side.php contexthelp/
robots.txt
ssi/
docs/
js/
rss-corefeed.php stylesheets/
images/
main.php
rss-newsfeed.php
/usr/local/nagios/var/
archives/ nagios.log retention.dat spool/ nagios.lock
status.dat
objects.cache
index.php
rw/
3.2.4 Configuração da Interface Web – Apache
Localizar o arquivo httpd.conf:
#find / -name httpd.conf (ex.: /etc/httpd/conf/httpd.conf)
# vi /.../httpd.conf (colocar o caminho correto)

 Editar o arquivo, adicionando as linhas abaixo:
#############################################################################
# HTML (http://localhost/nagios) AND CGI APACHE AUTHENTICATION
#############################################################################
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
AllowOverride AuthConfig
Options ExecCGI
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
AllowOverride AuthConfig
Options None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user
</Directory>
#############################################################################
 Criar o arquivo com o usuário e senha de acesso ao Nagios:
#htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
 Reiniciar o Apache:
#/usr/sbin/httpd -k restart
--> Após isso, já deve ser possível visualizar a interface web do Nagios a partir do endereço
http://localhost/nagios no navegador. Entretanto, as CGIs não fornecerão informação alguma
(ainda é necessário configurar corretamente o Nagios).
OBS.: Caso se experimente algum problema relativo a acesso, pode ser necessário alterar as
permissões do arquivo htpasswd.users:
#chown apache:apache /usr/local/nagios/etc/htpasswd.users (verificar o usuário e grupo do
Apache).
Ou
#chown nagios.nagios /usr/local/nagios/etc/htpasswd.users
3.2.5 Configurando o Nagios
Após a instalação do Nagios e seus Plugins, é necessário configurar conforme a rede. Serão
mostrados os principais passos de como é possível e um exemplo de configuração completo.
--> Fazer backup dos arquivos dos arquivos principais:
#mkdir /usr/local/nagios/etc/original
#cp /usr/local/nagios/etc/*.cfg /usr/local/nagios/etc/original
3.2.5.1 NAGIOS.CFG
Configurações padrão do Nagios. Precisamos alterar apenas a definição para busca de
comandos externos e o formato da data:
check_external_commands=0 -> check_external_commands=1
date_format=us -> date_format=euro
3.2.5.2 CGI.CFG
Nele ficam as configurações de utilização de arquivos cgi pelo Nagios. Devem ser configurados
os parâmetros de autorização de utilização da interface Web. Altere os campos para o nome
do usuário cadastros no arquivo /usr/local/nagios/etc/htpasswd.users e assim terão acesso ao
sistema, os parâmetros são:
authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
3.2.5.3 RESOURCE.CGI
Configuração de parâmetros de recursos. Por padrão vem definido qual o caminho dos plugins.
3.2.5.4 CONTACTS.CGI
define contact{
contact_name login
alias Nome do Usuario
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 protected]
}
3.3 Iniciando o Nagios
Após as configurações é necessário iniciar o Nagios. Utilize o comando abaixo para verificar se
está correto os arquivos:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Se tudo estiver certo, inicie o Nagios com o comando:
/etc/init.d/nagios start
4
Procedimento de Teste e Avalição
Visão geral do cenário de testes, Objetos a serem monitorados, o Nagios faz a coleta dos dados
e resulta em um status de como esta os objetos monitorados.
4.1 Monitorando Hosts Linux
É necessária a instalação do addon NRPE para que o Nagios possa executar plugins em
hosts remotos. Caso o NRPE não seja instalado, o Nagios não tem acesso a recursos internos
do sistema como uso de processador, espaço em disco, uso de memória RAM etc. A figura
abaixo demonstra a lógica de funcionamento do NRPE.
O servidor Nagios executa o plugin check_nrpe, que solicita os dados ao addon NRPE
instalado no host remoto. O addon, por sua vez, obtém dados sobre uso de disco, processador
etc e os envia para o servidor. O processo de instalação do NRPE não é tratado neste trabalho,
porém pode ser encontrado no site oficial do Nagios.
/usr/local/nagios/etc/objects/localhost.cfg
define host{
use
host_name
alias
address
}
linux-server
Firewall01
Firewall01
127.0.0.1
define hostgroup{
hostgroup_name linux-servers
alias
Linux Servers
members
Firewall01
}
}
define service{
use
local-service
host_name
Firewall01
service_description
PING
check_command
check_ping!100.0,20%!500.0,60%
}
define service{
use
local-service
host_name
Firewall01
service_description
Root
Partition
check_command
check_local_disk!20%!10%!/
}
define service{
use
local-service
host_name
Firewall01
service_description
Current
Load
check_command
check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
}
define service{
use
local-service
host_name
Firewall01
service_description
Swap Usage
check_command
check_local_swap!20!10
}
define service{
use
local-service
host_name
Firewall01
service_description
Current
Users
check_command
check_local_users!20!50
}
define service{
use
local-service
host_name
Firewall01
service_description
SSH
check_command
check_ssh
notifications_enabled
0
}
define service{
use
local-service
host_name
Firewall01
service_description
Total
Processes
check_command
check_local_procs!250!400!RSZDT
define service{
use
local-service
host_name
Firewall01
service_description
HTTP
check_command
check_http
notifications_enabled
0
}
Abaixo a visualização dos recursos configurados para monitoramento, via interface do Nagios.
4.2 Monitorando Hosts Windows
Utilizamos o agente NSClient++ é necessária. Este pequeno software envia as
informações ao servidor Nagios que as processa através do plugin check_nt. Existem outras
alternativas, porém a documentação oferecida não é clara. A figura abaixo representa o
funcionamento do agente.
O plugin check_nt consulta o agente NSClient++ em busca de informações sobre uso de
Cpu, memória Ram, espaço em disco, processos em execução e serviços. O processo de
instalação do NSClient++ não é tratado neste trabalho, porém pode ser encontrado no site
oficial do Nagios.
/usr/local/nagios/etc/objects/windows.cfg
define host {
use
host_name
alias
address
}
windows-server
winserver
Windows Server
192.168.1.6
define hostgroup{
hostgroup_name windows-servers
alias
Windows Server
}
define service{
use
generic-service
host_name
winserver
service_description
NSClient++
Version
check_command
check_nt!CLIENTVERSION
}
check_command
check_nt!CPULOAD!-l 5,80,90
}
define service{
use
generic-service
host_name
winserver
service_description Memory Usage
check_command
check_nt!MEMUSE!-w 80 -c 90
}
define service{
use
generic-service
host_name
winserver
service_description C:\ Drive Space
check_command
check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}
define service{
use
generic-service
host_name
winserver
service_description Uptime
check_command
check_nt!UPTIME
}
define service{
use
generic-service
host_name
winserver
service_description W3SVC
check_command
check_nt!SERVICESTATE!-d SHOWALL
W3SVC
}
define service{
use
generic-service
host_name
winserver
service_description CPU Load
define service{
use
generic-service
host_name
winserver
service_description Explorer
-l
check_command
check_nt!PROCSTATE!-d
SHOWALL
-l
Explorer.exe
}
Abaixo a visualização dos recursos configurados para monitoramento, via interface do Nagios.
4.3 Outros recursos de Rede
Este recurso não requer a utilização de addons ou agentes no equipamento. O plugin
check_snmp pode utilizar o protocolo ICMP (Internet Control Message Protocol) para testar a
conectividade entre os dispositivos finais e o roteador utilizado na rede de testes, assim como
um endereço externo para a comprovação de acesso à Internet. Caso haja necessidade de
informações sobre status de porta e estatísticas de tráfego como a perda de pacotes, por
exemplo, o equipamento deve suportar a função SNMP, que deve ser ativada e configurada. A
lógica de funcionamento do check_snmp pode ser observada na figura abaixo.
Observa-se que o check_snmp consulta informações da base de dados SNMP contida
no Roteador ou Switch.
/usr/local/nagios/etc/objects/switch.cfg
define host{
use
generic-switch
host_name
linksys-srw224p
alias
Linksys SRW224P Switch
address
192.168.1.253
hostgroups switches
}
define hostgroup{
hostgroup_name switches
alias
Network Switches
}
define service{
use
generic-service
host_name
linksys-srw224p
service_description PING
check_command
check_ping!200.0,20%!600.0,60%
service
normal_check_interval
conditions
retry_check_interval 1
is determined
}
the
5
state
define service{
use
generic-service
host_name
linksys-srw224p
service_description Uptime
check_command
check_snmp!-C
public -o sysUpTime.0
}
define service{
use
host_name
linksys-srw224p
service_description
Port 1 Link
Status
check_command
check_snmp!-C
public -o ifOperStatus.1 -r 1 -m RFC1213MIB
}
define service{
use
generic-service
host_name
linksys-srw224p
service_description
Port 1
Bandwidth Usage
check_command
check_local_mrtgtraf!/var/lib/mrtg/192.16
8.1.253_1.log!AVG!1000000,1000000!5000
000,5000000!10
}
generic-service
Abaixo a visualização dos recursos configurados para monitoramento, via interface do Nagios.
/usr/local/nagios/etc/objects/printer.cfg
define host{
use
generic-printer
host_name
hplj2605dn
alias
HP LaserJet 2605dn
address
192.168.1.30
hostgroups
networkprinters
}
define hostgroup{
hostgroup_name
network-
printers
alias
}
define service{
use
Network Printers
generic-service
host_name
hplj2605dn
service_description
Printer
Status
check_command
check_hpjd!-C public
normal_check_interval 10
retry_check_interval 1
}
define service{
use
generic-service
host_name
hplj2605dn
service_description PING
check_command
check_ping!3000.0,80%!5000.0,100%
normal_check_interval 10
retry_check_interval 1
}
Abaixo a visualização dos recursos configurados para monitoramento, via interface do Nagios.
5
Conclusão
Percebe-se que a ferramenta e bem flexível de possível adaptação para qualquer
ambiente, seja ele, pequeno, médio ou grande, embora um pouco complexa sua configuração.
Todavia, se tornou de suma importância para o ambiente corporativo, e a partir desta
experiência, possibilitou o aprofundamento de seus recursos em busca do melhor
aproveitamento, com uma visão de prever a indisponibilidade de um serviço e poder tratá-lo
da forma antecipada e adequada.
A interface web do Nagios é muito simples, eu diria até que é pobre, mas como esse não é
objetivo do core, foram desenvolvidas interfaces mais robustas e elegantes por terceiros,
algumas open-source e outras comerciais, para suprir esta deficiência. Da mesma forma, as
checagens do Nagios são efetuadas por plugins externos a plataforma e são construídos de
forma aberta de tal maneira que cada usuário ou membro da comunidade pode desenvolver
seus próprios plugins para resolver seus problemas de monitoramento específicos. Diante
dessas facilidades de customização podemos ajustar o Nagios para atender diversos
ambientes, sem falar, na disponibilidade de integração com varias outras ferramentas de
gerenciamento.
6
Referências
http://www.artigonal.com/seguranca-artigos/monitoramento-com-a-ferramenta-nagios1006005.html
http://www.nagios.org
http://www.agiosumsoftwarepratico.blogspot.com.br
http://pt.scribd.com/doc/68766833/Nagios-Passo-a-Passo
http://www.vivaolinux.com.br/artigo/Monitorando-redes-e-servidores-com-Nagios/?pagina=3
http://sourceforge.net/projects/nagios/files/
Download

Diego Graciano Damacena _ PUCPR_TCC_EC