Академический Документы
Профессиональный Документы
Культура Документы
Captulo 10
Implementao de Sistema de
Monitoramento NAGIOS
10.1. Objetivos
1 - Instale o Apache2:
# vim /etc/apache2/apache2.conf
ServerName 192.168.x.x
3 - Reinicie o Apache2:
# /etc/init.d/apache2 restart
http://192.168.200.x
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 156
# vim /etc/php5/apache2/php.ini
; Example lines:
extension=mysql.so
1 - Instale o mysql-server:
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
# adduser nagios
# ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
# 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.
# cd /home/carlao/nagios
# /usr/local/nagios/bin/nagios v /usr/local/nagios/etc/nagios.cfg
# /etc/init.d/nagios start
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
# 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
# cd /usr/local/nagios/etc/objects/
# mv commands.cfg commands.cfg.bkp
# vim commands.cfg
###############################################################################
# Arquivo commands.cfg
#
################################################################################
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
################################################################################
#
# Checagem simples
#
################################################################################
################################################################################
#
# 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$
}
################################################################################
#
# 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
# 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$
}
# mv timeperiods.cfg timeperiods.cfg.bkp
# vim timeperiods.cfg
###############################################################################
#
# Arquivo TIMEPERIODS.cfg
#
###############################################################################
# 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
}
# mv contacts.cfg contacts.cfg.bkp
# vim contacts.cfg
###############################################################################
#
# Arquivo contacts.cfg
#
###############################################################################
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:
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
# vim /etc/xinetd.d/nrpe
...
only_from = 127.0.0.1 192.168.1.0
...
# vim /etc/services
...
nrpe 5666/tcp # NRPE
# /etc/init.d/xinetd restart
# /usr/local/nagios/libexec/check_nrpe H localhost
NRPE v2.12
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
Captulo 10 Implementao de Sistema de Monitoramento NAGIOS - 172
# 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
# cd /usr/local/nagios/etc/
# mkdir servidores switchs printers
# 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
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
Plugins - Ping
Processos
Processador
### 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:
Uptime
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
Apache (HTTP)
BIND
Samba
# cd /usr/local/nagios/etc/servidores/
# vim srv-ruindows.cfg
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
}
notifications_enabled 0
}
# 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
# cd /usr/local/nagios/etc/printers
# vim hp_producao.cfg
###############################################################################
#
# 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
}
# 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
}
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
# cd /usr/local/etc/switchs/
# vim 3Com_4200.cfg
###############################################################################
#
# 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
}
# 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
}
# 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
# vim /usr/local/nagios/etc/nagios.cfg
####################################################################
# 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
#
# vim /usr/local/nagios/etc/hostextinfo.cfg
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
}
# 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