Surveillance serveur · 7 min read · Oct 18, 2025
Surveillance des serveurs avec Icinga sur Debian Squeeze - Page 3
4 Ajout d’un serveur distant (server2) à Icinga
Surveiller localhost est bien, mais bien sûr, ce serait encore mieux si nous pouvions surveiller tous nos serveurs en un seul endroit. Cela est possible avec Icinga, et ce chapitre décrit comment nous pouvons ajouter notre deuxième serveur Debian Squeeze (server2.example.com) à la configuration.
Pour ce faire, nous devons installer le serveur Nagios NRPE (Nagios Remote Plugin Executor) sur server2, et le plugin Nagios NRPE sur server1. Le serveur NRPE écoutera sur server2 ; server1 s’y connectera en utilisant le plugin NRPE et lui passera des commandes que le serveur NRPE exécutera sur server2 ; il renverra les résultats à server1.
Tout d’abord, nous installons le paquet nagios-nrpe-plugin sur server1 :
server1:
apt-get install nagios-nrpe-pluginMot de passe d’administration web Nagios : <– nagiosadmin_password
Confirmation du mot de passe : <– nagiosadmin_password
Maintenant, nous allons sur server2 :
server2 :
Installez le paquet nagios-nrpe-server :
apt-get install nagios-nrpe-serverNom de groupe de travail / Domaine : <– WORKGROUP
Maintenant, ouvrez /etc/nagios/nrpe.cfg :
vi /etc/nagios/nrpe.cfgNous devons configurer le serveur NRPE pour permettre à server1 (IP : 192.168.0.100) de se connecter, donc nous ajoutons 192.168.0.100 à la ligne allowed_hosts :
| [...] # ADRESSES DES HÔTES AUTORISÉS # Il s'agit d'une liste optionnelle d'adresses IP ou de noms d'hôtes # qui sont autorisés à communiquer avec le démon NRPE. # # Remarque : Le démon ne fait qu'une vérification rudimentaire de l'IP # du client. Je vous recommande fortement d'ajouter des entrées dans votre /etc/hosts.allow # pour autoriser uniquement l'hôte spécifié à se connecter au port # sur lequel vous exécutez ce démon. # # REMARQUE : Cette option est ignorée si NRPE fonctionne sous inetd ou xinetd allowed_hosts=127.0.0.1,192.168.0.100 [...] |
(Si vous ne faites pas cela, vous obtiendrez l’erreur suivante lorsque vous exécuterez
/usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101sur server1 :
root@server1:/etc/nagios-plugins/config# /usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101
CHECK_NRPE: Erreur - Impossible de terminer la poignée de main SSL.
root@server1:/etc/nagios-plugins/config#)
De plus, server1 doit être autorisé à passer des arguments de ligne de commande au serveur NRPE, donc toujours dans le même fichier, nous définissons dont_blame_nrpe à 1 :
| [...] # TRAITEMENT DES ARGUMENTS DE COMMANDE # Cette option détermine si le démon NRPE autorisera ou non les clients # à spécifier des arguments pour les commandes qui sont exécutées. Cette option ne fonctionne que # si le démon a été configuré avec l'option de script configure --enable-command-args. # # * ACTIVER CETTE OPTION REPRÉSENTE UN RISQUE DE SÉCURITÉ ! * # Lisez le fichier SECURITY pour des informations sur certaines des implications de sécurité # de l'activation de cette variable. # # Valeurs : 0 = ne pas autoriser les arguments, 1 = autoriser les arguments de commande dont_blame_nrpe=1 [...] |
(Si vous ne faites pas cela, vous verrez l’erreur
CHECK_NRPE : 0 octets reçus du démon. Vérifiez les journaux du serveur distant pour des messages d'erreur.pour de nombreux contrôles de service à distance dans l’interface web Icinga, et dans /var/log/syslog sur server2, vous verrez ces erreurs :
Aug 23 14:20:20 server2 nrpe[11496]: Erreur : La demande contenait des arguments de commande, mais l'option d'argument n'est pas activée !
Aug 23 14:20:20 server2 nrpe[11496]: La demande du client était invalide, abandon...)
Enfin, nous devons ajouter des définitions de commandes pour chaque vérification de service que nous voulons exécuter sur server2 et qui n’est pas déjà définie. Je veux exécuter les vérifications check_procs, check_all_disks et check_mysql_cmdlinecred sur server2 ; celles-ci ne sont pas définies dans /etc/nagios/nrpe.cfg, donc je les ajoute maintenant (je veux également exécuter les vérifications check_users et check_load, mais celles-ci sont déjà définies) :
| [...] command[check_procs]=/usr/lib/nagios/plugins/check_procs -w 250 -c 400 command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w '20%' -c '10%' -e command[check_mysql_cmdlinecred]=/usr/lib/nagios/plugins/check_mysql -H localhost -u 'nagios' -p 'howtoforge' [...] |
(Si vous ne faites pas cela, vous obtiendrez des erreurs comme
NRPE : Commande 'check_all_disks' non définie
NRPE : Commande 'check_mysql_cmdlinecred' non définie
NRPE : Commande 'check_procs' non définiedans l’interface web Icinga.)
Comme vous le voyez, j’ai codé en dur les arguments de ligne de commande car l’utilisation de variables comme command[check_procs]=/usr/lib/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ n’a pas fonctionné pour moi. Mais encore, lorsque nous configurons les vérifications de service pour server2 sur server1, nous devrons passer des arguments de ligne de commande à ces vérifications ; server2 les ignorera car j’ai codé en dur les arguments de ligne de commande dans /etc/nagios/nrpe.cfg, mais si vous les laissez de côté, vous obtiendrez des erreurs comme /usr/lib/nagios/plugins/check_nrpe : l’option nécessite un argument – ‘a’ dans l’interface web Icinga.
Maintenant, enregistrez le fichier et redémarrez le serveur NRPE :
/etc/init.d/nagios-nrpe-server restartMaintenant, vérifiez si le serveur NRPE écoute :
netstat -tap | grep nrperoot@server2:~# netstat -tap | grep nrpe
tcp 0 0 *:nrpe *:* LISTEN 2132/nrpe
root@server2:~#Maintenant, revenez à server1…
server1 :
… et vérifiez s’il peut se connecter au serveur NRPE sur server2 :
/usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101La sortie devrait être la suivante en cas de succès :
root@server1:~# /usr/lib/nagios/plugins/check_nrpe -H 192.168.0.101
NRPE v2.12
root@server1:~#Maintenant, revenez à server2 :
server2 :
Nous voulons vérifier MySQL sur server2 ; parce que nous utilisons le démon NRPE, nous pouvons exécuter la vérification localement sur server2, c’est-à-dire que nous n’avons pas à ouvrir MySQL à l’extérieur pour permettre à server1 d’exécuter la vérification. Par conséquent, je crée l’utilisateur MySQL nagios pour localhost et localhost.localdomain au lieu de pour 192.168.0.100 et server1.example.com :
mysql -u root -pGRANT USAGE ON *.* TO nagios@localhost IDENTIFIED BY 'howtoforge';
GRANT USAGE ON *.* TO [email protected] IDENTIFIED BY 'howtoforge';
FLUSH PRIVILEGES;quit;Maintenant, nous revenons à server1…
server1 :
… et créons la configuration Icinga pour server2 :
vi /etc/icinga/objects/server2_icinga.cfg| define host{ use generic-host host_name server2.example.com alias server2 address 192.168.0.101 } define service{ use generic-service host_name server2.example.com service_description PING check_command check_ping!100.0,20%!500.0,60% } define service{ use generic-service ; Nom du modèle de service à utiliser host_name server2.example.com service_description Espace disque check_command check_nrpe!check_all_disks!20%!10% } define service{ use generic-service host_name server2.example.com service_description Utilisateurs actuels check_command check_nrpe!check_users!20!50 } define service{ use generic-service ; Nom du modèle de service à utiliser host_name server2.example.com service_description Total des processus check_command check_nrpe!check_procs!250!400 } define service{ use generic-service ; Nom du modèle de service à utiliser host_name server2.example.com service_description Charge actuelle check_command check_nrpe!check_load!5.0!4.0!3.0!10.0!6.0!4.0 } define service{ use generic-service host_name server2.example.com service_description MySQL check_command check_nrpe!check_mysql_cmdlinecred!nagios!howtoforge } define service{ use generic-service host_name server2.example.com service_description SMTP check_command check_smtp } define service{ use generic-service host_name server2.example.com service_description POP3 check_command check_pop } define service{ use generic-service host_name server2.example.com service_description IMAP check_command check_imap } |
(Comme je l’ai mentionné précédemment, bien que j’aie codé en dur les arguments de ligne de commande pour certaines commandes dans /etc/nagios/nrpe.cfg sur server2, nous devons toujours ajouter des arguments de ligne de commande à certaines de ces vérifications ici.)
Comme vous le voyez, j’utilise check_nrpe pour certaines vérifications et passe la vérification réelle (comme check_all_disks) comme argument de ligne de commande à check_nrpe. Ce sont les vérifications qui seront exécutées localement par le serveur NRPE sur server2. check_nrpe n’est pas nécessaire pour toutes les vérifications. Les vérifications qui testent une connexion de l’extérieur comme check_ping ou check_smtp peuvent être exécutées depuis server1.
Pour vérifier les services SSH et HTTP sur server2, nous pouvons SOIT ajouter les strophes suivantes à /etc/icinga/objects/server2_icinga.cfg…
| [...] define service { use generic-service host_name server2.example.com service_description SSH check_command check_ssh } define service { use generic-service host_name server2.example.com service_description HTTP check_command check_http } |
… OU nous ajoutons server2.example.com aux groupes d’hôtes http-servers et ssh-servers dans /etc/icinga/objects/hostgroups_icinga.cfg :
vi /etc/icinga/objects/hostgroups_icinga.cfg| # Quelques définitions de groupes d'hôtes génériques # Un groupe d'hôtes simple avec un joker define hostgroup { hostgroup_name all alias Tous les serveurs members * } # Une liste de vos serveurs Debian GNU/Linux define hostgroup { hostgroup_name debian-servers alias Serveurs Debian GNU/Linux members localhost,server2.example.com } # Une liste de vos serveurs web define hostgroup { hostgroup_name http-servers alias Serveurs HTTP members localhost,server2.example.com } # Une liste de vos serveurs accessibles par ssh define hostgroup { hostgroup_name ssh-servers alias Serveurs SSH members localhost,server2.example.com } |
Redémarrez Icinga :
/etc/init.d/icinga restartAprès cela, vous devriez trouver server2 dans l’interface web Icinga :

Voici les vérifications de service pour server2 :

Si vous avez ajouté server2 aux groupes d’hôtes, il devrait également être répertorié sous l’aperçu des services pour tous les groupes d’hôtes :

5 Liens
- Icinga : https://www.icinga.org/
- Documentation Icinga : http://docs.icinga.org/latest/en/
- Nagios : http://www.nagios.org/
- Debian : http://www.debian.org/
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.