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

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 PiOpens in a new tab.
    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 CoreOpens in a new tab.
Nagios PluginsOpens in a new tab.

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 PiOpens in a new tab.
  • 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

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 Opens in a new tab.(regardez notamment pour les plugins en rapport avec SNMP)

Pour cet exemple, je vais surveiller la synchronisation du tempsOpens in a new tab. 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)

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 iciOpens in a new tab. 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.

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)

Restez connectés!

Tenez vous informés des dernières nouveautés en vous inscrivant ici. Pas de panique, il s'agit seulement d'un mail par mois histoire de rester à jour :)

[sibwp_form id=3]

Patrick Fromaget

Je suis l'auteur principal et le créateur de RaspberryTips. Mon but est de vous aider sur tous vos problèmes qui concernent Raspberry Pi en publiant des guides détaillés et des tutoriels rapides. Dans la vraie vie, je suis administrateur système (Linux principalement) avec une solide expérience dans le développement web.

Recent Content