O NRPE é um complemento para Nagios, foi criado para possibilitar o monitoramento de máquinas remotas que rodem Linux ou outras variantes de UNIX, o complemento NRPE é desenhado para permitir que seja executado os plugins do nagios em máquinas Linux/Unix, isto permite que não somente consiga monitorar máquinas Linux/Unix, como também consiga fazer com que a maquina monitorada seja capaz de monitorar outras máquinas na rede, num esquema de checagens indiretas.
Exemplos de monitoramento:
* Disco, Carga de CPU, Memória Ram, Memória SWAP, Processos Zombies, quantidade de processamento utilizado, uptime, quantidade de usuários logados, etc...
Efetuando a Instalação:
Pacotes Necessários:
* build-essential libssl-dev
# aptitude update
# aptitude install build-essential libssl-dev
* Xinetd
# aptitude install xinetd
Faça o download do Source do NRPE no site do Nagios
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz
Criando Regras no Firewall
Certifique-se de que o firewall local na máquina está instalado e que, sendo assim, permitirá acesso ao daemon NRPE para o(s) servidor(es) de monitoramento, e somente para ele(s). Escreva, na ordem abaixo, as regras do iptables na linha de comando. Certifique-se de repetir a segunda regra para todos os sistemas de monitoramento (ex: Nagios) que queira permitir acesso.
# iptables -I INPUT -p tcp -m tcp --dport 5666 -j DROP
# iptables -I INPUT -s <IP_SERVIDOR_NAGIOS> -p tcp -m tcp --dport 5666 -j ACCEPT
NOTA: Perceba que no segundo comando acima, inserimos o IP do servidor o qual irá fazer a requisição. Embora tenhamos definido anteriormente que o daemon NRPE somente aceitaria requisições para os IPs cadastrados na diretiva 'only_from', é interessante garantir isso também no iptables, tanto por questões de segurança quanto performance | =D |. Nas regras acima, somente o servidor Nagios com o IP cadastrado poderá obter os dados do daemon NRPE instalado.
Descompacte e instale o NRPE:
# tar xzf nrpe-2.13.tar.gz
# cd xzf nrpe-2.13
# ls
# ./configure
# make all
# make install
# make install-daemon
# make install-daemon-config
# make install-xinetd
Agora, instale o plugin do NRPE também no servidor Nagios:
# make install-plugin
Edite o arquivo de configuração do NRPE, adicionando logo após o endereço local do host (127.0.0.1), o endereço 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 serviço NRPE ao sistema:
# vim /etc/services
...
nrpe 5666/tcp # NRPE
…
Reinicie o serviço 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.13
Instale o SNMP no servidor Nagios pelo repositório:
# cd..
# apt-get install snmp
# apt-get install snmpd
Teste o funcionamento do plugin no servidor:
# /usr/local/nagios/libexec/check_nrpe –H <ip_do_servidor_>
NRPE v2.13
retornara o resultado acima
Criando uma definição de comando
Será necessário criar uma definição de comando em um de seus arquivos de configuração do Nagios para usar o check_nrpe.
Abra o arquivo de exemplo commands.cfg para edição...
# vi /usr/local/nagios/etc/objects/command.cfg
Adicione a seguinte definição para o arquivo:
...
define command
{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
...
Criando Definições de Serviços e de Hosts
No Nagios podemos definir modelos para serviços, hosts, padrões de monitoramento etc. Vamos criar um novo modelo que identifique sistemas Linux, monitorados por NRPE. Para isso, edite o arquivo templates.cfg:
# vi /usr/local/nagios/etc/objects/templates.cfg
Crie agora uma definição como a escrita abaixo:
...
define host{
name linux-nrpe ; Nome do modelo de host
use generic-host ; Herda valores padrão de...
check_period 24x7
check_interval 5
retry_interval 1
max_check_attempts 10
check_command check-host-alive
notification_period 24x7
notification_interval 30
notification_options d,r
contact_groups admins
register 0 ; NÃO REGISTRAR - ISTO É UM MODELO
}
...
Crie o Arquivo de Configuração
No diretorio /usr/local/nagios/etc/objects#
para isso:
# cd /usr/local/nagios/etc/objects#
# > servidor.cfg
Edite o arquivo: e insira o que quer monitorar - abaixo um exemplo
# vi servidor.cfg
####################
# Servico Monitoramento#
####################
define host{
use linux-nrpe
host_name zeus
alias debian server
address IP_que_ira_monitorar
}
### CPU LOAD ###
define service{
host_name zeus
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
}
salve o arquivo acima :wq
root@zeus:/usr/local/nagios/etc/linux# ls -l
total 8
-rw-r--r-- 1 root nagios 1952 Mai 29 23:31 servidor.cfg
Apos o processo acima acesse o diretório onde se encontra o arquivo de configuração do Nagios
# cd /usr/local/nagios/etc
edite o arquivo nagios.cfg e adicione o arquivo criado acima servidor.cfg como exemplo abaixo, para o nagios monitorar
# vi nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/servidor.cfg
salve o arquivo acima :wq
O comando abaixo testa as configurações do arquivo de configuração
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Checking for circular paths between hosts...
Checking for circular host and service dependencies...
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...
Total Warnings: 13
Total Errors: 0
Apos terminar de testar as configurações acima reinicie o serviço do nagios
# /etc/init.d/nagios restart
Visualização de telas de monitoramento:
Tipos de monitoramento que podem ser usados
# 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$
}
# MRTGTRAF
define command{
command_name check_local_mrtgtraf
command_line $USER1$/check_mrtgtraf -F $ARG1$ -a $ARG2$ -w $ARG3$ -c $ARG4$ -e $ARG5$
}
# 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
}
# 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$
}
# 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{
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 ################
# 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
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$
}
# 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$
}
Monitorando Impressoras de Rede no Nagios (por Rafael Oliveira)
Monitorando Impressoras de Rede no Nagios (por Rafael Oliveira)
# DEFINICAO DA IMPRESSORA
define host{
use generic-printer
host_name hp_producao
alias Impressora HP Producao
address 172.16.130.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{
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
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
}