Comment installer Nagios sur Raspberry Pi ? (supervision)
Aujourd’hui j’avais envie d’utiliser mon Raspberry Pi pour la supervision de mon réseau avec Nagios
Mais en faisant quelques recherches, je me suis vite perdu pour savoir quelle option utiliser pour cela
J’ai lu un bon nombre de tutoriels à propos de NEMS et Nagios 3, mais rien de parfait utilisant la dernière version de Nagios
J’ai finalement réussi à trouver ce qui me semble la meilleure solution, et je vais donc vous la partage ici, en vous expliquant tout étape par étape
Comment utiliser un Raspberry Pi pour la supervision du réseau ?
Le meilleur moyen pour la surveillance réseau avec un Raspberry Pi est d’utiliser le logiciel Nagios
Nagios fonctionne comme un détecteur de panne, il va vérifier quelque chose à intervalle régulier (disons toutes les 5 minutes) et vous prévenir si jamais cette vérification ne se passe pas comme prévu
Dans cet article, je vais vous expliquer comment installer Nagios sur votre Raspberry Pi afin d’effectuer ce genre de tests sur le statut de votre réseau
Mais je vais commencer par lister tous les moyens possibles d’avoir Nagios et vous montrer pourquoi la plupart de ces solutions ne sont pas vraiment utilisables
Quel est le meilleur moyen de faire tourner Nagios sur Raspberry Pi ?
Je vais donc commencer par expliquer les différentes manières d’installer Nagios « rapidement » sur lesquels je suis tombé, et pourquoi ce ne sont pas vraiment les options idéales
NagiosPi ?
Mes premières recherches m’ont rapidement amené sur « NagiosPi »
J’étais intéressé de voir que Nagios avait créé une version spécifique pour le Raspberry Pi
C’est la raison principale qui m’a donné envie de l’installer sur mon Pi d’ailleurs
Mais j’ai été vite refroidi, en voyant qu’il s’agissait d’un projet annexe, sans mise à jour depuis 2013
Ce n’était pas viable pour moi, je sais que Nagios publie de nouvelles versions au minimum chaque année, donc il me fallait quelque chose de plus récent
Apt ?
Ensuite j’ai regardé dans les dépôts Raspbian ce que je pouvais avoir
Est-ce que le mec qui avait lancé le projet NagiosPi l’aurait arrêté car il a été ajouté dans les dépôts officiels ?
Peut-être, mais je n’ai trouvé que la version 3 de Nagios dans les sources apt par défaut, alors que la dernière version à l’heure ou j’écris ces lignes était Nagios 4.4.2
Ça aurait pu être le plus simple pour installer Nagios, mais je voulais la dernière version ou du moins pas très loin de celle-ci
Note : Depuis Raspbian 10 Buster, la version disponible dans apt est plus récente. Néanmoins, cela reste mis à jour que très peu souvent, donc ça ne change pas tellement ma conclusion.
NEMS ?
En continuant mes recherches, j’ai ensuite trouvé une carte SD pré-configurée avec Nagios et pas mal d’autres outils de supervision
C’était le projet NEMS Linux, NEMS étant l’abréviation de « Nagios Enterprise Monitoring Server »
Ça semblait cool, non ?
Oui j’ai essayé, mais ce n’était pas utilisable sur Raspberry Pi
Même avant de configurer quoi que ce soit, j’avais énormément de load, et donc impossible de faire quoi que ce soit sans empirer la situation
Sans doute qu’il y a trop d’outils inclus pour le Raspberry Pi
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.

Compiler les sources ?
La dernière solution à laquelle j’ai pensé était d’installer Nagios manuellement depuis les sources
Mais je me suis dit que ça allait être compliqué et prendre pas mal de temps à compiler pour mon pauvre Raspberry Pi
Hum … en fait pas si long que ça, peut être 30 min maximum pour avoir tout fonctionnel et en utilisant la toute dernière version
Donc pour moi, c’est vraiment la meilleure solution que j’ai trouvée, et je vais maintenant vous expliquer comme installer cela sur votre Raspberry Pi
Comment installer Nagios sur Raspberry Pi ?
Installation de Raspbian
La première chose qu’il va vous falloir, c’est un système d’exploitation 🙂
Démarrez avec Raspbian, je pense que Raspbian Lite sera parfait si vous dédiez cette carte SD à Nagios, mais sinon la version Desktop fera l’affaire également
Voici les premières étapes à suivre avant d’aller plus loin :
- Installez Raspbian sur votre Raspberry Pi
Si vous l’avez déjà alors c’est parfait - Changez le mot de passe par défaut, et configurez les options systèmes suivant vos préférences (langue, clavier, adresse IP, etc.)
- Activez SSH et configurez-le pour un démarrage automatique si possible
sudo service ssh start
- Vérifiez que la connexion SSH est fonctionnelle depuis votre ordinateur
Il sera plus simple de copier/coller les commandes depuis votre ordinateur - Mettez ensuite votre Raspberry Pi à jour :
sudo apt update
sudo apt upgrade
sudo reboot
Nous voilà prêts à démarrer
Téléchargements et pré-requis
Nagios est une interface web, donc nous aurons besoin de Apache et PHP :sudo apt install apache2 libapache2-mod-php
Ensuite nous avons besoin de télécharger deux choses avant de passer à l’installation :
- Nagios Core : c’est le programme principal qu’il nous faudra installer
- Nagios Plugins : cela vous installera directement les premiers tests basiques à utiliser tel quel, vous éviter de créer tous les scripts manuellement
Comme annoncé, nous allons donc télécharger les fichiers sources, rendez-vous sur les deux sites web en question pour le téléchargement :
Nagios Core
Nagios Plugins
Puis téléchargez la dernière version avec wget sur votre Raspberry Pi :mkdir /home/pi/Downloads
cd /home/pi/Downloads
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-A.B.C.tar.gz
wget http://nagios-plugins.org/download/nagios-plugins-X.Y.Z.tar.gz
Adaptez bien sur les numéros de versions en fonction de ce que vous avez trouvé sur le site
Nous voilà prêts à passer à la suite de l’installation
Installation de Nagios
Créer l’utilisateur et le groupe pour Nagios
Nagios aura besoin d’utiliser un utilisateur dédié, et un groupe qui contiendra les utilisateurs Nagios et Apache :
sudo useradd -m -s /bin/bash nagios
sudo groupadd nagcmd
sudo usermod -a -G nagcmd nagios
sudo usermod -a -G nagcmd www-data
Compiler et installer Nagios
Nous devons maintenant extraire les fichiers des archivés précédemment téléchargées, compiler les sources et installer Nagios sur le Raspberry Pi
Voici les commandes à utiliser pour tout cela :
- Vérifiez que vous êtes bien dans le bon dossier :
cd /home/pi/Downloads
- Décompressez les fichiers téléchargés :
tar zxvf nagios-A.B.C.tar.gz
Encore une fois, indiqué bien le nom du fichier tel que téléchargé (avec le bon numéro de version donc) - Lancez la compilation :
cd nagios-4.4.2/
./configure --with-command-group=nagcmd
make all
Cela peut prendre quelques minutes - Vous pouvez ensuite passer à l’installation :
sudo make install
sudo make install-init
sudo make install-config
sudo make install-commandmode
Nous voici à la fin de l’installation de Nagios Core
Il nous reste à configurer Apache pour pouvoir accéder à l’interface web de Nagios
Configuration de Apache pour Nagios
- Activez le module CGI pour Apache
sudo a2enmod cgi
- Copiez la configuration Apache vers le dossier Apache
sudo cp sample-config/httpd.conf /etc/apache2/sites-enabled/nagios.conf
- Créez le premier utilisateur pour l’accès à l’interface web :
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
- Redémarrez Apache :
sudo service apache2 restart
- Vérifiez ensuite que vous avez bien accès à la page web Nagios
Ouvrez la page http://<IP>/nagios
En remplaçant <IP> par l’adresse IP du Raspberry Pi - Vous devriez avoir quelque chose comme ça :
L’erreur est normale, on va régler ça tout de suite
L’installation de Nagios est presque terminée, il nous reste plus qu’à démarrer le service Nagios
Démarrage du service Nagios
Nagios a un service qui doit tourner en arrière-plan pour pouvoir lancer les tests à la fréquence déterminée (toutes les 5 minutes par exemple)
Voici la commande à utiliser pour démarrer ce service :sudo service nagios start
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Et si vous voulez démarrer Nagios automatiquement au démarrage :sudo ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
En rafraichissant la page web, vous devriez maintenant avoir le message « Daemon running with PID XXX »
Tout est prêt pour utiliser Nagios, on va simplement ajouter les plugins avant de passer à la configuration
Installation des plugins Nagios
Voici la procédure à suivre pour l’installation des plugins Nagios :
- Décompressez le second fichier téléchargé précédemment :
tar zxvf nagios-plugins-X.Y.Z.tar.gz
Adaptez le numéro de version suivant celle téléchargée - Compilez et installez avec :
cd nagios-plugins-X.Y.Z/
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
sudo make install
Tous les plugins sont maintenant disponibles dans le dossier /usr/local/nagios/libexec/ et prêts à être utilisé avec Nagios
Il faudra peut-être redémarrer Nagios pour les rendre disponible :sudo service nagios restart
Comment configurer Nagios suivant vos besoins ?
Le vocabulaire de Nagios
Nagios utilise un vocabulaire très particulier pour définir chaque élément de la configuration
Il n’est pas toujours facile de prendre cela en main lorsqu’on débute, alors voici quelques précisions :
- Commande : une commande est en gros un script dans les plugins Nagios. Il faut le définir dans Nagios avant de l’utiliser avec les paramètres exacts (exemple de commande : check_load)
- Service : un service est un test qui s’applique à un ou plusieurs ordinateurs, et qui utilise une commande pour réaliser sa vérification (exemple de service : vérifier si le load est au-dessus de 10 sur le Raspberry Pi)
- Hôte : un hôte est un ordinateur, un serveur ou n’importe quel appareil avec une adresse IP
- Groupe d’hôtes : il est possible de définir des groupes de machines (hostgroup), par exemple « Raspberry Pi », et d’appliquer les même services à tous les hôtes de ce groupe
Nous allons maintenant voir comme configurer chaque élément dans la configuration de Nagios
Pour l’exemple, je vais superviser mon Raspberry Pi Zero depuis le Raspberry Pi 3B+ sur lequel Nagios est installé
Préparation de l’hôte
Nagios utilise principalement le protocole SNMP pour se connecter aux autres machines et récupérer les informations nécessaires
Nous devons donc installer SNMP sur chaque machine avant de les ajouter dans la configuration de Nagios
Cela n’est pas indispensable, cela dépendra des services que vous avez l’intention de créer par la suite
Si c’est juste pour vérifier que l’hôte répond, un ping suffira et SNMP n’est pas utile
Dans tous les cas, je vais vous montrer comment faire, comme ça vous aurez toutes les explications nécessaires si besoin
Dans mon cas, j’ai donc suivi ces étapes sur le Raspberry Pi Zero :
- Connectez-vous à l’hôte en SSH
- Installez le paquet SNMP :
sudo apt install snmpd
- Rendez-vous dans le dossier de configuration
cd /etc/snmp
- Supprimez (ou sauvegardez) le fichier de configuration SNMP :
sudo rm snmpd.conf
- Créez un nouveau fichier :
sudo nano snmpd.conf
- Collez ces lignes à l’intérieur du fichier de configuration SNMP :
com2sec readonly default RASPBERRYTIPS
group MyROGroup v1 readonly
group MyROGroup v2c readonly
view all included .1 80
access MyROGroup "" any noauth exact all none none
sysName Pi Zero
Remplacez RASPBERRYTIPS par la communauté que vous souhaitez utiliser
Et remplacez le sysName par le nom de votre hôte ou une description
Il y a plein d’autres options possibles dans snmpd.conf, mais pour ce premier test on va rester simple - Sauvegardez et quittez (CTRL+O, CTRL+X)
- Redémarrez SNMP pour appliquer les changements :
sudo service snmpd restart
Nous pouvons maintenant repasser sur le Raspberry Pi pour la configuration de Nagios
Ajouter un hôte
- Retournez sur le Raspberry Pi qui héberge Nagios
- Rendez-vous dans le dossier de configuration des éléments de Nagios :
cd /usr/local/nagios/etc/objects
- Créez un nouveau fichier pour notre hôte, pizero.cfg pour moi :
sudo nano pizero.cfg
- Copiez ces lignes à l’intérieur :
define host {
use linux-server ; Host group to use
host_name Pi Zero ; Name of this host
alias pizero ; Alias
address 192.168.1.18 ; IP Address
}
Il s’agit vraiment de la configuration la plus basique possible, avec le nom de la machine, un alias et son adresse IP
Nous l’ajoutons également au groupe « linux-server » afin qu’il hérite des services pré-définis pour les serveurs Linux
- Sauvegardez et quittez (CTRL+O, CTRL+X)
- Nous devons maintenant prévenir Nagios qu’il y a un nouveau fichier à prendre en compte
Pour cela, ajoutez cette ligne dans le fichier/usr/local/nagios/etc/nagios.cfg (juste après localhost.cfg par exemple) :cfg_file=/usr/local/nagios/etc/objects/pizero.cfg
- Puis redémarrez Nagios :
sudo service nagios restart
- De retour dans l’interface Nagios, dans le menu « Hosts », vous devriez voir apparaître une nouvelle ligne :
Nagios supervise maintenant la réponse au ping pour notre nouvel hôte, mais nous voulons plus 🙂
Nous allons donc créer un nouveau service à l’intérieur, en commençant par créer la commande à associer
Ajouter une commande
Précédemment dans ce tutoriel, vous avez téléchargé et installé les plugins Nagios
Les plugins Nagios fournissent de nombreuses commandes pour la vérification de l’hôte local (notre Raspberry Pi), mais pas trop pour les hôtes distants
Il est aussi possible de télécharger d’autres commandes sur ce site web (regardez notamment pour les plugins en rapport avec SNMP)
Pour cet exemple, je vais surveiller la synchronisation du temps entre mes deux Raspberry Pi
Voici les étapes à suivre pour ajouter une commande dans Nagios :
- Rendez-vous dans le dossier des plugins :
cd /usr/local/nagios/libexec
- Lancez la commande suivante sans paramètres :
./check_ntp
- Notez le message d’aide, qui vous donnera les paramètres à utiliser
check_ntp -H <host> [-w <warn>] [-c <crit>] [-j <warn>] [-k <crit>] [-4|-6] [-v verbose]
Je sais donc que je dois spécifier l’adresse IP dans le paramètre -H
Et éventuellement je peux ajouter des seuils pour le niveau warning et critical avec -w et -c
Les autres options ne me semblent pas utiles dans mon cas - Ouvrez le fichier de configuration des commandes :
sudo nano /usr/local/nagios/etc/objects/commands.cfg
- Si la commande n’est pas déjà présente, il faudra ajouter ces lignes :
define command {
command_name check_ntp
command_line $USER1$/check_ntp -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$
} - Sauvegardez puis redémarrez Nagios
sudo service nagios restart
- Vérifiez que la commande est maintenant présente dans Nagios
- Allez sur l’interface web
- Cliquez sur « Configuration » dans le menu de gauche
- Cliquez sur « Commands » dans la liste et « Continue »
- Vous devriez voir « check-ntp » dans la liste (ou le nom de la commande ajoutée)
La commande est maintenant disponible pour l’utiliser sur notre Raspberry Pi Zero, mais avant il faudra créer un service pour l’appliquer
Ajouter un service
Pour créer un nouveau service, les étapes sont à peu près les mêmes :
- Ouvrez le fichier de configuration :
sudo nano /usr/local/nagios/etc/objects/pizero.cfg
En modifiant bien sur le nom du fichier si vous l’aviez nommé autrement - Collez les lignes suivantes :
define service {
use local-service ; Name of service template to use
host_name Pi Zero
service_description Time synchronization
check_command check-ntp!1!5
}
N’oubliez pas d’adapter ces lignes à votre configuration précédente si besoin
Sur la ligne check_command, on ajoute les arguments en les séparant par un point d’exclamation - Sauvez et quittez
- Testez votre configuration :
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Cela vous évitera de planter Nagios au redémarrage s’il y a une petite erreur de syntaxe 🙂 - Redémarrez Nagios :
sudo service nagios restart
Maintenant dans le détail de votre hôte sur l’interface de Nagios, vous devriez voir le nouveau service :

Vous avez maintenant compris comment créer un hôte, une commande et un service, vous êtes prêt à faire n’importe quoi sur Nagios
N’hésitez pas à télécharger des plugins supplémentaires sur Internet, ou même les créer vous-même si vous vous y connaissez un peu (c’est rien de bien plus méchant qu’un script vous verrez)
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Vous voulez discuter avec d'autres passionnés de Raspberry Pi ? Rejoignez la communauté, partagez vos projets en cours et posez vos questions sur le forum (en anglais).
Questions liées
Est-il possible de créer la configuration de Nagios directement depuis l’interface ? Malheureusement non, Nagios ne fournit pas d’outil de configuration web dans la version Core. Il existe par contre des outils de configuration tierces que vous pouvez installer. Celui que j’utilise c’est Thruk. Je ne l’ai pas testé sur Raspberry Pi, mais vous pouvez le télécharger ici si vous voulez essayer.
Est-il possible de superviser des ordinateurs sous Windows ou autre ? Oui. Vous pouvez monitorer n’importe quel équipement réseau tant que vous avez un moyen de le faire à distance. Il est possible d’installer SNMP sur Windows, et certains switchs et imprimantes sont également compatibles.
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Conclusion
Et voilà ! Vous savez maintenant comment installer et configurer un serveur Nagios sur votre Raspberry Pi pour la supervision de votre réseau
En suivant cette solution, vous avez la dernière version de Nagios et aucune charge excessive (j’ai actuellement un load de 0.00 sur mon Raspberry Pi ^^)
Une fois Nagios installé, c’est très similaire à un Nagios sur serveur
Donc n’hésitez pas à regarder les tutoriels plus génériques pour aller plus loin (pas forcément en lien avec le Raspberry Pi)
Pour aller plus loin, l’utilisation de Grafana pour la supervision est aussi un outil intéressant à tester. Cliquez sur le lien pour en savoir plus au sujet de cette application.