Monitoramento de Servidores · 6 min read · Oct 18, 2025

Monitoramento de Servidores Com Icinga No Debian Squeeze - Página 3

4 Adicionando Um Servidor Remoto (server2) Ao Icinga

Monitorar o localhost é bom, mas, claro, seria ainda melhor se pudéssemos monitorar todos os nossos servidores em um só lugar. Isso é possível com o Icinga, e este capítulo descreve como podemos adicionar nosso segundo servidor Debian Squeeze (server2.example.com) à configuração.

Para fazer isso, precisamos instalar o servidor Nagios NRPE (Nagios Remote Plugin Executor) no server2 e o plugin Nagios NRPE no server1. O servidor NRPE irá escutar no server2; o server1 irá se conectar a ele usando o plugin NRPE e passar comandos que o servidor NRPE irá executar no server2; ele retornará os resultados ao server1.

Primeiro, instalamos o pacote nagios-nrpe-plugin no server1:

server1:

apt-get install nagios-nrpe-plugin

Senha de administração da web do Nagios: <– nagiosadmin_password
Confirmação da senha: <– nagiosadmin_password

Agora vamos para o server2:

server2:

Instale o pacote nagios-nrpe-server:

apt-get install nagios-nrpe-server

Nome do Grupo de Trabalho/Domínio: <– WORKGROUP

Agora abra /etc/nagios/nrpe.cfg:

vi /etc/nagios/nrpe.cfg

Devemos configurar o servidor NRPE para permitir que o server1 (IP: 192.168.0.100) se conecte, portanto, adicionamos 192.168.0.100 à linha allowed_hosts:

| [...] # ENDEREÇOS DE HOST PERMITIDOS # Esta é uma lista opcional de endereços IP ou nomes de host # que estão autorizados a se comunicar com o daemon NRPE. # # Nota: O daemon apenas faz uma verificação rudimentar do IP do cliente. # Eu recomendaria fortemente adicionar entradas no seu /etc/hosts.allow # para permitir que apenas o host especificado se conecte à porta # na qual você está executando este daemon. # # NOTA: Esta opção é ignorada se o NRPE estiver sendo executado sob inetd ou xinetd allowed_hosts=127.0.0.1,192.168.0.100 [...] |

(Se você não fizer isso, você receberá o seguinte erro quando executar

/usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101

no server1:

root@server1:/etc/nagios-plugins/config# /usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101  
CHECK_NRPE: Erro - Não foi possível completar o handshake SSL.  
root@server1:/etc/nagios-plugins/config#

)

Além disso, o server1 precisa ser autorizado a passar argumentos de linha de comando para o servidor NRPE, então ainda no mesmo arquivo, definimos dont_blame_nrpe como 1:

| [...] # PROCESSAMENTO DE ARGUMENTOS DE COMANDO # Esta opção determina se o daemon NRPE permitirá que os clientes # especifiquem argumentos para comandos que são executados. Esta opção só funciona # se o daemon foi configurado com a opção do script de configuração --enable-command-args. # # * ATIVAR ESTA OPÇÃO É UM RISCO DE SEGURANÇA! * # Leia o arquivo SECURITY para informações sobre algumas das implicações de segurança # de ativar esta variável. # # Valores: 0=não permitir argumentos, 1=permitir argumentos de comando dont_blame_nrpe=1 [...] |

(Se você não fizer isso, verá o erro

CHECK_NRPE: Recebidos 0 bytes do daemon. Verifique os logs do servidor remoto para mensagens de erro.

para muitos cheques de serviço remoto na interface web do Icinga, e em /var/log/syslog no server2 você verá esses erros:

Aug 23 14:20:20 server2 nrpe[11496]: Erro: A solicitação continha argumentos de comando, mas a opção de argumento não está habilitada!  
Aug 23 14:20:20 server2 nrpe[11496]: Solicitação do cliente era inválida, saindo...

)

Finalmente, devemos adicionar definições de comando para cada verificação de serviço que queremos executar no server2 e que não está definida. Quero executar as verificações check_procs, check_all_disks e check_mysql_cmdlinecred no server2; estas não estão definidas em /etc/nagios/nrpe.cfg, então as adiciono agora (também quero executar as verificações check_users e check_load, mas estas já estão definidas):

| [...] command[check_procs]=/usr/lib/nagios/plugins/check_procs -w 250 -c 400 command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w '20%' -c '10%' -e command[check_mysql_cmdlinecred]=/usr/lib/nagios/plugins/check_mysql -H localhost -u 'nagios' -p 'howtoforge' [...] |

(Se você não fizer isso, receberá erros como

NRPE: Comando 'check_all_disks' não definido  
NRPE: Comando 'check_mysql_cmdlinecred' não definido  
NRPE: Comando 'check_procs' não definido

na interface web do Icinga.)

Como você vê, eu codifiquei os argumentos de linha de comando porque usar variáveis como command[check_procs]=/usr/lib/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ não funcionou para mim. Mas ainda assim, quando configuramos as verificações de serviço para o server2 no server1, teremos que passar argumentos de linha de comando para essas verificações; o server2 irá ignorá-los porque eu codifiquei os argumentos de linha de comando em /etc/nagios/nrpe.cfg, mas se você os deixar de fora, receberá erros como /usr/lib/nagios/plugins/check_nrpe: option requires an argument – ‘a’ na interface web do Icinga.

Agora salve o arquivo e reinicie o servidor NRPE:

/etc/init.d/nagios-nrpe-server restart

Agora verifique se o servidor NRPE está escutando:

netstat -tap | grep nrpe
root@server2:~# netstat -tap | grep nrpe  
tcp        0      0 *:nrpe                  *:*                     LISTEN      2132/nrpe  
root@server2:~#

Agora volte para o server1…

server1:

… e verifique se ele pode se conectar ao servidor NRPE no server2:

/usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101

A saída deve ser a seguinte em caso de sucesso:

root@server1:~# /usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101  
NRPE v2.12  
root@server1:~#

Agora volte para o server2:

server2:

Queremos verificar o MySQL no server2; porque usamos o daemon NRPE, podemos executar a verificação localmente no server2, ou seja, não precisamos abrir o MySQL para o exterior para permitir que o server1 execute a verificação. Portanto, crio o usuário MySQL nagios para localhost e localhost.localdomain em vez de para 192.168.0.100 e server1.example.com:

mysql -u root -p
GRANT USAGE ON *.* TO nagios@localhost IDENTIFIED BY 'howtoforge';  
GRANT USAGE ON *.* TO [email protected] IDENTIFIED BY 'howtoforge';  
FLUSH PRIVILEGES;
quit;

Agora voltamos para o server1…

server1:

… e criamos a configuração do Icinga para o server2:

vi /etc/icinga/objects/server2_icinga.cfg

| define host{ use generic-host host_name server2.example.com alias server2 address 192.168.0.101 } define service{ use generic-service host_name server2.example.com service_description PING check_command check_ping!100.0,20%!500.0,60% } define service{ use generic-service ; Nome do template de serviço a usar host_name server2.example.com service_description Espaço em Disco check_command check_nrpe!check_all_disks!20%!10% } define service{ use generic-service host_name server2.example.com service_description Usuários Atuais check_command check_nrpe!check_users!20!50 } define service{ use generic-service ; Nome do template de serviço a usar host_name server2.example.com service_description Total de Processos check_command check_nrpe!check_procs!250!400 } define service{ use generic-service ; Nome do template de serviço a usar host_name server2.example.com service_description Carga Atual check_command check_nrpe!check_load!5.0!4.0!3.0!10.0!6.0!4.0 } define service{ use generic-service host_name server2.example.com service_description MySQL check_command check_nrpe!check_mysql_cmdlinecred!nagios!howtoforge } define service{ use generic-service host_name server2.example.com service_description SMTP check_command check_smtp } define service{ use generic-service host_name server2.example.com service_description POP3 check_command check_pop } define service{ use generic-service host_name server2.example.com service_description IMAP check_command check_imap } |

(Como mencionei antes, embora eu tenha codificado os argumentos de linha de comando para alguns comandos em /etc/nagios/nrpe.cfg no server2, ainda precisamos adicionar argumentos de linha de comando a certas verificações aqui.)

Como você vê, eu uso check_nrpe para algumas verificações e passo a verificação real (como check_all_disks) como um argumento de linha de comando para check_nrpe. Essas são as verificações que serão executadas localmente pelo servidor NRPE no server2. check_nrpe não é necessário para todas as verificações. Verificações que testam uma conexão do exterior, como check_ping ou check_smtp, podem ser executadas a partir do server1.

Para verificar os serviços SSH e HTTP no server2, podemos OU adicionar os seguintes trechos ao /etc/icinga/objects/server2_icinga.cfg…

| [...] define service { use generic-service host_name server2.example.com service_description SSH check_command check_ssh } define service { use generic-service host_name server2.example.com service_description HTTP check_command check_http } |

OU adicionamos server2.example.com aos grupos de hosts http-servers e ssh-servers em /etc/icinga/objects/hostgroups_icinga.cfg:

vi /etc/icinga/objects/hostgroups_icinga.cfg

| # Algumas definições de grupos de hosts genéricos # Um grupo de hosts simples com wildcard define hostgroup { hostgroup_name all alias Todos os Servidores members * } # Uma lista dos seus servidores Debian GNU/Linux define hostgroup { hostgroup_name debian-servers alias Servidores Debian GNU/Linux members localhost,server2.example.com } # Uma lista dos seus servidores web define hostgroup { hostgroup_name http-servers alias Servidores HTTP members localhost,server2.example.com } # Uma lista dos seus servidores acessíveis por ssh define hostgroup { hostgroup_name ssh-servers alias Servidores SSH members localhost,server2.example.com } |

Reinicie o Icinga:

/etc/init.d/icinga restart

Depois disso, você deve encontrar o server2 na interface web do Icinga:

Aqui estão as verificações de serviço para o server2:

Se você adicionou o server2 aos grupos de hosts, ele deve ser listado na Visão Geral de Serviços Para Todos os Grupos de Hosts também:

5 Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.