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 s'il lit simplement ce /usr/local/nagios/etc/nrpe.cfg
fichier pour obtenir les informations dont il parle plus bas.
Réponses:
Vous avez un problème de droits.
Modifiez la commande en:
(ajouter sudo)
Ensuite, ajoutez l'utilisateur nagios aux sudoers:
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.la source
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 à l'
nagios
aide de l'instruction suivante:Mais le lancement à distance à l'aide de NRPE à partir du serveur Nagios3 a échoué:
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
sudo sudo -s -u nagios
.la source
#!/bin/bash -el
eval "$(rbenv init -)"
/usr/lib/nagios/plugins/check_something $@
Dans mon cas, le problème était simplement - l'utilisateur nagios n'était pas en mesure d'exécuter le script. Après chmod, cela a commencé à fonctionner. Sudo n'est pas nécessaire. C'est même mal :)
la source
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:
la source
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
contre
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 vérification 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.
la source
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 forMem
dans la sortie defree
. Mais LOCALE à l'échelle du système a renvoyéSpeicher
(allemand) au lieu deMem
, donc toutes les valeurs reçues étaient des chaînes vides.la source
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 :
Serveur NRPE :
Après: hôte distant :
Problème résolu.
la source
Dans mon cas, le fichier journal surveillé appartenait à root: adm, donc l'ajout de l'utilisateur nagios au groupe adm a fait réussir la commande check_log, mais uniquement lorsqu'elle était exécutée directement sur les hôtes surveillés. Il a continué d'échouer en utilisant check_nrpe sur le serveur Nagios jusqu'à ce que je redémarre le service nagios-nrpe-server sur les hôtes surveillés, par exemple
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.
la source
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.
la source
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 de /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
la source
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.
la source
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.la source
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.la source
Il y a un très bel article 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
la source
Cela se produit généralement lorsque le serveur NRPE est démarré avec l'utilisateur nrpe, au lieu de nagios.
La modification de la
nrpe_user
valeur en nagios dans le/etc/nagios/nrpe.cfg
fichier devrait résoudre votre problème.Le
nrpe_group
peut également être modifié si nécessaire.la source
Une autre chose à vérifier est que si votre commande est utilisée
sudo -u <another user>
pour exécuter la commande, lelibexec
répertoire (et les répertoires au-dessus) doivent être lisibles par l'utilisateur auquel il est destiné.Par exemple, si votre commande est:
L'utilisateur tomcat doit pouvoir accéder à ce fichier.
Une façon de résoudre ce problème serait:
Remplacement de la dernière partie où que vos exécutables vivent
la source
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):
Tout s'est bien passé après ça.
la source
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.
la source
Plugins Nagios manquants sur le client nrpe.
N'utilisez pas yum install nagios-plugins (nagios-plugins-2.0.3-1.el6.x86_64). Il n'installe pas tous les plugins. Téléchargez nagios-plugins-1.4.11.tar.gz et suivez les instructions de ce document.
http://www.thegeekstuff.com/2008/06/how-to-monitor-remote-linux-host-using-nagios-30/
la source
J'ai eu ce problème et j'ai résolu de désactiver le selinux
setenforce 0
la source