Suite à l’introduction sur les greffons Nagios, voici une simple procédure pour mettre en place le monitoring de serveurs sous Linux (voir ce billet pour des serveurs BSD ou Mac OS X) à partir de Nagios en utilisant le plugin NRPE.

Sur votre serveur Nagios…
… il faut installer le plugin NRPE. Pour cela, le plus simple est de faire confiance à votre gestionnaire de paquets.
Sous Fedora, la commande suivante devrait suffire:
# sudo yum install nagios-plugins-nrpe
Sous Ubuntu/Debien:
# sudo apt-get install nagios-nrpe-plugin
Il faut également vérifier que la définition du plugin est bien présente dans le fichier de configuration des commandes (commands.cfg):
…
######
# NRPE
####### ‘check_nrpe’ command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
…
Sur votre serveur Linux à surveiller...
La procédure est un peu plus longue. Il faut d’abord installer le daemon NRPE et les plugins Nagios (qui vont être lancés localement par le daemon NRPE):
Sous Fedora:
# sudo yum install nrpe
# sudo yum install nagios-plugins-all
Sous Ubuntu/Debien:
# sudo apt-get install nagios-nrpe-server
# sudo apt-get install nagios-plugins-all
Puis éditer le fichier /etc/nagios/nrpe.conf pour modifier la ligne suivante:
…
allowed_hosts = Mettre ici l’adresse IP de votre serveur Nagios
…
On automatise le lancement du daemon au démarrage du serveur avec la commande:
# chkconfig –add nrpe
On ajoute une règle pour autoriser le Firewall Iptable à laisser passer les requêtes NRPE (à adapter selon vos règles):
# iptables -I RH-Firewall-1-INPUT 10 -p tcp –dport 5666 -j ACCEPT
Attention il faut mettre deux - (- -) avant l’option dport
Il ne reste plus qu’Ã lancer le daemon:
Sous Fedora:
# service nrpe start
Sous Ubuntu/Debien:
# /etc/init.d/nagios-nrpe-server start
On teste la communication…
Pour tester que la communication entre le serveur Nagios et le serveur à surveiller se passe bien, il suffit de se rendre dans le répertoire des plugins (/usr/lib/nagios/plugins) de Nagios et de tester le plugin NRPE:
# ./check_nrpe -H Adresse_IP_du_serveur_Linux
NRPE v2.7
Si tout est OK, cette commande devrait renvoyer la version du daemon NRPE.
Vous pouvez tester directement les plugins avec la commande suivante (exemple donnée pour un check de la charge):
# ./check_nrpe -H Adresse_IP_du_serveur_Linux -c check_load
On configure Nagios…
La dernière étape consiste à modifier les fichiers de configuration de Nagios pour intégrer le monitoring du/des serveur Linux. Il faut dans un premier temps éditer votre fichier de configuration des hosts (hosts.cfg par défaut) et y ajouter votre machine Linux:
define host {
use generic-host
host_name linus
alias Ma machine Linux
address 192.168.0.7
}
Puis ajouter les services offerts par NRPE (dans le fichier services.cfg), quelques exemples:
# Charge CPU
define service{
use generic-service
host_name remotehost
service_description CPU Load
check_command check_nrpe!check_load
}# Memoire
define service{
use generic-service
host_name remotehost
service_description Memory
check_command check_nrpe!check_mem
}
Pour ajouter des nouveaux plugins executable par NRPE, il faut éditer le fichier /etc/nagios/nrpe.conf et ajouter une ligne par service:
…
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /dev/hda
…
Ne pas oublier de relancer le daemon quand on change le fichier de configuration (nrpe.conf):
# service nrpe restart
Il est bien entendu possible d’écrire son propre plugin Nagios et de le faire exécuter par NRPE.





Open-source
abonnez-vous
un commentaire
trackback
31 commentaires au billet “Surveiller vos serveurs Linux avec Nagios et NRPE”
Salut,
Bravo d’abord pour tes articles, qui sont très intéressants et permettent d’apprendre et connaître de nouvelles choses (surtout ceux au sujet de nagios).
ca fait un moment que je connais ton blog (il est d’ailleurs dans mon liferea) et je me décide enfin à poster un commentaire
Grâce à toi je me suis enfin décidé à me lancer dans l’aventure nagios (pour remplacer mon vieux What’s Up Gold de Ipswitch…).
J’ai bien tout configuré pour monitorer une centaine d’ADSL et de serveurs FreeBSD (sans oublier quelques serveurs windows, il faut bien…).
Par contre il reste une chose que je n’arrive pas à faire correctement sur FreeBSD, avec le daemon NRPE sur un serveur distant ou même directement sur le serveur nagios, c’est de monitorer la mémoire utilisée (ou libre…).
J’ai essayé avec check_snmp_meme.pl mais ca n’aaffiche pas exactement la mémoire utilisée (ca affiche la mémoire active inact wired buf…).
Quelqu’un aurait-il une solution ? Par exemple un plugin basé sur vmstat ?
Merci.
Salut.
J’ai suivi votre tutoriel pour installer nagios. Mais je ne trouve pas le fichier commands.cfg pour configurer NRPE sur le serveur.
Le client est configuré et opérationnel, mais le serveur nagios ne récupère pas les informations de mémoire et de charge CPU. Je pense que ceci est du au fait que je ne trouve pas le fichier commands.cfg (et les instructions à mettre dedans).
Je suis sous Ubuntu.
Merci d’avance !
Salut,
Félicitation pour c’est différents tutoriaux qui m’ont particulièrement aidé.
Mais j’ai une petite question, je suis sous Debian (etch) et j’ai suivi pas à pas l’installation de nrpe, mais mon serveur ne connait check_config, est-ce du à mon système (nagios-plugins 1.4.5) ou a un changement de nom … (ce qui m’eviterait de desinstaller puis ré-installer)
Merci d’avance.
1 avec Franck
Je suis sous Ubuntu 7.10 et l
1 avec Franck !
Je suis le tutoriel pas à pas aussi et la commande ‘chkconfig -add nrpe’ ne fonctionne pas non plus sous ubuntu 7.10, Gutsy pour les intimes…
Je fais des recherches pour voir si voir si une autre syntaxe existe et je posterai la solution si je la trouve !
Ciao.
Elie.
Bonjour,
je ne peux pas utiliser le gestionnaire de paquets ni les rpm pour des raisons longues à expliquer.
J’aimerais donc savoir ou je peux me procurer le paquets nagios-server-nrpe ?
Si quelqu’un sait …
Manarchie
Salut,
merci pour ce tuto (ainsi que tous les autres)!
J’ai un souci pour autoriser les requetes NRPE. Quand je tape la commande :
./check_nrpe -H **.**.**.**
Ca ne renvoie: Connection refused by host
J’ai bien entré la commande
iptables -I INPUT -s **.**.**.** -p tcp –dport 5666 -j ACCEPT
Savez vous d’ou ca peut venir???
Merci beaucoup
@pausg: deux chemins à explorer:
- tu es bien sur qur NRPE est bien lancé sur ta machine **.**.**.** ?
- Fait bien attention à mettre deux - avant l’option dport de la commande iptable (Wordpress n’en affiche qu’un seul
a
Pour les deux — pas de probleme. Je pense que nrpe n’est peut etre pas lance…
J’ai fait: /etc/init.d/nagios-nrpe-server start
mais quand je fais le ./check il me dit que la connexion a ete refusée par le host.
@pausg: cela donne quoi un:
ps auxw | grep nrpe
?
nagios 6291 0.0 0.0 12956 1168 ? Ss 11:22 0:00 /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d
root 9947 0.0 0.0 6488 788 pts/0 S 12:47 0:00 grep nrpe
@pausg: nrpe tourne bien… tu as bien configuré l’adresse IP de ton serveur Nagios dans le fichier /etc/nagios/nrpe.conf. Sinon dernière idée, tu n’as pas un firewall (ou routeur filtrant ) entre ton serveur Nagios et ta machine Linux à superviser ?
je pense que ca peut venir d’un firewall.
Peux tu m’expiquer comment voir si il y en a un, et si oui comment le configurer?
Merci beaucoup pour ton aide
@pausg: impossible de t’aider sans connaitre l’architecture de ton réseau et le type de Firewall (ou routeur) utilisé. La seule chose que je puisse te dire c’est qu’il faut que tu identifie cette machine et que tu y ouvres (ou que tu y fasses ouvrir) le port TCP/5666.
d’accord merci beaucoup de ton aide, je vais chercher ca.
Autre petit souci, qui n’a pas grand chose à voir, est ce que tu sais comment il faut utiliser la fonction check_snmp? Elle apparait toujours en unknown, et je n’arrive pas à trouver les bons arguments à lui passer.
@pausg:
./check_snmp -h
C’est ce que j’ai fait (sinon je ne viendrait pas t’embeter), mais meme en lisant des explications sur internet, je ne comprends pas ce qu’est le OID, et donc ce qu’il faut passer en parametre pour le -o.
@pausg: l’OID est le numero de l’information que tu veux récupérer dans la MIB de la machine cible. SNMPd ne fait que lire et distribuer des infos stocké dans ces MIB.
Avant de te lancer dans ce genre de configuration, je te conseille de documenter un peu sur SNMP en lisant des docs sur le Net.
Bon courage.
Bonjour,
Mathieu
Alors voilà , ça fait trois jours que je suis sur la configuration de nrpe et je n’arrive toujours pas à faire communiquer deux pc sur un même réseau local …
Le premier en 192.168.0.19 est un Debian sur lequel tourne nagios 3 et centreon 2 à merveille, le second est un fedora en 192.168.0.8 sur lequel j’ai installé le démon nrpe (en tant que service de xinetd) ainsi que les plugins nagios que je compte utiliser avec NRPE en local.
Quand je tente un check_nrpe -H localhost sur le pc nagios ça me renvoit bien NRPE v2.8.1 mais si je met l’adresse du fedora, ou meme l’adresse ip du serveur nagios, j’ai au choix :
CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.
ou
CHECK_NRPE: Error receiving data from daemon.
Dans les fichiers de log (/var/log/messages) du fedora (donc celui monitoré par Nagios), j’ai cette ligne à chaque exécution du check_nrpe de nagios :
FAIL: nrpe address from=::ffff:192.168.0.19
Mes fichiers /etc/hosts.allow et .deny sont OK, le serveur Nagios et bien enregistré comme autorisés dans nrpe.cfg, donc je vois vraiment pas ce qui cloche…
Sinon pour finir si je tente un telnet 192.168.0.19 5666 je reçois un magnifique :
Connection closed by foreign host.
A l’aiiiidde !!
Je comprend vraiment pas :s donc toute suggestion sera la bienvenue, merci d’avance
@Mathieu: dans ton message tu dis que tu as fait un telnet 192.168.0.19 5666, j’imagine que c’est en fait sur la machine 192.168.0.8 depuis la machine 192.168.0.19 ?
Une autre chose bizarre est le mesage d’erreur dans /var/log/messages. On dirait que les requêtes venant de ton serveur Nagios arrive en IPv6.. (::ffff:192.168.0.19)…
oui je fais le telnet depuis le serveur nagios (.19) vers le monitoré (.8) dsl pour la coquille :p :
telnet 192.168.0.8 5666 donne :
Connection closed by foreign host.
Et au même moment j’ai les trois lignes suivantes qui s’affichent dans /var/log/messages de 192.168.0.8 :
Jul 7 17:44:59 localhost xinetd[1248]: START: nrpe pid=4268 from=::ffff:192.168.0.19
Jul 7 17:44:59 localhost xinetd[4268]: FAIL: nrpe address from=::ffff:192.168.0.19
Jul 7 17:44:59 localhost xinetd[1248]: EXIT: nrpe status=0 pid=4268 duration=0(sec)
Je suis d’accord avec toi, on dirait de l’ipV6, et même du tcp6… Mais je ne sais pas où est-ce que je pourrais configurer ça… Je continue de chercher et apprécierais d’autres suggestions ^^
Merci Nico
Ne cherche pas plus sur mon cas, j’ai trouvé : en revérifiant tous mes fichiers j’ai vu qu’il y avait une adresse mal configurée dans le /etc/xinetd.d/nrpe !!!
Je suis trop content j’ai enfin trouvé !!
Merci en tout cas et dsl pour le dérangement
Bonjour, Ã tous,
J’ai donc installer le plugins nrpe comme presisé dans le tuto et dans nagios sa me retourne :
(Return code of 127 is out of bounds - plugin may be missing)
Aussi bien pour la memoire que pour le CPU
Qualqu’un pourrai t-il m’aider ?
Merci d’avance
@Julien -
Qu’est ce que tu tapes comme commande
Bonjour à tous;
J’ai suivi ce tuto et quand je cherche à utiliser check_load sur un de mes serveurs sur lequel j’ai NRPE, NAGIOS me sort cette erreur :
Invalid host name ‘$’
Est-ce que quelqu’un a eu cela auparavant ?
Nagios 3
le service est check_nrpe!check_load appliqué à un host …
Merci par avanc;
qu’est ce que tu tapes comme commande ?
Mon services.cfg:
# Memoirre
define service{
use generic-service
host_name srv1
service_description Memory
check_command check_nrpe!check_mem
}
sachant que ma commande NRPE que j’ai mis dans commands.cfg :
# ‘check_nrpe’ command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADRESS$ -c $ARG1$
}
Change dans ton fichier command.cfg la ligne suivante
command_line $USER1$/check_nrpe -H $HOSTADRESS$ -c $ARG1$
et remplaces la par
command_line $USER1$/check_nrpe -H $HOSTADRESS$ -c $ARG1$ -a $ARG2£ $ARG3$ …
Je viens de le faire et il me sort toujours cette erreur : invalidid hostname $h
Je continue à chercher mais toute idée est l bienvenue
$HOSTADDRESS$ avec 2 “D” et pas $HOSTADRESS$
Publier un commentaire
Partager des documents lors des commentaires: Le groupe Scripd Nicolargo