Tutoriel : comment surveiller proactivement vos systèmes avec Nagios

Apprenez à installer et à utiliser Nagios pour surveiller les ressources IT de votre entreprise. Suivez ces étapes afin de mieux vous préparer à détecter les problèmes, avant qu’ils ne deviennent incontrôlables.

Les administrateurs IT doivent aujourd’hui adopter une attitude proactive en surveillant de manière intensive et continue l’infrastructure IT. Il leur appartient de détecter rapidement les problèmes potentiels et d’éviter aux entreprises de coûteuses pannes prolongées ou des pertes de données.

Nagios est un outil libre de monitoring qui permet aux administrateurs de repérer des erreurs systèmes avant qu’elles ne provoquent de véritables catastrophes. Dans ce tutoriel, nous détaillons les premières étapes d’installation et de configuration des éléments suivants :

  • Tous les logiciels requis par Nagios Core sur un serveur Linux basé sur Debian ;
  • Nagios Core sur un serveur Debian et le serveur Nagios ;
  • l'exécuteur de plugin distant Nagios (NRPE) sur un serveur Linux Debian distinct, l'hôte Nagios et le serveur Nagios ;
  • les Plugins Nagios sur l'hôte Nagios ainsi que sur le serveur Nagios.

Nous effectuerons des tests pour chaque étape du processus afin de nous assurer que les installations et les configurations données en exemple fonctionnent. À la fin de ce tutoriel, nous aurons un serveur Nagios capable de surveiller un hôte Nagios.

Bref tour d’horizon de Nagios

Lancé en 2002, Nagios est le standard à l’origine de tous les systèmes actuels de surveillance des infrastructures. Alors qu’il était initialement conçu pour fonctionner uniquement sous Linux, Nagios est maintenant compatible avec des variantes telles que FreeBSD, Solaris, Apple OS X et IBM Power.

Nagios est disponible en deux versions : Nagios Core et Nagios XI. Nagios Core, la version libre est idéale pour les PME et les startups. Nagios XI, la version propriétaire payante, offre des fonctionnalités avancées. Les utilisateurs peuvent obtenir des graphiques, des rapports et planifier l’utilisation de ressources. C’est un bon choix pour les entreprises ayant des exigences strictes en matière de rapports et d’audits comme les institutions financières et les entreprises qui traitent des données personnelles de santé.

Nagios gère les métriques telles que l'espace disque, l'activité réseau, la mémoire et d'autres services de base sur les serveurs. L’outil facilite la surveillance des services et d’applications spécifiques tels que Secure Socket Shell (SSH), Apache, SMTP, CRM et les dispositifs de reprise après sinistre.

Souvent les nouveaux utilisateurs de Nagios ne savent pas quels composants, services et équipements réseaux de leur infrastructure ils doivent surveiller en premier lieu. Pour éviter de se sentir dépassés, commencez par les composants critiques. Avec Nagios, les administrateurs informatiques peuvent facilement ajouter, modifier et supprimer des composants.

Les prérequis pour mener un projet Nagios

Les équipements nécessaires pour exécuter avec succès les étapes décrites dans ce tutoriel sont les suivants :

  • Deux serveurs Debian en état de marche (vous devez avoir les accès root)
  • Un accès à Internet
  • Au minimum une connaissance partielle de l’invite de commande Linux.

Comment installer et configurer Nagios Core

Tout d’abord, il convient d’installer le serveur Nagios Core. Malgré le fait que l’outil de monitoring permet de surveiller de multiples OS, ce serveur doit se reposer sur une variante Linux ou Unix telle que FreeBSD ou Solaris. Dans ce tutoriel, nous installons Nagios sur un serveur Ubuntu 19.10, mais l’outil fonctionne avec n’importe quelle distribution basée sur Debian.

Ensuite, mettez à jour l’index du cache du dépôt et installez les dépendances Nagios.

# sudo apt update
# sudo apt install -y build-essential apache2 php openssl perl make php-gd libgd-dev libapache2-mod-php libperl-dev libssl-dev daemon wget apache2-utils unzip

Maintenant, il faut ajouter des groupes utilisateurs, ceux réservés à Nagios et nagcmd. Chaque groupe doit disposer d’un utilisateur. Nous allons également ajouter l’utilisateur Apache www-data aux groupes Nagios et nagcmd.

# sudo useradd nagios
# sudo groupadd nagcmd
# sudo usermod -a -G nagcmd nagios
# sudo usermod -a -G nagios,nagcmd www-data

Téléchargez la dernière version de Nagios Core, la release 4.4.5 à la date de publication de cet article, puis procédez à son extraction.

# cd /tmp
# wget [https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.5.tar.gz](https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.5.tar.gz)
# tar -zxvf nagios-4.4.5.tar.gz

Ensuite, compilez Nagios depuis la source.

# cd /tmp/nagios-4.4.5/
# sudo ./configure --with-nagios-group=nagios --with-command-group=nagcmd --with-httpd_conf=/etc/apache2/sites-enabled/

Une fois la tâche terminée, l’invite de commande Linux affiche un résumé de la configuration.

Nagios configuration summary

À partir de là, il convient de construire les fichiers Nagios et de les installer.

# sudo make all
# sudo make install

Ensuite, installez init et les fichiers de configuration des commandes externes.

# sudo make install-init
# sudo make install-config
# sudo make install-commandmode
# sudo make install-webconf
# sudo /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-available/nagios.conf

Afin de recevoir des alertes, éditez le fichier contacts.cfg (/usr/local/nagios/etc/objects/contacts.cfg) et remplacez nagios@localhost par l’e-mail de votre choix.

define contact { 
contact_name nagiosadmin ; Short name of user 
use generic-contact ; Inherit default values from generic-contact template (defined above) 
alias Nagios Admin ; Full name of user 
email nagios@localhost ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ****** 
}

L’étape suivante consiste à créer et vérifier le mot de passe administrateur de Nagios. Il sert à se connecter à l’interface web de l’outil.

# sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Supprimez le commentaire de la ligne dans /usr/local/nagios/etc/nagios.cfg pour permettre la surveillance des serveurs distants.

# cfg_dir=/usr/local/nagios/etc/servers

Puis, créez un répertoire serveur.

# sudo mkdir -p /usr/local/nagios/etc/servers

Utilisez les deux lignes de codes suivantes pour activer les modules Apache du serveur Nagios.

# sudo a2enmod rewrite
# sudo a2enmod cgi

Redémarrez le serveur Apache et lancez celui associé à Nagios Core.

# service apache2 restart
# service nagios start

Tester Nagios

Maintenant que l’installation touche à sa fin, il convient de la tester. Pour ce faire, entrez la commande suivante.

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Le résultat devrait ressembler à celui ci-dessous.

Nagios test code resultat

Accéder à l'interface Web de Nagios Core

Une fois que le serveur Nagios Core est installé et configuré, nous pouvons consulter les rapports pour une surveillance locale basique.

Ouvrez votre navigateur Web et tapez localhost/nagios dans la barre URL.

Nagios Core website login

Tapez nagiosadmin et le mot de passe que vous avez créé un peu plus tôt. Cliquez sur « se connecter » (ou sign in en anglais).

Nagios Core splash screen

L’écran d’accueil de Nagios Core apparaîtra. Notez que la coche verte au milieu de l’interface indique le bon fonctionnement de l’outil, tout comme le numéro d’identification du processus, ou PID. Le cadre de gauche donne un aperçu des différentes options, services et paramètres offerts par Nagios Core.

Même si un serveur distant n’est pas configuré, Nagios affiche automatiquement quelques métriques basiques sur l’hôte local, le serveur Nagios. Pour obtenir plus de détails, cliquez sur « Hosts » dans le cadre de gauche.

Nagios hosts dashboard

Le tableau de bord montre qu'un hôte est actif et que huit services sont actuellement surveillés. Il affiche également la date de la dernière vérification, la durée de fonctionnement du serveur et quelques informations sur son état. Pour consulter les services, cliquez sur le lien dans le menu de gauche.

Nagios services

Voici le tableau de bord consacré aux hôtes. Il affiche des détails sur le statut des huit fameux services par défaut automatiquement configurés par Nagios Core : La charge, le nombre d’utilisateurs, le statut HTTP, le PING, la partition racine, le SSH, l’utilisation des Swap et le nombre de processus. Il est possible d’obtenir davantage d’informations en cliquant sur le lien du service à surveiller.

Installer et configurer NRPE

Il est crucial que l’exécuteur de plugin distant (NRPE) et que les plugins Nagios soient installés sur tous les serveurs (dont celui réservé à Nagios) et les stations de travail que vous prévoyez de surveiller. Le NRPE sert à éxécuter des plugins sur des clients de systèmes distants. Le serveur Nagios reçoit les résultats et affiche le tableau de bord associé.

Voici comment installer le NRPE sur l’une des machines Linux distantes. D’abord téléchargez la source NRPE sur la machine distante, ou l'hôte.

#cd /tmp
# sudo wget --no-check-certificate -O nrpe.tar.gz https://github.com/NagiosEnterprises/nrpe/archive/nrpe-3.2.1.tar.gz
# tar xzf nrpe.tar.gz

Etape numéro 2, compilez le code source.

# cd /tmp/nrpe-nrpe-3.2.1/
# sudo ./configure --enable-command-args --with-ssl-lib=/usr/lib/x86_64-linux-gnu/

Après la fin de la compilation du code source, le résumé de la configuration apparaît.

*** Configuration summary for nrpe 3.2.1 2017-09-01 ***:

General Options:
-------------------------
NRPE port: 5666
NRPE user: nagios
NRPE group: nagios
Nagios user: nagios
Nagios group: nagios

Review the options above for accuracy. If they look okay,
type 'make all' to compile the NRPE daemon and client
or type 'make' to get a list of make options.

Terminez la tâche, créez les groupes et les utilisateurs, installez les binaires et les fichiers de configuration.

# sudo make all
# sudo make install-groups-users
# sudo make install
# sudo make install-config

Mettez à jour les fichiers des services afin que Nagios et les composants associés relient les noms des services à un numéro de port. Ici le port TCP 5666.

# sudo sh -c "echo >> /etc/services"
# sudo sh -c "sudo echo '# Nagios services' >> /etc/services"
# sudo sh -c "sudo echo 'nrpe 5666/tcp' >> /etc/services"

Installez le service/le daemon.

# sudo make install-init
# sudo systemctl enable nrpe.service

Ensuite, modifiez le fichier de configuration NRPE (/usr/local/nagios/etc/nrpe.cfg) sur l'hôte. Plus précisément, assurez-vous que vous ajoutez l'adresse IP du serveur après 127.0.0.1 à la ligne.

allowed_hosts=127.0.0.1,10.25.5.2

S'il y a plusieurs serveurs Nagios, entrez les adresses IP de chacun d'entre eux. Utilisez une virgule comme séparateur.

Ensuite, nous voulons que la valeur dans dont_blame_nrpe=0 soit changée en dont_blame_nrpe=1.

Ce changement permet aux clients de spécifier des arguments aux commandes, ce qui permet des configurations NRPE plus avancées.

Et pour notre dernière modification du fichier /etc/nagios/nrpe.cfg, assurez-vous que les commandes suivantes ne soient pas commentées.

command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200

Les plugins utilisent ces commandes afin de surveiller des services de base mentionnés plus haut dans l’article.

Enfin, lancer le daemon NRPE.

# sudo /etc/init.d/nagios-nrpe-server start

Installer et configurer les plugins Nagios

Le NRPE ne fonctionnera pas correctement sans les plugins Nagios. Téléchargez la source Nagios Plugin sur l'hôte et extrayez la tarball (une archive tar).

# cd /tmp
# sudo wget --no-check-certificate -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.3.1/nagios-plugins-2.3.1.tar.gz
# sudo tar -zxvf /tmp/nagios-plugins-2.3.1.tar.gz

Compilez le code source et installez les binaires, ainsi que les fichiers de configuration.

# cd /tmp/nagios-plugins-2.3.1/
# sudo ./configure --with-nagios-user=nagios --with-nagios-group=nagios
# sudo make
# sudo make install

Si le package Nagios Plugin que vous venez d’installer contient la plupart des plugins, certains d’entre eux requiert d’autres librairies non incluses. Pour les installer, rendez-vous sur la section dédiée du site web de Nagios.

Surveiller les hôtes Linux

Une fois le serveur Nagios et le NRPE installés, il convient de rendre l’hôte visible pour le serveur et d’inclure les services à surveiller. Pour ce faire, créez des fichiers de configuration de l'hôte dans le répertoire /usr/local/nagios/etc/servers sur le serveur Nagios.

Ce fichier de configuration définit l’hôte et les services associés dans le cadre du monitoring.

Un seul fichier peut contenir tous les hôtes et services, mais ce n'est pas recommandé. Utilisez plutôt des fichiers séparés pour chaque hôte, ainsi que des définitions spécifiques des services que vous souhaitez surveiller. Pour que l’outil reconnaisse le document, celui-ci doit être enregistré au format .cfg. Habituellement, les administrateurs reprennent le nom du serveur et y ajoute l’extension .cfg, par exemple, debian-server.cfg.

Pour commencer, copiez-coller le fichier de configuration reproduit ci-dessous. Si vous le souhaitez, sauvegardez ce template dans /usr/local/nagios/etc/servers après modification, afin de l’utiliser comme fichier de configuration d’un hôte.

# Nagios Host configuration file template
define host {
        use                          linux-server
        host_name                    mtr-ubuntu
        alias                        Ubuntu Host
        address                      192.168.1.6
        register                     1
}

define service {
      host_name                       mtr-ubuntu
      service_description             PING
      check_command                   check_ping!100.0,20%!500.0,60%
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       mtr-ubuntu
      service_description             Check Users
      check_command           check_local_users!20!50
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       mtr-ubuntu
      service_description             Local Disk
      check_command                   check_local_disk!20%!10%!/
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       mtr-ubuntu
      service_description             Check SSH
      check_command                   check_ssh
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       mtr-ubuntu
      service_description             Total Process
      check_command                   check_local_procs!250!400!RSZDT
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

Les administrateurs trouveront un panel de commandes d’hôte dans le répertoire /usr/local/nagios/etc/objects/commands.cfg pour ajouter des services supplémentaires.

Une fois le premier fichier de configuration de l'hôte terminé, vérifiez s'il n’y a pas d’erreurs.

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Si erreur il y a dans ce fichier de configuration, Nagios indiquera qu’il y a un problème.

Maintenant, redémarrez tous les services. Sur la machine distante, relancez le NRPE.

# sudo /etc/init.d/nagios-nrpe-server start

Sur le serveur Nagios, redémarrez les services Apache et Nagios.

# sudo service apache2 restart
# sudo service nagios restart

Pour tester l’outil, ouvrez un navigateur web et tapez /host.

host test

Le serveur distant devrait apparaître sur le tableau de bord avec l’hôte local, le serveur Nagios.

Nagios server dashboard

Veillez à ce que les deux serveurs surveillés soient en fonction, comme tous les services.

Services dashboard

Vérifiez que le tableau de bord pour l'hôte distant et les informations détaillées soient fournies.

Le serveur Nagios nouvellement construit peut également surveiller les serveurs Windows. Le site web d'outil propose davantage de plugins Nagios. Les équipes IT peuvent même écrire les leurs.

Pour approfondir sur Administration de systèmes