J'ai un serveur Nagios et un serveur surveillé. Sur le serveur surveillé:
[root@Monitored ~]# netstat -an |grep :5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN
[root@Monitored ~]# locate check_kvm
/usr/lib64/nagios/plugins/check_kvm
[root@Monitored ~]# /usr/lib64/nagios/plugins/check_kvm -H localhost
hosts:3 OK:3 WARN:0 CRIT:0 - ab2c7:running alpweb5:running istaweb5:running
[root@Monitored ~]# /usr/lib64/nagios/plugins/check_nrpe -H localhost -c check_kvm
NRPE: Unable to read output
[root@Monitored ~]# /usr/lib64/nagios/plugins/check_nrpe -H localhost
NRPE v2.14
[root@Monitored ~]# ps -ef |grep nrpe
nagios 21178 1 0 16:11 ? 00:00:00 /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d
[root@Monitored ~]#
Sur le serveur Nagios:
[root@Nagios ~]# /usr/lib64/nagios/plugins/check_nrpe -H 1.1.1.159 -c check_kvm
NRPE: Unable to read output
[root@Nagios ~]# /usr/lib64/nagios/plugins/check_nrpe -H 1.1.1.159
NRPE v2.14
[root@Nagios ~]#
Lorsque je vérifie un autre serveur du réseau en utilisant la même commande, cela fonctionne:
[root@Nagios ~]# /usr/lib64/nagios/plugins/check_nrpe -H 1.1.1.80 -c check_kvm
hosts:4 OK:4 WARN:0 CRIT:0 - karmisoft:running ab2c4:running kidumim1:running travel2gether1:running
[root@Nagios ~]#
Exécuter le chèque localement à l'aide de Nagios Compte:
[root@Monitored ~]# su - nagios
-bash-4.1$ /usr/lib64/nagios/plugins/check_kvm
hosts:3 OK:3 WARN:0 CRIT:0 - ab2c7:running alpweb5:running istaweb5:running
-bash-4.1$
Exécution du chèque à distance du serveur Nagios à l'aide de Nagios Compte:
-bash-4.1$ /usr/lib64/nagios/plugins/check_nrpe -H 1.1.1.159 -c check_kvm
NRPE: Unable to read output
-bash-4.1$ /usr/lib64/nagios/plugins/check_nrpe -H 1.1.1.159
NRPE v2.14
-bash-4.1$
Exécuter le même check_kvm contre un autre serveur dans le réseau à l'aide de Nagios Compte:
-bash-4.1$ /usr/lib64/nagios/plugins/check_nrpe -H 1.1.1.80 -c check_kvm
hosts:4 OK:4 WARN:0 CRIT:0 - karmisoft:running ab2c4:running kidumim1:running travel2gether1:running
-bash-4.1$
Autorisations:
-rwxr-xr-x. 1 root root 4684 2013-10-14 17:14 nrpe.cfg (aka /etc/nagios/nrpe.cfg)
drwxrwxr-x. 3 nagios nagios 4096 2013-10-15 03:38 plugins (aka /usr/lib64/nagios/plugins)
/etc/sudoers:
[root@Monitored ~]# grep -i requiretty /etc/sudoers
#Defaults requiretty
iptables/selinux:
[root@Monitored xinetd.d]# service iptables status
iptables: Firewall is not running.
[root@Monitored xinetd.d]# service ip6tables status
ip6tables: Firewall is not running.
[root@Monitored xinetd.d]# grep disable /etc/selinux/config
# disabled - No SELinux policy is loaded.
SELINUX=disabled
[root@Monitored xinetd.d]#
La commande dans /etc/nagios/nrpe.cfg
est:
[root@Monitored ~]# grep kvm /etc/nagios/nrpe.cfg
command[check_kvm]=Sudo /usr/lib64/nagios/plugins/check_kvm
et l'utilisateur nagios
est ajouté sur /etc/sudoers
:
nagios ALL=(ALL) NOPASSWD:/usr/lib64/nagios/plugins/check_kvm
nagios ALL=(ALL) NOPASSWD:/usr/lib64/nagios/plugins/check_nrpe
Les check_kvm
est un script shell, ressemble à ça:
#!/bin/sh
LIST=$(virsh list --all | sed '1,2d' | sed '/^$/d'| awk '{print $2":"$3}')
if [ ! "$LIST" ]; then
EXITVAL=3 #Status 3 = UNKNOWN (orange)
echo "Unknown guests"
exit $EXITVAL
fi
OK=0
WARN=0
CRIT=0
NUM=0
for Host in $(echo $LIST)
do
name=$(echo $Host | awk -F: '{print $1}')
state=$(echo $Host | awk -F: '{print $2}')
NUM=$(expr $NUM + 1)
case "$state" in
running|blocked) OK=$(expr $OK + 1) ;;
paused) WARN=$(expr $WARN + 1) ;;
shutdown|shut*|crashed) CRIT=$(expr $CRIT + 1) ;;
*) CRIT=$(expr $CRIT + 1) ;;
esac
done
if [ "$NUM" -eq "$OK" ]; then
EXITVAL=0 #Status 0 = OK (green)
fi
if [ "$WARN" -gt 0 ]; then
EXITVAL=1 #Status 1 = WARNING (yellow)
fi
if [ "$CRIT" -gt 0 ]; then
EXITVAL=2 #Status 2 = CRITICAL (red)
fi
echo hosts:$NUM OK:$OK WARN:$WARN CRIT:$CRIT - $LIST
exit $EXITVAL
EDIT (10/22/13): Après tout cela, je suis maintenant capable d'obtenir une réponse du script:
[root@Monitored ~]# /usr/lib64/nagios/plugins/check_nrpe -H localhost -c check_kvm
Unknown guests
[root@Monitored ~]# /usr/lib64/nagios/plugins/check_nrpe -H localhost
NRPE v2.14
[root@Monitored ~]# /usr/lib64/nagios/plugins/check_kvm
hosts:3 OK:3 WARN:0 CRIT:0 - ab2c7:running alpweb5:running istaweb5:running
[root@Monitored ~]# su - nagios
-bash-4.1$ /usr/lib64/nagios/plugins/check_kvm
hosts:3 OK:3 WARN:0 CRIT:0 - ab2c7:running alpweb5:running istaweb5:running
-bash-4.1$ /usr/lib64/nagios/plugins/check_nrpe -H localhost -c check_kvm
Unknown guests
-bash-4.1$ /usr/lib64/nagios/plugins/check_nrpe -H localhost
NRPE v2.14
Il semble que le problème soit quelque chose relatif au check_nrpe
commande ou quelque chose qui est lié à l'installation nrpe
sur le serveur.
EDIT 12/2/13: Autres vérifications sur le fonctionnement du serveur problématique:
Nice Détail détaillé Itai! Avez-vous essayé de réduire la complexité de la configuration pour voir si cela fonctionne?
Pour commencer, je commencerais en changeant la ligne dans nrpe.cfg
à
command[check_kvm]=/usr/lib64/nagios/plugins/check_kvm
et modifier temporairement le script/usr/lib64/nagios/plugios/check_kvm Script pour être quelque chose de vraiment simple comme:
#!/bin/sh
echo Hi
exit 0
Si cela fonctionne, vous pouvez commencer à cliquer sur la complexité. Peut-être au lieu de donner l'accès nagios
User Sudo accès au script, il a vraiment besoin d'accéder à la commande virsh
et vous pouvez laisser la partie Sudo
partie dans le nrpe.cfg
ligne de commande.
J'ai eu le même problème et je réussis à 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 est parti bien après ça.
J'ai vu un problème sur un serveur gentoo qui ressemble au vôtre à http://forums.gentoo.org/viewtopic-t.806014-start-0.html
il y a une belle méthode là-bas pour déboguer le problème.
l'utilisateur sur ce message avait un problème avec Check_Disk et obtenu exactement le même message d'erreur que le vôtre.
il a été dit d'exécuter la commande suivante:
ssh remote_ip /usr/lib/nagios/plugins/check_disk -w 10 -c 5 -p "/" 2>&1
les 2>&1
produira STDERR et pourrait révéler l'erreur exacte.
donc, dans votre cas, remplacez REMOTE_IP avec l'adresse IP du serveur ne peut pas exécuter CHECK_NRPE ON. et remplacez la commande check_disk avec la commande complète que CheckVM est censée exécuter. Si vous l'exécutez sans paramètres, vous pouvez simplement aller et exécuter
ssh <remote_ip> /usr/lib64/nagios/plugins/check_kvm 2>&1
j'espère révéler des informations sur le problème.
bonne chance!
Essayez de voir si SELINUX a été activé sur le serveur distant (où l'agent NRPE est en marche). [root@dl1-ap-ldap1 plugins]# getenforce Enforcing
Si oui, puis éteint, puis configurez [root@dl1-ap-ldap1 plugins]# setenforce 0