Vous êtes sur la page 1sur 37

Captulo 9 IPS - Intrusion Prevention System - 154

Captulo 10

Implementao de Sistema de

Monitoramento NAGIOS

10.1. Objetivos

Entender os sistemas de monitoramento

Conhecer as caractersticas do Nagios

Implementar e configurar o Nagios

Conhecer alguns dos plugins existentes


Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 155

10.2. Preparando o ambiente

Como uma grande necessidade das pequenas e grandes corporaes, o


monitoramento dos ativos e servidores vem sido cada vez mais utilizado devido aos inmeros
benefcios que a reao rpida a um problema ou incidente pode trazer. Por esse motivo,
vamos aprender a utilizar uma completa soluo de monitoramento dos servidores e ativos
com base no poderoso Nagios Core.

Primeiro prepararemos o ambiente para receber a instalao do Nagios, porm


necessrio que este j esteja com o LAMP (Linux, Apache, MySql e PHP) em pleno
funcionamento.

1 - Instale o Apache2:

# aptitude install apache2

2 - Edite o arquivo de configurao do apache2 e defina um FQDN:

# vim /etc/apache2/apache2.conf

ServerName 192.168.x.x

3 - Reinicie o Apache2:

# /etc/init.d/apache2 restart

4 Faa um teste acessando a pgina do seu servidor pelo browser:

http://192.168.200.x
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 156

10.2.1. Instalao do PHP5

1 - Instale o PHP5 e alguns mdulos necessrios:

# aptitude install php5


# aptitude install php5-mysql
# aptitude install libapache2-mod-php5

2 - Edite o arquivo php.ini do Apache2 e descomente a seguinte linha para dar


suporte ao MySQL:

# vim /etc/php5/apache2/php.ini
; Example lines:
extension=mysql.so

10.2.2. Instalao e Configurao do MySQL

1 - Instale o mysql-server:

# aptitude install mysql-server

2 - Verifique se o MySQL est rodando e se os sockets esto ativos:

# ps aux | grep mysql


# netstat -nlpt

10.3. Instalao do Nagios

Instale o compilador GCC e mais algumas bibliotecas necessrias como o OpenSSL


Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 157

para a comunicao do NRPE:

# apt-get install build-essential


# apt-get install libgd2-xpm-dev libsnmp-perl libssl-dev openssl

Crie um diretrio para o download dos arquivos do Nagios (lembrando que estamos
no diretrio /opt):

# cd /opt
# mkdir nagios

Faa o download do Nagios e dos plugins (utilizei aqui a ltima verso de cada item):

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz
# wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-
1.4.15.tar.gz
# wget http://nagios.manubulon.com/nagios-snmp-plugins.1.1.1.tgz

10.3.1. Instalando o Nagios


Adicione o usurio nagios ao sistema, utilize a senha que desejar:

# adduser nagios

Descompacte o Nagios Core, compile e faa a instalao deste:

# tar xzf nagios-3.2.3.tar.gz


# cd nagios-3.2.3
# ./configure with-command-group=nagios
# make all
# make install
# make install-config
# make install-commandmode
# make install-init
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 158

# make install-webconf (ao dar erro, executar o comando exibido no erro,


substituindo o httpd por apache2)

Adicione o Nagios a inicializao do sistema:

# ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

10.3.2. Usurio administrador do Nagios


Neste exemplo utilizaremos o usurio catatau. Por padro o Nagios j possui um
usurio administrador que o nagiosadmin, porm para maior segurana e adequao
deste servidor de monitoramento a sua rede existente, recomendado alterar este usurio.

Crie o arquivo de senhas do nagios e adicione o usurio catatau a este:

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

Altere as linhas do arquivo cgi.cfg que contm o usurio nagiosadmin para o


usurio escolhido como administrador do Nagios:

# vim /usr/local/nagios/etc/cgi.cfg

Obs.: Para efetuar a busca dentro do arquivo, aperte ESC e depois digite
/nagiosadmin que ir buscar no arquivo pelo usurio.

Adicione o usurio nagios ao Apache:

# usermod G nagios nagios


# usermod G www-data,nagios www-data
# /etc/init.d/apache2 reload
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 159

10.3.3. Instalando os plugins


Acesse novamente o diretrio criado por voc para salvar os arquivos do Nagios:

# cd /home/carlao/nagios

Descompacte e instale os arquivos do Nagios-Plugins:

# tar xzf nagios-plugins-1.4.15.tar.gz


# cd nagios-plugins-1.4.15
# ./configure
# make
# make install

Altere o dono dos seguintes diretrios para o usurio nagios:

# chown nagios:nagios /usr/local/nagios


# chown R nagios:nagios /usr/local/nagios/libexec

Verifique se no h nenhum erro nas configuraes do Nagios:

# /usr/local/nagios/bin/nagios v /usr/local/nagios/etc/nagios.cfg
# /etc/init.d/nagios start

Obs.: Guarde este comando, pois ele sempre ser til.

Acesse pelo navegador o endereo do servidor Nagios, e verifique se esta tudo ok.:

http://ip_do_servidor/nagios
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 160

10.4. Configurando o monitoramento

Primeiro configuraremos os parmetros simples para o monitoramento do Nagios,


para posteriormente instalarmos os addons de checagens.

Adicione as variveis ao resource.cfg.

O arquivo resource.cfg responsvel por armazenar as configuraes referentes as


variveis que sero utilizados para a checagem do Nagios, estas variveis devem ser
definidos para cada funo especfica pois elas sero utilizadas no arquivo commands.cfg.

# vim /usr/local/nagios/etc/resource.cfg

Para que possamos efetuar as checagens utilizando o SNMP, ser necessrio definir
neste arquivo a comunidade SNMP utilizada em sua rede, utilizaremos aqui por default a
comunidade public, adicione o seguinte contedo ao final deste arquivo:
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 161

$USER7$=-C public
$USER8$=public

Agora configuraremos os arquivos secundrios, onde estaro as informaes que


utilizaremos posteriormente nos arquivos de monitoramento dos hosts. Para tal, acesse o
diretrio objects dentro do diretrio Nagios:

# cd /usr/local/nagios/etc/objects/

J dentro do diretrio objects, faa o backup do arquivo commands.cfg e crie um novo


arquivo com o mesmo nome. O arquivo commands.cfg responsvel por armazenar as
informaes de checagem dos servios, ligando os comandos fornecidos nos arquivos de
checagem dos servidores aos plugins existentes no servidor Nagios:

# mv commands.cfg commands.cfg.bkp
# vim commands.cfg

Exemplo de configurao do arquivo commands.cfg (no utilizar espaos, apenas


tabulao):

###############################################################################
# Arquivo commands.cfg
#
################################################################################

#Notificacao por email


define command{
command_name notify-host-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type:
$NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nEstado: $HOSTSTATE$\nIP: $HOSTADDRESS$\nInfo:
$HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$
Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
}

define command{
command_name notify-service-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type:
$NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress:
$HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 162

Info:\n\n$SERVICEOUTPUT$" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert:


$HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
}

################################################################################
#
# Checagem simples
#
################################################################################

# 'check-host-alive' command definition


define command{
command_name check-host-alive
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
}

################################################################################
#
# Checando os principais servicos LOCAIS
#
################################################################################

# Local HDD
define command{
command_name check_local_disk
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
}

# LOAD
define command{
command_name check_local_load
command_line $USER1$/check_load -w $ARG1$ -c $ARG2$
}

# PROCESS
define command{
command_name check_local_procs
command_line $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
}

# USERS
define command{
command_name check_local_users
command_line $USER1$/check_users -w $ARG1$ -c $ARG2$
}

# SWAP
define command{
command_name check_local_swap
command_line $USER1$/check_swap -w $ARG1$ -c $ARG2$
}
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 163

# MRTGTRAF
define command{
command_name check_local_mrtgtraf
command_line $USER1$/check_mrtgtraf -F $ARG1$ -a $ARG2$ -w $ARG3$ -c $ARG4$ -e $ARG5$
}

################################################################################
#
# Checagem dos servicos
#
################################################################################
# FTP
define command{
command_name check_ftp
command_line $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$
}

# HPJD
define command{
command_name check_hpjd
command_line $USER1$/check_hpjd -H $HOSTADDRESS$ $ARG1$
}

# SNMP
define command{
command_name check_snmp
command_line $USER1$/check_snmp -H $HOSTADDRESS$ $ARG1$
}

# HTTP
define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}

# SSH
define command{
command_name check_ssh
command_line $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
}

# DHCP
define command{
command_name check_dhcp
command_line $USER1$/check_dhcp $ARG1$
}

# PING
define command{
command_name check_ping
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 164

# PING GOOGLE
define command{
command_name check_google
command_line $USER1$/check_ping -H www.google.com.br -w 60,70% -c 80,90%
}

# POP
define command{ command_name check_pop
command_line $USER1$/check_pop -H $HOSTADDRESS$ $ARG1$
}

# IMAP
define command{
command_name check_imap
command_line $USER1$/check_imap -H $HOSTADDRESS$ $ARG1$
}

# SMTP
define command{
command_name check_smtp
command_line $USER1$/check_smtp -H $HOSTADDRESS$ $ARG1$
}

# TCP
define command{
command_name check_tcp
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
}

# UDP
define command{
command_name check_udp
command_line $USER1$/check_udp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
}

# NT
define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$
}

################################################################################
#
# PERFORMANCE DATA COMMANDS
#
################################################################################

# PNP4NAGIOS
define command {
command_name process-service-perfdata
command_line /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl
}
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 165

define command {
command_name process-host-perfdata
command_line /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}

################################################################################
#
# Checagens SNMP
#
################################################################################

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{
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 166

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$
}

######################################## FIM SNMP


######################################

################################################################################
#
# COMANDOS ADICIONAIS
#
################################################################################

# DISCO
define command{
command_name check_disk
command_line $USER1$/check_disk -w limit -c limit -t 5
}
# IMPRESSORA HP
define command{
command_name check_hp_print
command_line $USER1$/check_hp_print -H $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $ARG4$
$ARG5$ $ARG6$
}

# TERMINAL SERVICE
define command{
command_name check_ts
command_line $USER$/check_ts -H $HOSTADDRESS$ -p 3389
}

# PRINTERS
define command{
command_name check_printer
command_line $USER1$/check_printer $HOSTADDRESS$ $USER8$ $ARG1$ $ARG2$ $ARG3$ $ARG4$
}

# WIRETEMP
define command{
command_name check_1-wiretemp
command_line $USER1$/custom/check_1-wiretemp -c $ARG1$ -w $ARG2$ -W$ARG3$ -C$ARG4$ -i
$ARG5$ -o $ARG6$
}

# NRPE
define command{
command_name check_nrpe
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 167

command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$


}

# OPENVPN
define command{
command_name check_openvpn
command_line /usr/lib/nagios/plugins/check_openvpn -t $ARG1$ -p $ARG2$ -n $ARG3$
}

# SQUID
define command{
command_name check_squid
command_line $USER1$/check_squid.pl -u http://www.google.com.br -p $HOSTADDRESS$ -l
8080 -o usuario -m senha -e 200
}

# SAMBA
define command{
command_name check_samba
command_line $USER1$/check_samba -L $HOSTADDRESS$
}

# WINTEMP
define command{
command_name check_snmp_wintemp
command_line $USER1$/check_snmp_wintemp -L $HOSTADDRESS$
}

# 3COM
define command{
command_name check_3com
command_line $USER1$/check_3com.pl -H $HOSTADDRESS$ -C $ARG1$ -u $ARG2$
}

# SWITCH UPTIME
define command {
command_name check_switch_uptime
command_line $USER1$/check_switch_uptime.pl -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c
$ARG3$
}

# MEMORIA
define command {
command_name check_mem
command_line $USER1$/check_mem -w $ARG1$ -c $ARG2$
}

# MRTG
define command {
command_name check_mrtgtraf
command_line $USER1$/check_mrtgtraf -F $ARG1$ -a $ARG2$ -w $ARG3$ -c $ARG4$ -e $ARG5$
}
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 168

# NAGIOSGRAPHER
define command{
command_name process-service-perfdata-file
command_line mv /usr/local/nagios/var/service-perfdata /usr/local/nagios/var/service-perfdata.$TIMET$
}

Ainda no diretrio objects, faa o backup do arquivo timeperiods.cfg e crie um novo


arquivo com o mesmo nome. O arquivo timeperiods.cfg responsvel por armazenar as
informaes relativas as perodos de tempos utilizados na checagem, os perodos de tempos
setados aqui, sero utilizados na configurao de cada servio nos arquivos de checagem dos
servidores:

# mv timeperiods.cfg timeperiods.cfg.bkp
# vim timeperiods.cfg

Exemplo de configurao do arquivo timeperiods.cfg:

###############################################################################
#
# Arquivo TIMEPERIODS.cfg
#
###############################################################################

# TEMPO INTEGRAL 24x7


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
}

# HORARIO DE TRABALHO TOTAL


define timeperiod{
timeperiod_name workhours
alias Normal Work Hour
monday 09:00-21:00
tuesday 09:00-21:00
wednesday 09:00-21:00
thursday 09:00-21:00
friday 09:00-21:00
}
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 169

# HORARIO COMERCIAL
define timeperiod{
timeperiod_name comercial
alias Horario Comercial
monday 08:00-17:40
tuesday 08:00-17:40
wednesday 08:00-17:40
thursday 08:00-17:40
friday 08:00-17:40
}

# NONE
define timeperiod{
timeperiod_name none
alias No Time Is A Good Time
}

Faa o backup tambm do arquivo contacts.cfg, e crie um arquivo em branco com o


mesmo nome. Este arquivo responsvel por armazenar as informaes dos grupos e
contatos que recebero os e-mails de alertas do Nagios. Com isso possvel que somente um
determinado grupo de usurios do Nagios receba por exemplo notificaes de que servios
crticos ou servidores saram do ar, assim dimensionando os alertas para cada camada do
respectivo departamento ou filial:

# mv contacts.cfg contacts.cfg.bkp
# vim contacts.cfg

Exemplo de configurao do arquivo contacts.cfg:

###############################################################################
#
# Arquivo contacts.cfg
#
###############################################################################

# CONTATOS define contact{ contact_name nagios # Nome do usuario


use generic-contact
alias Nagios Admin
email suporte@dominio.com.br # Email do usurio que recebera as notoficacoes
}
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 170

# GRUPOS DE CONTATOS define contactgroup{


contactgroup_name admins
alias Nagios Administrators
members nagios
}

10.5. Instalando o NRPE

O NRPE (Nagios Remote Plugin Execute) ser responsvel pelas checagens dos
nossos sistemas Unix, para tal necessrio instalar este no servidor a ser monitorado e no
servidor Nagios.

Instale o Xinetd:

# apt-get install xinetd

Faa o download do source do NRPE (na mquina a ser monitorada):

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz

Descompacte e instale o NRPE:

# apt-get install build-essential


# apt-get install libgd2-xpm-dev libsnmp-perl libssl-dev openssl
#adduser nagios
# tar xzf nrpe-2.12.tar.gz
# cd xzf nrpe-2.12
# ./configure
# make all
# make install
# make install-daemon
# make install-daemon-config
# make install-xinetd
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 171

Edite o arquivo de configurao do NRPE, adicionando logo aps o endereo local do


host (127.0.0.1), o endereo ip do servidor Nagios ou a range da rede onde esta o servidor
Nagios:

# vim /etc/xinetd.d/nrpe
...
only_from = 127.0.0.1 192.168.1.0
...

Adicione a porta do servio NRPE ao sistema:

# vim /etc/services
...
nrpe 5666/tcp # NRPE

Reinicie o servio do Xinetd:

# /etc/init.d/xinetd restart

Teste o funcionamento do NRPE:

# /usr/local/nagios/libexec/check_nrpe H localhost

O retorno deve ser:

NRPE v2.12

Agora, instale o plugin do NRPE tambm no servidor Nagios. Faa o download do


source do NRPE:

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 172

Descompacte e instale o NRPE:

# tar xzf nrpe-2.12.tar.gz


# cd xzf nrpe-2.12
# ./configure
# make all
# make install-plugin

Instale o SNMP no servidor Nagios:

# cd..
# apt-get install snmp
# apt-get install snmpd
# apt-get install librrds-perl rrdtool librrd-dev
# wget http://downloads.sourceforge.net/net-snmp/net-snmp-5.6.1.tar.gz
# tar xzf net-snmp-5.6.1.tar.gz
# cd net-snmp-5.6.1
# apt-get install libperl-dev
# ./configure
# make
# make install
# tar xzf nagios-snmp-plugins.1.1.1.tgz C /usr/src/
# cd /usr/src/nagios_plugins
# perl -MCPAN -e 'install Net::SNMP'
# ./install.sh

Teste o funcionamento do plugin no servidor:

# /usr/local/nagios/libexec/check_nrpe H <ip_do_servidor_Linux> NRPE v2.12


Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 173

10.6. Adicionando servidores Linux ao Nagios

Para melhor organizao, crie alguns diretrios dentro do diretrio


/usr/local/nagios/etc, onde sero armazenados os arquivos de configuraes dos servidores e
ativos monitorados, neste caso monitoraremos nossos servidores, switchs e impressoras de
rede:

# cd /usr/local/nagios/etc/
# mkdir servidores switchs printers

Acesse o diretrio servidores que voc havia criado:

# cd /usr/local/nagios/etc/servidores

Agora, crie um arquivo com o nome do servidor a ser monitorado, como exemplo
utilizaremos o servidor srv-linux:

# vim srv-linux.cfg

Vou descrever algumas definies que podem ser utilizadas no arquivo de


monitoramento de um servidor Linux, tentarei explicar ao mximo possvel cada linha.

A primeira configurao a ser adicionada ao arquivo de monitoramento do servidor


a Definio do Host:

### Definicoes do Host ###


define host{
use generic-host
host_name srv-linux # Nome do servidor
alias Servidor Linux # Nome que aparecera na interface web do Nagios
address 192.168.3.40 # Endereco ip do servidor a ser monitorado
parents 3Com_4200,srv-proxy # Switchs ou pontos que este servidor estar interligado
diretamente
check_command check-host-alive # Definido no commands.cfg este checa o ping do servidor
max_check_attempts 2 # Numero de checagens necessarias para definir o real estado do
servio
check_interval 1 # Checagem do servio mdia de 5 minutos em condies
normais
notification_interval 1 # Tempo de re-notificacao sobre os problemas de um servico em
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 174

minutos
notification_period 24x7 # Variavel definida no arquivo timeperiods.cfg
notification_options d,u,r # d = Down, u = Unreachable e r = Recovered
contact_groups admins # Grupo de contatos que receberam notificacoes para este
servidor
}

Definio do Grupo

No arquivo de configurao do servidor, deve ser informado a que grupo este


pertencer, esta configurao efetuada em apenas um dos arquivos de configurao dos
servidores pertencentes a este grupo, sendo que nesta configurao sero adicionados todos
os nomes dos servidores pertencentes a este grupo, como no exemplo a seguir:

### Grupo ###


define hostgroup{
hostgroup_name linux-servers # Nome do grupo sem espacos
alias Servidores Linux # Nome visivel do grupo que aparecera na interface web do Nagios
members srv-linux,srv-linux_2 # Nome dos servidores pertencentes a este grupo
}

Plugins - Ping

recomendado efetuar uma segunda secagem do ping do servidor, alm da efetuada


pelo check-host-alive como vemos a seguir (esta ser utilizada para a gerao de grficos
pelo pnp4nagios):

### PING ###


define service{
host_name srv-linux # O nome do ativo a ser monitorado
service_description PING # Nome do servio que aparecer na interface web do Nagios
check_command check_ping!5000.0,80%!8000.0,100% # Comando que foi configurado
no arquivo commands.cfg
max_check_attempts 2 # Numero de checagens necessrias para definir o real estado do servio
normal_check_interval 1 # Tempo em minutos entre as checagens ao servio
retry_check_interval 1 # Tempo de checagem do servio se este estiver em WARNING ou
CRITICAL
check_period 24x7 # Este o perodo de checagem do servio, este perodo deve estar
definido no arquivo timeperiods.cfg como uma varivel
notification_interval 30 # Este o perodo de checagem do servio, este perodo deve estar
definido no arquivo timeperiods.cfg como uma varivel
notification_period 24x7 # Este o perodo de checagem do servio, este perodo deve estar
definido no arquivo timeperiods.cfg como uma varivel
notification_options w,c,r # W = Warning, C = Critical, R = Recovered e u=UNKDOWN
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 175

contact_groups admins # O grupo de contatos que receber as notificaes deste servio,


este definido no arquivo contacts.cfg
}

Processos

Checa a quantidade de processos que esto rodando no servidor:

### Servicos ###


define service{
host_name srv-linux
service_description Total de Processos
check_command check_nrpe!check_total_procs
max_check_attempts 2
normal_check_interval 1
retry_check_interval 10
check_period 24x7
notifications_enabled 0 # Desabilita a notificao do servio por email
}

Processador

Checa a quantidade de processador utilizada pelo servidor em %:

### CPU LOAD ###


define service{
host_name srv-linux
service_description CPU Load
check_command check_nrpe!check_load
max_check_attempts 2
normal_check_interval 1
retry_check_interval 1
check_period 24x7
notification_interval 30
notification_period 24x7
notification_options w,c,r
contact_groups admins
}

Espao em DISCO (HD)

Checa o espao total do disco e o espao disponvel deste:


Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 176

### HD ###
define service{
host_name srv-linux
service_description HD
check_command check_nrpe!check_hda1
max_check_attempts 2
normal_check_interval 1
retry_check_interval 1
check_period 24x7
notification_interval 30
notification_period 24x7
notification_options w,c,r
contact_groups admins
}

Memria RAM

Checa a quantidade de memria RAM utilizada pelo sistema remoto, ele tambm
checa a SWAP do sistema:

### Memoria ###


define service{
host_name srv-linux
service_description Memoria
check_command check_nrpe!check_mem
max_check_attempts 2
normal_check_interval 1
retry_check_interval 1
check_period 24x7
notification_interval 30
notification_period 24x7
notification_options w,c,r
contact_groups admins
}

Uptime

Checa o tempo que o servidor esta em funcionamento desde a sua ultima


reinicializao:

### UPTime ###


define service{
host_name srv-linux
service_description UPTime
check_command check_nrpe!check_uptime
max_check_attempts 2
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 177

normal_check_interval 1
retry_check_interval 1
check_period 24x7
notification_interval 30
notification_period 24x7
notification_options w,c,r
contact_groups admins
}

SSH

Checa se o servio de SSH esta rodando no servidor:

### SSH ###


define service{
host_name srv-linux
service_description SSH
check_command check_ssh! -t 50
max_check_attempts 2
normal_check_interval 1
retry_check_interval 1
check_period 24x7
notification_interval 30
notification_period 24x7
notification_options w,c,r
contact_groups admins
}

Apache (HTTP)

Checa se o servio http do Apache esta rodando:

### HTTP ###


define service{
host_name srv-linux
service_description Apache
check_command check_http
max_check_attempts 2
normal_check_interval 1
retry_check_interval 1
check_period 24x7
notification_interval 30
notification_period 24x7
notification_options w,c,r
contact_groups admins
}
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 178

BIND

Checa se o servio de DNS Bind esta rodando no servidor:

### BIND ###


define service{
host_name srv-linux
service_description DNS Bind
check_command check_nrpe!check_bind
max_check_attempts 2
normal_check_interval 1
retry_check_interval 1
check_period 24x7
notification_interval 30
notification_period 24x7
notification_options w,c,r
contact_groups admins
}

Samba

Checa se o servio do Samba esta rodando no servidor:

### SAMBA ###


define service{
host_name srv-linux
service_description Samba Service
check_command check_samba
max_check_attempts 2
normal_check_interval 1
retry_check_interval 1
check_period 24x7
notification_interval 30
notification_period 24x7
notification_options w,c,r
contact_groups admins
}

10.7. Adicionando servidores Windows ao Nagios


Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 179

Acesse o diretrio servidores do Nagios:

# cd /usr/local/nagios/etc/servidores/

Crie um arquivo com o nome do servidor a ser monitorado, neste exemplo


utilizaremos o servidor srv-ruindows:

# vim srv-ruindows.cfg

As informaes de checagem so basicamente as mesmas do arquivo de checagem


Linux, altere somente os plugins utilizados para fazer esta e tambm o fato deste no utilizar
o NRPE para a checagem, e sim o NSCLIENT++. Segue um exemplo de arquivo de
checagem Windows:

### Definicoes do Host ###


define host{
use generic-host
host_name srv-ruindows
alias Servidor Ruindows
address 192.168.3.42
parents 3Com_4200
check_command check-host-alive
max_check_attempts 2
check_interval 1
notification_interval 1
notification_period 24x7
notification_options d,u,r
contact_groups admins
}

### PING ###


define service{
host_name srv-ruindows
service_description PING
check_command check_ping!5000.0,80%!8000.0,100%
max_check_attempts 2
normal_check_interval 1
retry_check_interval 1
check_period 24x7
notification_interval 30
notification_period 24x7
notification_options w,c,r
contact_groups admins
}
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 180

### Versao do NSCLIENT ###


define service{
use generic-service
host_name srv-ruindows
service_description Versao do NSClient
check_command check_nt!CLIENTVERSION
max_check_attempts 2
normal_check_interval 1
retry_check_interval 10
check_period 24x7
notification_interval 120
notification_period 24x7
notification_options w,c,r
contact_groups admins
}

### UPTIME ###


define service {
use generic-service
host_name srv-ruindows
service_description Uptime
check_command check_nt!UPTIME
max_check_attempts 2
normal_check_interval 1
retry_check_interval 10
check_period 24x7
notification_interval 120
notification_period 24x7
notification_options w,c,r
contact_groups admins
}

### MEMORIA RAM ###


define service {
use generic-service
host_name srv-ruindows
service_description Memoria RAM
check_command check_nt!MEMUSE! -w 80 -c 90
max_check_attempts 2
normal_check_interval 1
retry_check_interval 10
check_period 24x7
notification_interval 120
notification_period 24x7
notification_options w,c,r
contact_groups admins
}

### DISCO C: ###


define service {
use generic-service
host_name srv-ruindows
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 181

service_description Disco C:
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
max_check_attempts 2
normal_check_interval 1
retry_check_interval 10
check_period 24x7
notification_interval 120
notification_period 24x7
notification_options w,c,r
contact_groups admins
}

### DISCO D: ###


define service {
use generic-service
host_name srv-ruindows
service_description Disco D:
check_command check_nt!USEDDISKSPACE!-l d -w 80 -c 90
max_check_attempts 2
normal_check_interval 1
retry_check_interval 10
check_period 24x7
notification_interval 120
notification_period 24x7
notification_options w,c,r
contact_groups admins
}

### PROCESSADOR ###


define service {
use generic-service
host_name srv-ruindows
service_description CPU Load
check_command check_nt!CPULOAD!-l 5,80,90 -w 80 -c 90
max_check_attempts 2
normal_check_interval 1
retry_check_interval 10
check_period 24x7
notification_interval 120
notification_period 24x7
notification_options w,c,r
contact_groups admins
}

### PROCESSO ###


define service {
use generic-service
host_name pabx
service_description Explorer
check_command check_nt!PROCSTATE!-l explorer.exe
normal_check_interval 10
retry_check_interval 10
max_check_attempts 2
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 182

notifications_enabled 0
}

10.8. Adicionando impressoras de rede ao Nagios

Para o monitoramento de impressoras pelo Nagios, utilizaremos o plugin


check_printer, assim, faa o download deste arquivo e de permisso de execuo para ele:

# wget http://www.ciphron.de/gfx/pool/check_printer
# mv check_printer /usr/local/nagios/libexec/check_printer
# chmod +x /usr/local/nagios/libexec/check_printer

Feito isso, faa os testes com a impressora a ser monitorada para saber que opes
de monitoramento esta possibilitar. Acesse o diretrio printers, e execute:

# ./check_printer

Este comando trar todas as possiblidades de o script possui de monitoramento,


assim teste cada um dos comandos na impressora escolhida para descobrir quais iro ou no
funcionar nesta, a sintaxe bsica do comando :

# ./check_printer <ip_da_impressora> <comunidade_snmp> <comando>


<definio>

Para checar por exemplo o contador de pginas de uma impressora, execute:

# ./check_printer 192.168.3.100 public counter 1

Realizado os testes, entre no diretrio printers criado anteriormente e crie um


arquivo com o nome da impressora a ser monitorada, neste exemplo utilizaremos a
impressora hp_producao:
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 183

# cd /usr/local/nagios/etc/printers
# vim hp_producao.cfg

Com base nos testes realizados anteriormente com o plugin, adicione os


monitoramentos validos a este arquivo de acordo com cada impressora, como no exemplo a
seguir:

###############################################################################
#
# Arquivo de monitoramento de IMPRESSORA
#
###############################################################################
# DEFINICAO DA IMPRESSORA
define host{
use generic-printer
host_name hp_producao
alias Impressora HP Producao
address 192.168.3.100
parents 3Com_4200
check_interval 1
retry_check_interval 10
check_period workhours
notification_interval 120
notification_period workhours
notification_options d,u,r
contact_groups admins
hostgroups network-printers
}

# CHECAGEM DOS SERVICOS


#
# PING
define service{
use generic-service
host_name hp_producao
service_description PING
check_command check_ping!3000.0,80%!5000.0,100%
normal_check_interval 1
retry_check_interval 10
max_check_attempts 2
notification_interval 120
notification_options c,r
contact_groups admins
notification_period workhours
}

# FOLHAS IMPRESSAS
define service{
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 184

use generic-service
host_name hp_producao
service_description Folhas Impressas
check_command check_printer!counter 1
normal_check_interval 1
retry_check_interval 10
max_check_attempts 2
notifications_enabled 0
}

# Parts Status
define service{
use generic-service
host_name hp_producao
service_description Parts Status
check_command check_printer!parts 1
normal_check_interval 1
retry_check_interval 10
max_check_attempts 2
notifications_enabled 0
}

# Port Status
define service{
use generic-service
host_name hp_producao
service_description Port Status
check_command check_printer!parts 2
normal_check_interval 1
retry_check_interval 10
max_check_attempts 2
notifications_enabled 0
}

# Toners Status
## Cyano
define service{
use generic-service
host_name hp_producao
service_description Toner Cyano
check_command check_printer!toner/ink 1!0.5,0.8
normal_check_interval 1
retry_check_interval 10
max_check_attempts 2
notifications_enabled 0
}

## Magenta
define service{
use generic-service
host_name hp_producao
service_description Toner Magenta
check_command check_printer!toner/ink 2!0.5,0.8
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 185

normal_check_interval 1
retry_check_interval 10
max_check_attempts 2
notifications_enabled 0
}

## Amarelo
define service{
use generic-service
host_name hp_producao
service_description Toner Amarelo
check_command check_printer!toner/ink 3!0.5,0.8
normal_check_interval 1
retry_check_interval 10
max_check_attempts 2
notifications_enabled 0
}

## Preto
define service{
use generic-service
host_name hp_producao
service_description Toner Preto
check_command check_printer!toner/ink 4!0.5,0.8
normal_check_interval 1
retry_check_interval 10
max_check_attempts 2
notifications_enabled 0
}

# Reservatorio de Residuos
define service{
use generic-service
host_name hp_producao
service_description Reservatorio de Residuos
check_command check_printer!toner/ink 5!0.5,0.8
normal_check_interval 1
retry_check_interval 10
max_check_attempts 2
notifications_enabled 0
}

10.9. Adicionando ativos de rede ao Nagios

O Nagios tambm possui dezenas de plugins (no por padro) para o monitoramento
de ativos de rede, como switchs, roteadores e afins. Destes podemos extrair informaes de
portas, processamento, tempo ativo, ips ativos, dentre outras informaes, porm isto
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 186

depender do gerenciamento que cada ativo possibilita.

Acesse o diretrio switchs criado anteriormente:

# cd /usr/local/etc/switchs/

Crie neste diretrio o arquivo correspondente ao ativo a ser monitorado, no exemplo


utilizaremos a switch 3Com_4200:

# vim 3Com_4200.cfg

Adicione a este arquivo as checagens necessrias, como no exemplo a seguir:

###############################################################################
#
# Arquivo de monitoramento de SWITCH
#
###############################################################################

# DEFINICOES DA SWITCH
define host{
use generic-switch
host_name 3Com_4200
alias Switch 3Com 4200 50 portas
address 192.168.3.200
parents 3Com_4200
max_check_attempts 2
check_interval 10
retry_check_interval 10
check_period workhours
notification_interval 60
notification_period workhours
notification_options d,u,r
contact_groups admins
hostgroups switches
}

###############################################################################
# DEFINICOES DO GRUPO
###############################################################################
# A definio do grupo de Switchs funciona da seguinte forma, este grupo adicionado
# a um dos arquivos de monitoramento, e nos outros arquivos adicionado a linha
# hostgroups na definio do host como esta acima, seguido do nome do grupo definido aqui

define hostgroup{
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 187

hostgroup_name switches
alias Network Switches
}

# CHECAGEM DOS SERVICOS


#
# PING
define service{
use generic-service
host_name 3Com_4200
service_description PING
check_command check_ping!200.0,20%!600.0,60%
max_check_attempts 2
normal_check_interval 10
retry_check_interval 10
check_period workhours
notification_interval 120
notification_period workhours
notification_options w,c,r
contact_groups admins
}

# UPTIME
define service {
use generic-service
host_name 3Com_4200
service_description Uptime
check_command check_switch_uptime!public!80!90
max_check_attempts 2
normal_check_interval 10
retry_check_interval 10
check_period workhours
notification_interval 120
notification_period workhours
notification_options w,c,r
contact_groups admins
}

No exemplo acima utilizamos o plugin check_switch_uptime, faa o download do


script e execute os mesmos passos do plugin check_printer, copie este para o diretrio
libexec e d permisso de execuo para o arquivo do plugin:

# wget https://www.monitoringexchange.org/attachment/download/Check-
Plugins/Hardware/Network/Switch-%2526-Router/Uptime-of-router-or-
switch/check_uptime.pl
# mv check_uptime.pl /usr/local/nagios/libexec/check_switch_uptime.pl
# chmod +x /usr/local/nagios/libexec/check_switch_uptime.pl
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 188

10.10. Ativando o monitoramento

Aps criar os arquivos de monitoramento dos hosts, adicione estes arquivos ao


arquivo nagios.cfg para que o Nagios consiga efetuar a leitura destes arquivos:

# vim /usr/local/nagios/etc/nagios.cfg

Adicione as seguintes linhas a este arquivo, logo aps a linha log_file:

####################################################################
# SERVIDORES #
####################################################################
#
cfg_file=/usr/local/nagios/etc/servidores/srv-linux.cfg
cfg_file=/usr/local/nagios/etc/servidores/srv-ruindows.cfg #
####################################################################
#SERVIDORES SWITCHS #
####################################################################
#
cfg_file=/usr/local/nagios/etc/switchs/3Com_4200.cfg
#
####################################################################
# IMPRESSORAS #
####################################################################
#
cfg_file=/usr/local/nagios/etc/printers/hp_producao.cfg
#

Agora, adicione os hosts monitorados ao arquivo hostextinfo.cfg, este arquivo ser


responsvel pelos cones exibidos na interface web do Nagios, assim como as coordenadas
definidas na Status Map e 3D Map:

# vim /usr/local/nagios/etc/hostextinfo.cfg

Adicione os hosts a este arquivo:


Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 189

define hostextinfo{
host_name srv-linux # Nome do host
notes_url http://192.168.3.40:1000 # Endereco Webmin do host
icon_image ubuntu.png # Imagem utilizada nas propriedades do ativo
icon_image_alt Ubuntu # Texto exibido ao passar o mouse em cima do icone do ativo
vrml_image ubuntu.png & # Imagem utilizada no statusmap
statusmap_image ubuntu.gd2 & # Imagem tambm utilizada no statusmap, porm comprimida para
reduzir o consumo de CPU do servidor
2d_coords 500,500 # Coordenadas geogrficas para a alocao dos hosts no StatusMap
3d_coords 300.0,50.0,75.0 & # Coordenadas 3D para a alocao dos hosts no 3D Map
}

define hostextinfo{
host_name srv-ruindows
#notes_url
# Windows no possui interface web
icon_image vista.png
icon_image_alt Windows_Server_2008
vrml_image vista.png
statusmap_image vista.gd2
2d_coords 100,400
3d_coords 200.0,50.0,75.0
}

define hostextinfo{
host_name 3Com_4200
notes_url http://192.168.3.200
icon_image r switch.png
icon_image_alt 3Com_4200
vrml_image switch.png
statusmap_image switch.gd2
2d_coords 400,700
3d_coords 200.0,50.0,75.0
}

define hostextinfo{
host_name hp_producao
notes_url http://192.168.3.100
icon_image r printer.png
icon_image_alt HP_Producao
vrml_image printer.png
statusmap_image printer.gd2
2d_coords 300,700
3d_coords 200.0,50.0,75.0
}

Os cones utilizados pelo hostextinfo ficam armazenados em


/usr/local/nagios/share/images/logos/, para o exemplo acima voc pode utilizar o excelente
pack de cones fnagios, para tal faa o download do pack e extraia este para o diretrio
logos:
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 190

# wget http://www.intec.uni.cc/bin/fnagios/fnagios.tar.gz
# tar xvf fnagios.tar.gz
# cd fnagios
# mv equipment/* /usr/local/nagios/share/images/logos
# mv other/* /usr/local/nagios/share/images/logos
# mv vendors/* /usr/local/nagios/share/images/logos