J'essaie d'ajouter une vérification NRPE pour surveiller l'agent Puppet, mais je rencontre des difficultés pour que le plugin renvoie le bon résultat lorsqu'il est exécuté localement.
J'utilise ce plugin :
lors de l'exécution du script localement sur le client nagios le résultat est correct mais l'exécution avec nrpe résulte en un résultat critique. Je suppose que j'ai manqué quelque chose dans ma configuration. Les autres plugins nrpe s'exécutent avec succès.
J'ai redémarré nrpe.d (et vérifié pendant qu'il était hors service qu'aucun pid nrpe ne tournait). Les permissions, ownder et group pour le fichier check_puppet sont les mêmes que pour mes autres vérifications.
[root@puppet-master]# /usr/lib64/nagios/plugins/check_nrpe -H server.addr -c check_puppet
CRITICAL: Puppet daemon not running or something wrong with process
[root@git nrpe.d]# /usr/lib64/nagios/plugins/check_puppet
OK: Puppet agent "3.4.3" running catalogversion 1398787991, and executed at Tue 29 Apr 2014 04:13:25 PM UTC for last time
nagios_commands.cfg :
define command {
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 15 -c check_puppet
command_name check_nrpe_puppet
}
nagios_service.cfg :
define service {
## --PUPPET_NAME-- (called '_naginator_name' in the manifest) check_puppet
check_command check_nrpe_puppet
host_name server.addr
service_description check_puppet
use generic-service
}
/etc/nrpe.d/nrpe-check_puppet
# Configuration for check_puppet (from the generic template)
command[check_puppet]=/usr/lib64/nagios/plugins/check_puppet
Pour référence, voici une de mes configurations qui fonctionne
define command {
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 15 -c check_ram
command_name check_nrpe_ram
}
define service {
## --PUPPET_NAME-- (called '_naginator_name' in the manifest) check_ram_server.addr
check_command check_nrpe_ram
host_name server.addr
service_description ram
use generic-service
}
/etc/nrpe.d/nrpe-check_ram
# Configuration for check_ram (from the generic template)
command[check_ram]=/usr/lib64/nagios/plugins/check_ram -w 10% -c 5%
Mise à jour :
J'avais ajouté l'utilisateur Nagios à sudoers comme indiqué dans le readme mais je n'avais pas testé l'exécution de la vérification en tant qu'utilisateur Nagios. Cela a échoué parce que le chemin autorisé dans la liste des sudoers était incorrect (mon plugin est en Lib64), et NRPE fonctionne aussi en tant qu'utilisateur nrpe sur mes systèmes.
J'ai corrigé sudoers pour accorder nopasswed sudo pour le bon dossier à l'utilisateur nrpe et j'ai ajouté un nrpe Shell afin que je puisse tester en tant que cet utilisateur (il était défini à nologin).
bash-4.1$ whoami
nrpe
bash-4.1$ /usr/lib64/nagios/plugins/check_puppet
UNKNOWN: last_run_summary.yaml not found, not readable or incomplete
bash-4.1$ exit
exit
[root@ip-10-185-165-196 plugins]# ps auxww | grep nrpe
nrpe 16353 0.0 0.0 41320 1364 ? Ss 23:33 0:00 /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d
root 16814 0.0 0.0 103236 856 pts/0 S+ 23:53 0:00 grep nrpe
[root@ip-10-185-165-196 plugins]#
Sur le serveur nagios :
[root@puppet-master plugins]# ./check_nrpe -H <myserver> -t 15 -c check_puppet
CRITICAL: Puppet daemon not running or something wrong with process
J'utilise une installation minimale de CentOS 6.5.
J'ai désactivé requiretty avec :
Defaults:nrpe !requiretty
UPDATE 3 :
On dirait que SELinux est à blâmer. setenforce 0 a résolu le problème. $setenforce 0
0 votes
Que se passe-t-il lorsque vous invoquez la commande nrpe à partir d'un Shell ?
0 votes
Il revient critique. Voir la première case de code pour l'exemple.
1 votes
Que se passe-t-il lorsque vous exécutez le
check_puppet
sur le client comme lenagios
utilisateur ?0 votes
Il n'y a pas d'utilisateur nagios, tous les plugins nrpe sont exécutés en tant que root (je sais, je sais, mais je ne l'ai pas mis en place, j'en ai hérité et je vais le corriger, mais un problème à la fois).
0 votes
C'est juste, mais pourrions-nous voir une confirmation de cela, aussi : peut-être la sortie de
ps auxww|grep nrpe
sur le client ? Oh, et la sortie decat /selinux/enforce
sur le client, également ?1 votes
Vous dites qu'il y a une ligne qui dit "nrpe_user=root" dans nrpe.cfg ?
0 votes
Sans rapport avec votre problème, on n'écrit pas traditionnellement une commande check_nrpe_foo distincte pour toutes les valeurs de 'foo'. L'utilisation traditionnelle est de la forme : check_nrpe!foo
0 votes
Pouvez-vous fournir un lien vers la source du script check_puppet script que vous utilisez ?
0 votes
Quant à la question de l'utilisateur. J'ai regardé de plus près. nrpe est exécuté en tant qu'utilisateur nrpe et nagios est exécuté en tant qu'utilisateur nagios. Les deux sont ajoutés au groupe root. Le plugin que j'utilise est : github.com/aswen/nagios-plugins/blob/master/check_puppet_agent
0 votes
Je fournirai des réponses plus détaillées plus tard. Merci pour votre aide !
0 votes
Avez-vous oublié d'ajouter la ligne à /etc/sudoers comme il est indiqué dans les commentaires du script (lignes 36-38) ? Rappelez-vous, si cette opération est exécutée sous un utilisateur nommé
nrpe
au lieu d'un utilisateur nomménagios
vous devrez ajuster la ligne en conséquence pour correspondre au nom d'utilisateur.0 votes
Comme tout le monde le suggère, il est généralement plus utile de tester les plugins en tant que nrpe, et non en tant que root.