web-dev-qa-db-fra.com

Nagios / NRPE Donner "Le code de retour de 255 est hors limites"

J'ai le service suivant mis en place pour 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
}

Qui lient à la commande suivante:

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

Donc, à la fin ce qui est exécuté (et sa sortie lors de la course à la ligne de commande) est:

$: /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

Suivre cela avec echo $? donne un 0, ce qui signifie ok/succès.

Cependant, Nagios signale cela comme "code d'erreur 255 hors limites" et je ne sais pas pourquoi.

Exécuter la commande check_disk sur le serveur fonctionne bien:

$: ./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

Et comme indiqué ci-dessus, cela fonctionne lorsqu'il est fait à travers le check_nrpe exécutable sur le serveur Nagios. Ça signifie:

  1. La commande (check_disk) est présent sur le système distant: command[check_disk]=/usr/local/nagios/libexec/check_disk $ARG1$
  2. Le serveur Nagios est capable de parler à la NRPE distante (par exemple, il peut y accéder sur le réseau et son IP est présent dans le only_from directive dans /etc/xinetd.d/nrpe)

En outre, cette vérification fonctionne bien sur d'autres machines, mais pas toutes les machines

Pourquoi Nagios pense-t-il que cela obtient un 255 quand tout ce que je peux voir signifie qu'il devrait être 0 et marquer ainsi le service comme ok?

Modifier: La version Nagios est Nagios Core 4 en cours d'exécution sur Centos 7, les hôtes en cours de vérification sont CENTOS 5-7, le problème apparaît sur plusieurs machines de variations variables.

3
Mitch

Quand vous avez check_command comme suit:

check_command check_nrpe!check_disk

Le nom de commande attaché est en réalité check_disk au lieu de check_nrpe au client.

cause de problème

Le paramètre de service dans Nagios Server demande au client surveillé d'exécuter la commande check_disk avec un argument.

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

Votre paramètre actuel pour check_disk Commande avec le client Nagios à NRPE.CFG est comme indiqué:

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

Donc, la commande que vous avez transmise au client surveillé via NRPE est en fait:

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

Par conséquent, le test est échoué car la commande ne peut pas être exécutée avec succès.

solution

Si vous souhaitez transmettre 3 arguments différents sur NAGIOS Client, essayez de modifier votre check_command comme suit:

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

Assurez-vous que la commande correspondante configurée au client Nagios:

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

ne autre option modifierait la configuration du serveur comme suit:

check_command check_nrpe!check_disk

Avec la configuration du client correspondant:

command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /tmp
2
Simon MC. Cheng