web-dev-qa-db-fra.com

NRPE incapable de lire la sortie, mais pourquoi?

J'ai ce problème avec NRPE, tout ce que j'ai trouvé jusqu'à présent sur le net me semble indiquer des choses que j'ai déjà essayées.

# /usr/local/nagios/plugins/check_nrpe -H nrpeclient

donne

NRPE v2.12

comme prévu.

L'exécution manuelle de la commande (telle que définie dans nrpe.cfg sur "nrpeclient", donne la réponse attendue

nrpe.cfg:

command[check_openmanage]=/usr/lib/nagios/plugins/additional/check_openmanage -s -e   -b ctrl_driver=0 bat_charge

"Expected response"

Mais si j'essaie d'exécuter la commande à partir du serveur Nagios, j'obtiens ce qui suit:

# /usr/local/nagios/plugins/check_nrpe -H comxps -c check_openmanage
NRPE: Unable to read output

Quelqu'un peut-il penser à un autre endroit où j'aurais pu me tromper? J'ai fait la même chose sur plusieurs autres serveurs sans problème. La seule différence à laquelle je peux penser est que cette boîte est basée sur RHEL 5, tandis que les autres sont basées sur RHEL 4.

Ces deux bits ci-dessus que j'ai testés sont ce que la plupart des gens semblent suggérer lorsque les gens ont eu ce problème.

Je dois mentionner que j'obtiens une erreur étrange dans les journaux lorsque je redémarre nrpe:

nrpe[14534]: Unable to open config file '/usr/local/nagios/etc/nrpe.cfg' for reading 
nrpe[14534]: Continuing with errors...
nrpe[14535]: Starting up daemon
nrpe[14535]: Warning: Daemon is configured to accept command arguments from clients!
nrpe[14535]: Listening for connections on port 5666 
nrpe[14535]: Allowing connections from: bodbck,combck,nam-bck

Même si, il est clair que /usr/local/nagios/etc/nrpe.cfg fichier pour obtenir ce dont il parle plus bas ..

27
ticktockhouse

Vous avez un problème de droits.

Modifiez la commande en:

command[check_openmanage]=Sudo /usr/lib/nagios/plugins/additional/check_openmanage -s -e -b ctrl_driver=0 bat_charge

(ajouter Sudo)

Ensuite, ajoutez l'utilisateur nagios aux sudoers:

nagios ALL=(ALL) NOPASSWD:/usr/lib/nagios/plugins/additional/check_openmanage

Ou vous pouvez simplement modifier le fichier ... Cela fonctionne également.

Si vous utilisez CentOS, Red Hat, Scientific ou Fedora, assurez-vous de désactiver Defaults requiretty dans le fichier sudoers.

35
Bart De Vos

Réponse courte: si vous utilisez un plugin Bash, assurez-vous d'avoir un Shebang indiquant quel interprète doit être utilisé: #!/bin/bash


J'étais confronté au même problème avec un plugin Nagios que j'ai écrit moi-même. Le script s'exécutait comme prévu lors de son lancement local, même lors de son exécution en tant qu'utilisateur nagios à l'aide de l'instruction suivante:

$ Sudo sudo -s -u nagios
$ /path/to/my/plugin.sh
STATUS: OK

Mais le lancement à distance à l'aide de NRPE à partir du serveur Nagios3 a échoué:

$ /usr/lib/nagios/plugins/check_nrpe -H my-nagios-client -c my_plugin
NRPE: Unable to read output

J'ai finalement résolu ce cas en ajoutant un Shebang dans mon script, car il semblait que l'exécution du script via NRPE n'utilisait pas le même interpréteur que lors de l'exécution via Sudo sudo -s -u nagios.

11

Dans mon cas, le problème était simplement - l'utilisateur nagios n'a pas pu exécuter le script. Après chmod, cela a commencé à fonctionner. Sudo n'est pas nécessaire. C'est même mal :)

6
bluszcz

check_nrpe obtenait 'NRPE: Impossible de lire la sortie' malgré le fait que la vérification fonctionnait localement parce que le plugin que j'utilisais ne fonctionnait pas bien avec SELinux. Désactivez-le et assurez-vous de supprimer les contextes du fichier:

$ ls -l check_om_storage
-r-xr-xr--. 1 root nrpe 3808 Feb 27 17:54 check_om_chassis
$ setfattr -x security.selinux check_om_storage
$ ls -l check_om_chassis 
-r-xr-xr-- 1 root nrpe 3808 Feb 27 17:54 check_om_chassis
5
AXE Labs

Vérifiez le chemin, les autorisations, selinux, iptables.

Le mien était un problème de cheminement dans le client: nrpe.cfg, revérifiez le chemin de la commande jusqu'au nom du plugin check_ *. Ceux-ci peuvent être source de confusion, (lib/local) (libexec/plugins) en tant que chemin d'accès. J'ai par erreur tiré et mis les chemins du fichier cfg nrpe préemballé commenté pour faire des commandes. L'installation du plugin make install ou yum les place dans un répertoire difft.

commaneted:/usr/local/nagios/libexec/check_disk

versus

realpath:/usr/lib/nagios/plugins/check_disk

À partir du serveur, j'ai pu confirmer qu'il ne s'agissait pas d'un problème de pare-feu, pouvait telnet au port 5666, pouvait exécuter une couverture check_nrpe et obtenir le statut comme valeur de retour. Pourrait exécuter les commandes localement mais nrpe avait le mauvais chemin sur le client dans le nrpe.cfg.

4
hello world

Dans mon cas, un seul plugin a échoué tandis que plusieurs autres fonctionnaient bien. Cela s'est avéré être un problème LOCAL.

Le plugin était check_mem.sh et il a effectué une grep pour Mem dans la sortie de free. Mais LOCALE à l'échelle du système a renvoyé Speicher (allemand) au lieu de Mem, donc toutes les valeurs reçues étaient des chaînes vides.

4
Rush

C'est un problème de permission, donnez juste le droit d'exécution du script et ça ira:

voici un exemple: Avant/Hôte distant:

[root@puppet1 nrpe.d]# ls -l /usr/lib/nagios/plugins/check_mem.sh
-rwxr--r-- 1 root root 1598 Jul  7 10:55 /usr/lib/nagios/plugins/check_mem.sh

serveur NRPE:

[root plugins]# ./check_nrpe -H 172.19.9.200 -c check_mem_vb
NRPE: Unable to read output

Après: hôte distant:

[root@puppet1 plugins]# chmod o+x /usr/lib/nagios/plugins/check_mem.sh

[root plugins]# ./check_nrpe -H 172.19.9.200 -c check_mem_vb
Memory: OK Total: 1980 MB - Used: 139 MB - 6% used|Total=2076479488;;;Used=145076224;;;Cache=1528111104;;Buffer=211890176;;;

Problème résolu.

2
Youssef ASEBRIY

Dans mon cas, les problèmes étaient liés à selinux (en exécutant RHEL 6.5, selinux est configuré pour être appliqué).

L'installation de nagios-plugins- * via yum créera vos fichiers de plug-in dans/usr/lib64/nagios/plugins. Si vous vérifiez le fcontext sur ces fichiers de plug-in (ls -lZ), vous verrez que les fichiers ont le type de contexte défini sur "nagios_system_plugin_exec_t", qui est le type de contexte que check_nrpe attend.

Dans mon cas, j'avais créé un script personnalisé "check_mem.sh" en utilisant "vi". Le fichier résultant avait le type de contexte défini sur "lib_t". Cela provoquait la sortie par nrpe du "NRPE: Impossible de lire la sortie".

Changer le contexte du fichier en "nagios_system_plugin_exec_t" a résolu le problème:

chcon -t nagios_system_plugin_exec_t /usr/lib64/nagios/plugins/check_mem.sh

Le dépannage habituel de selinux m'aurait également signalé ce problème (vérification /var/log/audit/audit.log), mais c'était bien sûr la dernière chose à laquelle j'ai pensé

Edit: chcon change juste temporairement le contexte. Pour le changer de façon persistante, utilisez semanage fcontext -a -t nagios_system_plugin_exec_t /usr/lib64/nagios/plugins/check_mem.sh restorecon -vF /usr/lib64/nagios/plugins/check_mem.sh

1
Alexandru Todicescu

Dans mon cas, le fichier journal surveillé appartenait à root: adm, l'ajout de l'utilisateur nagios au groupe adm a donc permis à la commande check_log de réussir, mais uniquement lorsqu'elle était exécutée directement sur les hôtes surveillés. Il a continué d'échouer à l'aide de check_nrpe sur le serveur Nagios jusqu'à ce que je redémarre le service nagios-nrpe-server sur les hôtes surveillés, par ex.

service nagios-nrpe-server restart

Donc, apparemment, le redémarrage du service était nécessaire pour que la modification des autorisations prenne effet pour NRPE, mais il m'a fallu un certain temps pour comprendre cela.

1
Tony

Dans le cas de plugins NRPE personnalisés, assurez-vous d'imprimer une sortie avec la valeur de sortie. S'il n'y a pas de sortie du script, NRPE se plaindra en disant "NRPE incapable de lire la sortie". Vous pouvez activer le débogage dans nrpe.cfg et observer cette erreur.

1
Karthik

Je viens d'avoir ce problème sur FreeBSD. Après m'être cogné la tête contre un mur pendant une heure, j'ai réalisé que le problème était que le /usr/local/nagios/etc/nrpe.cfg pointait au mauvais endroit pour Sudo.

Pour trouver l'emplacement correct vers lequel pointer pour l'exécution de la commande Sudo:

# whereis Sudo

J'ai ensuite changé le préfixe_commande dans nrpe.cfg de:

command_prefix=/usr/local/Sudo

à:

command_prefix=/usr/local/bin/Sudo

Puis a couru service nrpe restart et le problème a été résolu.

Cela pourrait être un problème similaire sur d'autres systèmes d'exploitation, juste une autre chose à vérifier si vous avez vérifié tous les autres problèmes d'autorisations possibles et que vous rencontrez toujours ce problème.

0
Graeme

Cela se produit généralement lorsque le serveur NRPE est démarré avec l'utilisateur nrpe, au lieu de nagios.

Changer le nrpe_user valeur en nagios dans le /etc/nagios/nrpe.cfg le fichier devrait résoudre votre problème.

Le nrpe_group peut également être modifié si nécessaire.

0
Umut Uzun

J'ai eu le problème que vous écrivez. Le test que j'ai effectué était de Perl. Mettez cette ligne dans le fichier /etc/nagios/nrpe.cfg pour le faire fonctionner.

command [check_memory] = /usr/bin/Perl /usr/lib64/nagios/plugins/check_memory -w 75-c 90 
0
user224319

J'ai eu le même problème et j'ai réussi à le résoudre en tuant le processus nagios (sur la machine surveillée):

ps -ef | grep nagios
kill -9 [NagiosProcessNumber]
/etc/init.d/nagios-nrpe-server start

Tout s'est bien passé après ça.

0
user428879

Une autre chose à vérifier est que si votre commande utilise Sudo -u <another user> pour exécuter la commande, le répertoire libexec (et les répertoires situés au-dessus) doivent être lisibles par l'utilisateur auquel il est destiné.

Par exemple, si votre commande est:

command[check_Tomcat]=Sudo -u Tomcat /usr/local/nagios/libexec/check_Tomcat ...

L'utilisateur Tomcat doit pouvoir accéder à ce fichier.

Une façon de résoudre ce problème serait:

chmod 0775 /usr/local/nagios/
chmod 0755 /usr/local/nagios/libexec

Remplacement de la dernière partie où que vos exécutables vivent

0
Mitch

Je pense que vous devez ajouter les plugins dans votre répertoire local /usr/lib64/nagios/plugins/*. J'ai eu le même problème que vous et je peux le résoudre avec cette solution.

0
Tarik Nasser

Il y a un article vraiment sympa qui couvre toute l'installation et la configuration de l'agent NRPE avec de nombreux exemples check_commands, j'utilise cet article chaque fois que j'ai besoin d'installer NRPE sur un nouveau serveur. Plus que cela, à la fin de la page, vous pouvez trouver un script sympa qui installe et configure automatiquement NRPE pour vous (en fonction des variables que vous définissez), l'article peut être trouvé: Ici

0
Itai Ganot

Il se peut que vous n'ayez pas installé vos plugins Nagios, NRPE ne peut pas les trouver ou y accéder.

Je n'ai jamais eu à ajouter mes commandes aux Sudoers. Assurez-vous que les commandes appartiennent à l'utilisateur Nagios et qu'elles sont lisibles.

0
Daniel Baker