Nagios com SNMP

Este artigo presume que você já tenha um Linux instalado e configurado, estou usando o CentOS 5.1 mas não é difícil adaptar este artigo para outras distros.

O artigo não vai cobrir aspectos da configuração do Nagios, se você quer começar a entender o Nagios é bom dar uma olhada na documentação disponibilizada em http://nagios.sourceforge.net/docs/3_0/toc.html. De resto, o objetivo é ser uma referência para quem está procurando configurar o Nagios com SNMP e gerar gráficos pelo projeto pnp4nagios.

Vou começar fazendo o download dos componentes, no meu caso eu criei uma pasta chamada Nagios para trabalhar:

# cd ~

# mkdir nagios

# cd nagios

# wget http://ufpr.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.5.tar.gz

# wget http://ufpr.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz

Descompacte todos os sources em /usr/src / :

# tar -zxvf nagios-3.0.5.tar.gz -C /usr/src/

# tar -zxvf nagios-plugins-1.4.13.tar.gz -C /usr/src/

Instale os pacotes necessários para o Nagios:

# yum install httpd gcc glibc glibc-common gd gd-devel

Crie o usuário e grupo para o Nagios:

# /usr/sbin/useradd -m nagios

# passwd nagios

# /usr/sbin/groupadd nagcmd

# /usr/sbin/usermod -a -G nagcmd nagios

# /usr/sbin/usermod -a -G nagcmd apache

Vamos manter todos os arquivos do nagios dentro de /usr/local/nagios, isso facilita a administração e backup, vamos à compilação:

# cd /usr/src/nagios-3.0.5/

# ./configure –with-nagios-user=nagios –with-nagios-group=nagios –with-command-group=nagcmd

# make all && make install && make install-init && make install-config && make install-commandmode && make install-webconf

Compile os plugins:

# cd ../nagios-plugins-1.4.13

# ./configure –with-nagios-user=nagios –with-nagios-group=nagios

# make && make install

Crie o usuário e senha para acessar a interface web do nagios:

# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

# service httpd restart

Configure o script de inicialização do Nagios:

# chkconfig –add nagios

# chkconfig nagios on

Teste se a configuração está correta e inicialize o Nagios:

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

# service nagios start

Agora o Nagios deve estar acessível pelo navegador:

http://ip-do-servidor/nagios/

Vamos baixar e descompactar os plugins SNMP para o Nagios:

# wget http://nagios.manubulon.com/nagios-snmp-plugins.1.1.1.tgz

# tar -zxvf nagios-snmp-plugins.1.1.1.tgz -C /usr/src/

Instale o plugin Net::SNMP para Perl, faremos isto através do cpan:

# perl -MCPAN -e shell

cpan> install Net::SNMP

Agora instalamos os plugins:

# cd /usr/src/nagios_plugins/

# ./install.sh (Aqui ele faz algumas perguntas, normalmente o padrão atende)

Vamos alterar o resource.cfg, ele guarda as variáveis que são utilizadas pelo Nagios nas definições de comando. Normalmente, ele vem somente com a variável $USER1$ setada como /usr/local/nagios/libexec.

Vamos incluir as seguintes variáveis no fim do arquivo:

$USER7$=-C public

$USER8$=public

Substitua public pela sua comunidade snmp

É preciso incluir os comandos abaixo no commands.cfg.

define command{

command_name check_snmp_load_v1

command_line $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ $USER7$ -T $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$

}

define command{

command_name check_snmp_int_v1

command_line $USER1$/check_snmp_int.pl -H $HOSTADDRESS$ $USER7$ -n $ARG1$ $ARG2$

}

define command{

command_name check_snmp_mem_v1

command_line $USER1$/check_snmp_mem.pl -H $HOSTADDRESS$ $USER7$ $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$

}

define command{

command_name check_snmp_storage_v1

command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ $USER7$ -m $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$

}

define command{

command_name check_snmp_hpux_storage_v1

command_line $USER1$/check_snmp_hpux_storage.pl -H $HOSTADDRESS$ $USER7$ -m $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$

}

define command{

command_name check_snmp_hpux_mem_v1

command_line $USER1$/check_snmp_hpux_mem.sh $USER8$ $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $ARG4$

}

define command{

command_name check_snmp_v1

command_line $USER1$/check_snmp -H $HOSTADDRESS$ $USER7$ -o $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$

}

define command{

command_name check_snmp_process_v1

command_line $USER1$/check_snmp_process.pl -H $HOSTADDRESS$ $USER7$ -n $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$

}

define command{

command_name check_win

command_line $USER1$/check_snmp_win.pl -H $HOSTADDRESS$ $USER7$ -n $ARG1$ $ARG2$

}

Não vou dar muitos detalhes dos arquivos de configuração para maquinas Linux e Windows, vou postar aqui só um exemplo para cada um, os detalhes dos comandos você acha em: http://nagios.manubulon.com/

Exemplo para Windows

define host{

use Windows-Servers

host_name win01

alias win01

address 171.16.0.5

}

define service {

use generic-service

host_name win01

service_description L_DISK_USAGE_C:

check_command check_snmp_storage_v1!”^C:”!55!99!-f

}

define service {

use generic-service

host_name win01

service_description L_DISK_USAGE_D:

check_command check_snmp_storage_v1!”^D:”!55!99!-f

}

define service {

use generic-service

host_name win01

service_description L_CPU_LOAD

check_command check_snmp_load_v1!stand!80!90

}

define service {

use generic-service

host_name win01

service_description L_MEMORY_LOAD

check_command check_snmp_storage_v1!”Virtual Memory”!80!90!-rf

}

define service{

use generic-service

host_name win01

service_description N_HTTP

check_command check_tcp!80!

}

Exemplo para Linux

define host{

use Linux-Servers

host_name lin01

alias lin01

address 172.16.0.18

}

define service {

use generic-service

host_name lin01

service_description L_DISK_USAGE_/

check_command check_snmp_storage_v1!/!95!99!-r

}

define service {

use generic-service

host_name lin01

service_description L_CPU_LOAD

check_command check_snmp_load_v1!netsc!90!95

}

define service {

use generic-service

host_name lin01

service_description L_MEMORY_LOAD

check_command check_snmp_mem_v1!-N -w!90,20!95,30

}

define service{

use generic-service

host_name lin01

service_description N_HTTP

check_command check_tcp!80!

}

define service{

use generic-service

host_name lin01

service_description N_SAMBA_DS

check_command check_tcp!445!

}

define service{

use generic-service

host_name lin01

service_description N_SAMBA_NETBIOS

check_command check_tcp!139!

}

Não esqueça que as entradas acima são só exemplos! Leia a documentação em http://nagios.manubulon.com/ pra entender o que você vai fazer.

Isso conclui a parte de configurar o nagios e os plugins, eu já postei como configurar o SNMP no XP (http://luizcarlostomaz.wordpress.com/2008/09/09/snmp-no-windows-xp/) e vou postar como configurar no Linux.

~ por luizcarlostomaz em 19 Novembro, 2008.

2 Respostas to “Nagios com SNMP”

  1. Linux sucks….

    Windows Rules!!!

    rsrsrs

    Abraço vagabundo

  2. Mais uma pergunta, o que é nagios, o que é shell, o que é compilar…??? rsrsrsrsrs

Deixe uma resposta