Powered By Blogger

Translate

terça-feira, 29 de maio de 2012

NRPE





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)


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