Nagios / nrpe dando “O código de retorno de 255 está fora dos limites”

3

Eu tenho o seguinte serviço configurado para nagios:

define service {
  hostgroup_name             LNX
  service_description        /tmp Disk Usage
  check_command              check_nrpe!check_disk!-a '-w 20% -c 10% -p /tmp'
  check_interval             1
  max_check_attempts         3
  retry_interval             1
  check_period               24x7
  notification_interval      2
  notification_period        24x7
  notification_options       c,r,w
  notifications_enabled      0
  contact_groups             devops
}

Que está ligado ao seguinte comando:

define command {
 command_name     check_nrpe
 command_line     $USER1$/check_nrpe -H $HOSTADDRESS$ -u -t 60 -c $ARG1$ $ARG2$
}

Então, no final, o que está sendo executado (e sua saída quando executado na linha de comando) é:

$: /usr/local/nagios/libexec/check_nrpe -H <my host> -u -t 60 -c check_disk -a '-w 20% -c 10% -p /tmp'
DISK OK - free space: /tmp 4785 MB (97% inode=99%);| /tmp=124MB;3928;4419;0;4910

Depois disso, com echo $? produz um 0, significando OK / sucesso.

No entanto, o nagios está relatando isso como "código de erro 255 fora dos limites" e não sei por quê.

A execução do comando check_disk no servidor funciona bem:

$: ./check_disk -w 20% -c 10% -p /tmp
DISK OK - free space: /tmp 4785 MB (97% inode=99%);| /tmp=124MB;3928;4419;0;4910
$: echo $?
0

E, como mostrado acima, funciona quando feito através do executável check_nrpe no servidor nagios. Isso significa:

  1. O comando ( check_disk ) está presente no sistema remoto: %código%
  2. O servidor nagios é capaz de conversar com o nrpe remoto (por exemplo, ele pode acessá-lo na rede e seu IP está presente na diretiva command[check_disk]=/usr/local/nagios/libexec/check_disk $ARG1$ em only_from )

Além disso, esta verificação funciona bem em outras máquinas, mas nem todas as máquinas

Por que o Nagios acha que está recebendo um 255 quando tudo o que vejo significa que ele deve estar recebendo 0 e, assim, marcando o serviço como OK?

EDIT: versão Nagios é Nagios core 4 rodando no CentOS 7, sendo que os hosts verificados são centos 5-7, o problema aparece em várias máquinas de versões variadas

    
por Mitch 05.08.2016 / 20:40

2 respostas

2

Quando você tem check_command como segue:

check_command check_nrpe!check_disk

O nome do comando empatado é, na verdade, check_disk em vez de check_nrpe no lado do cliente.

Causa do problema

A configuração de serviço no servidor Nagios solicita ao cliente monitorado que execute o comando check_disk com argumentos ONE.

-w 20% -c 10% -p /tmp

Sua configuração atual para o comando check_disk no cliente Nagios em nrpe.cfg é mostrada como segue:

command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$

Assim, o comando que você passou para o cliente monitorado via NRPE é, na verdade:

/usr/lib64/nagios/plugins/check_disk -w -w 20% -c 10% -p /tmp -c $ARG2$ -p $ARG3$

Portanto, o teste falhou porque o comando não pode ser executado com sucesso.

Solução

Se você quiser passar 3 argumentos diferentes para o cliente Nagios, tente modificar seu check_command da seguinte forma:

check_command check_nrpe!check_disk -a '-w 20% -c 10% -p /tmp'

Certifique-se de ter o comando correspondente configurado no cliente Nagios:

command[check_disk]=/usr/lib64/nagios/plugins/check_disk $ARG1$

Outra opção seria alterar a configuração do servidor da seguinte forma:

check_command check_nrpe!check_disk

Com a configuração do cliente correspondente:

command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /tmp
    
por 10.08.2016 / 12:26
0

Você deve verificar se o cliente nrpe está aceitando conexões do servidor nagios.

cat /etc/xinetd.d/nrpe
service nrpe
{
    flags           = REUSE
    socket_type     = stream
    port            = 5666
    wait            = no
    user            = nagios
    group           = nagios
    server          = /usr/local/nagios/bin/nrpe
    server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd
    log_on_failure  += USERID
    disable         = no
    only_from       = xxx.xxx.xxx.xxx
}

Confirme se a linha only_from tem seu nagios IP

Segundo, você deseja verificar se o script check_nrpe tem as permissões corretas. Deve ser propriedade de nagios: nagios

-rwxrwxr-x. 1 nagios nagios 81542 Jul 11 13:08 /usr/local/nagios/libexec/check_nrpe
    
por 05.08.2016 / 20:48

Tags