Comment installer Nagios 4 et surveiller vos serveurs sur Ubuntu 16.04

introduction

Nagios est un système de surveillance open-source populaire. Il tient un inventaire de vos serveurs et les surveille afin que vous sachiez que vos services critiques sont opérationnels. L'utilisation d'un système de surveillance tel que Nagios est un outil essentiel pour tout environnement de production. En surveillant le temps de disponibilité, l'utilisation du processeur ou l'espace disque, vous pouvez éviter les problèmes avant qu'ils ne surviennent ou avant que vos utilisateurs ne vous appellent.

Dans ce tutoriel, vous installerez et configurerez Nagios 4 de manière à pouvoir surveiller les ressources de l’hôte via l’interface Web de Nagios. Vous allez également configurer le NRPE (Nagios Remote Plugin Executor), qui s’exécute en tant qu’agent sur des hôtes distants afin que vous puissiez surveiller leurs ressources.

Conditions préalables

Pour compléter ce tutoriel, vous aurez besoin des éléments suivants:

Ce didacticiel suppose que vos serveurs ontprivate networking activés afin que la surveillance se fasse sur le réseau privé plutôt que sur le réseau public. Si vous n’avez pas activé la mise en réseau privée, vous pouvez toujours suivre ce tutoriel en remplaçant toutes les références aux adresses IP privées par des adresses IP publiques.

[[step-1 -—- Installing-nagios-4]] == Étape 1 - Installation de Nagios 4

Il existe plusieurs façons d’installer Nagios, mais nous allons installer Nagios et ses composants à partir de la source pour nous assurer d’obtenir les toutes dernières fonctionnalités, mises à jour de sécurité et corrections de bugs.

Connectez-vous à votre serveur qui exécute Apache. Nous appellerons cela lesNagios server.

ssh sammy@your_nagios_server_ip

Créez un utilisateurnagios et un groupenagcmd. Vous les utiliserez pour exécuter le processus Nagios.

sudo useradd nagios
sudo groupadd nagcmd

Ajoutez ensuite l'utilisateur au groupe:

sudo usermod -a -G nagcmd nagios

Étant donné que nous construisons Nagios et ses composants à partir des sources, nous devons installer quelques bibliothèques de développement pour compléter la construction, notamment des compilateurs, des en-têtes de développement et OpenSSL.

Mettez à jour vos listes de paquets pour vous assurer de pouvoir télécharger les dernières versions des conditions préalables:

sudo apt-get update

Ensuite, installez les packages requis:

sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev unzip

Une fois les conditions préalables installées, nous pouvons installer Nagios lui-même. Téléchargez le code source de la dernière version stable de Nagios Core. Accédez auxNagios downloads page et cliquez sur le lienSkip to download sous le formulaire. Copiez l'adresse du lien de la dernière version stable pour pouvoir la télécharger sur votre serveur Nagios.

Téléchargez la version dans votre répertoire personnel avec la commandecurl:

cd ~
curl -L -O https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.4.tar.gz

Extrayez l'archive Nagios:

tar zxf nagios-*.tar.gz

Ensuite, passez au répertoire extrait:

cd nagios-*

Avant de construire Nagios, exécutez le scriptconfigure pour spécifier l'utilisateur et le groupe que vous voulez que Nagios utilise. Utilisez l'utilisateurnagios et le groupenagcmd que vous avez créés:

./configure --with-nagios-group=nagios --with-command-group=nagcmd

[.note] #Si vous voulez que Nagios envoie des courriels avec Postfix, vous devezinstall Postfix et configurer Nagios pour l'utiliser en ajoutant--with-mail=/usr/sbin/sendmail à la commandeconfigure. Nous ne couvrirons pas Postfix dans ce didacticiel, mais si vous choisissez d'utiliser Postfix et Nagios plus tard, vous devrez reconfigurer et réinstaller Nagios pour utiliser le support Postfix.
#

Vous verrez le résultat suivant de la commandeconfigure:

Output*** Configuration summary for nagios 4.3.4 2017-08-24 ***:

 General Options:
 -------------------------
        Nagios executable:  nagios
        Nagios user/group:  nagios,nagios
       Command user/group:  nagios,nagcmd
             Event Broker:  yes
        Install ${prefix}:  /usr/local/nagios
    Install ${includedir}:  /usr/local/nagios/include/nagios
                Lock file:  /run/nagios.lock
   Check result directory:  ${prefix}/var/spool/checkresults
           Init directory:  /etc/init.d
  Apache conf.d directory:  /etc/apache2/sites-available
             Mail program:  /bin/mail
                  Host OS:  linux-gnu
          IOBroker Method:  epoll

 Web Interface Options:
 ------------------------
                 HTML URL:  http://localhost/nagios/
                  CGI URL:  http://localhost/nagios/cgi-bin/
 Traceroute (used by WAP):


Review the options above for accuracy.  If they look okay,
type 'make all' to compile the main program and CGIs.

Maintenant compilez Nagios avec cette commande:

make all

Maintenant, exécutez ces commandesmake pour installer Nagios, ses scripts d'initialisation et ses fichiers de configuration par défaut:

sudo make install
sudo make install-commandmode
sudo make install-init
sudo make install-config

Vous utiliserez Apache pour servir l'interface Web de Nagios, copiez donc l'exemple de fichier de configuration Apache dans le dossier/etc/apache2/sites-available:

sudo /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-available/nagios.conf

Afin d'émettre des commandes externes via l'interface Web vers Nagios, ajoutez l'utilisateur du serveur Web,www-data, au groupenagcmd:

sudo usermod -G nagcmd www-data

Nagios est maintenant installé. Installons un plugin qui permettra à Nagios de collecter des données provenant de divers hôtes.

[[step-2 -—- Installing-the-check_nrpe-plugin]] == Étape 2 - Installation du plugin check_nrpe

Nagios surveille les hôtes distants à l'aide de Nagios Remote Plugin Executor ou NRPE. Il se compose de deux pièces:

  • Le plugincheck_nrpe qui est utilisé par le serveur Nagios.

  • Le démon NRPE, qui s'exécute sur les hôtes distants et envoie des données au serveur Nagios.

Installons le plugincheck_nrpe sur notre serveur Nagios.

Trouvez l'URL de téléchargement de la dernière version stable de NRPE auNagios Exchange site.

Téléchargez-le dans votre répertoire personnel aveccurl:

cd ~
curl -L -O https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz

Extrayez l'archive NRPE:

tar zxf nrpe-*.tar.gz

Ensuite, passez au répertoire extrait:

cd nrpe-*

Configurez le plugincheck_nrpe:

./configure

Maintenant, construisez et installezcheck_nrpe:

make check_nrpe
sudo make install-plugin

Configurons ensuite le serveur Nagios.

[[step-3 -—- configuring-nagios]] == Étape 3 - Configuration de Nagios

Exécutons maintenant la configuration initiale de Nagios, qui implique la modification de certains fichiers de configuration et la configuration d’Apache pour servir l’interface Web de Nagios. Il vous suffit d’effectuer cette section une fois sur votre serveur Nagios.

Ouvrez le fichier de configuration principal de Nagios dans votre éditeur de texte:

sudo nano /usr/local/nagios/etc/nagios.cfg

Trouvez cette ligne dans le fichier:

/usr/local/nagios/etc/nagios.cfg

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

Décommentez cette ligne en supprimant le caractère# du début de la ligne:

/usr/local/nagios/etc/nagios.cfg

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

Enregistrez le fichier et quittez l'éditeur.

Créez maintenant le répertoire qui stockera le fichier de configuration pour chaque serveur à surveiller:

sudo mkdir /usr/local/nagios/etc/servers

Ouvrez la configuration des contacts Nagios dans votre éditeur de texte:

sudo nano /usr/local/nagios/etc/objects/contacts.cfg

Recherchez la directiveemail et remplacez sa valeur par votre propre adresse e-mail:

/usr/local/nagios/etc/objects/contacts.cfg

...
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                           your_email@your_domain.com        ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
...

Enregistrez et quittez l'éditeur.

Ensuite, ajoutez une nouvelle commande à votre configuration Nagios qui vous permet d'utiliser la commandecheck_nrpe dans les définitions de service Nagios. Ouvrez le fichier/usr/local/nagios/etc/objects/commands.cfg dans votre éditeur:

sudo nano /usr/local/nagios/etc/objects/commands.cfg

Ajoutez ce qui suit à la fin du fichier pour définir une nouvelle commande appeléecheck_nrpe:

/usr/local/nagios/etc/objects/commands.cfg

...
define command{
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Ceci définit le nom et spécifie les options de ligne de commande pour exécuter le plug-in. Vous utiliserez cette commande à l’étape 5.

Enregistrez et quittez l'éditeur.

Configurez maintenant Apache pour servir l’interface utilisateur de Nagios. Activez les modules Apacherewrite etcgi avec la commandea2enmod:

sudo a2enmod rewrite
sudo a2enmod cgi

Utilisez la commandehtpasswd pour créer un utilisateur administrateur appelénagiosadmin qui peut accéder à l'interface Web de Nagios:

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

Entrez un mot de passe à l'invite. N'oubliez pas ce mot de passe, car vous en aurez besoin pour accéder à l'interface Web de Nagios.

[.warning] #Note: Si vous créez un utilisateur avec un nom autre quenagiosadmin, vous devrez éditer/usr/local/nagios/etc/cgi.cfg et changer toutes les référencesnagiosadmin à l'utilisateur que vous créé.
#

Créez maintenant un lien symbolique pournagios.conf vers le répertoiresites-enabled. Cela active l'hôte virtuel Nagios.

sudo ln -s /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/

Ensuite, ouvrez le fichier de configuration Apache pour Nagios.

sudo nano /etc/apache2/sites-available/nagios.conf

Si vous avez configuré Apache pour servir des pages sur HTTPS, localisez les deux occurrences de cette ligne:

/etc/apache2/sites-available/nagios.conf

#  SSLRequireSSL

Décommentez les deux occurrences en supprimant le symbole#.

Si vous souhaitez restreindre les adresses IP pouvant accéder à l'interface Web de Nagios afin que seules certaines adresses IP puissent accéder à l'interface, recherchez les deux lignes suivantes:

/etc/apache2/sites-available/nagios.conf

Order allow,deny
Allow from all

Commentez-les en ajoutant les symboles# devant eux:

/etc/apache2/sites-available/nagios.conf

# Order allow,deny
# Allow from all

Ensuite, trouvez les lignes suivantes:

/etc/apache2/sites-available/nagios.conf

#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1

Décommentez-les en supprimant les symboles# et ajoutez les adresses IP ou les plages (séparées par des espaces) que vous souhaitez autoriser dans la ligneAllow from:

/etc/apache2/sites-available/nagios.conf

Order deny,allow
Deny from all
Allow from 127.0.0.1 your_ip_address

Ces lignes apparaissent deux fois dans le fichier de configuration. Veillez donc à modifier les deux occurrences. Puis enregistrez et quittez l'éditeur.

Redémarrez Apache pour charger la nouvelle configuration Apache:

sudo systemctl restart apache2

Avec la configuration Apache en place, vous pouvez configurer le service pour Nagios. Nagios ne fournit pas de fichier d’unité Systemd pour la gestion du service. Nous allons donc en créer un. Créez le fichiernagios.service et ouvrez-le dans votre éditeur:

sudo nano /etc/systemd/system/nagios.service

Entrez la définition suivante dans le fichier. Cette définition spécifie quand Nagios doit démarrer et où Systemd peut trouver l'application Nagios. En savoir plus sur les fichiers d'unité Systemd dans le didacticielUnderstanding Systemd Units and Unit Files

/etc/systemd/system/nagios.service

[Unit]
Description=Nagios
BindTo=network.target

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
User=nagios
Group=nagios
ExecStart=/usr/local/nagios/bin/nagios /usr/local/nagios/etc/nagios.cfg

Enregistrez le fichier et quittez votre éditeur.

Ensuite, démarrez Nagios et activez-le pour démarrer au démarrage du serveur:

sudo systemctl enable /etc/systemd/system/nagios.service
sudo systemctl start nagios

Nagios fonctionne maintenant, alors connectons-nous à son interface Web.

[[step-4 -—- access-the-nagios-web-interface]] == Étape 4 - Accéder à l'interface Web de Nagios

Ouvrez votre navigateur Web préféré et accédez à votre serveur Nagios en visitanthttp://nagios_server_public_ip/nagios.

Entrez les informations de connexion pour l'interface Web dans la fenêtre contextuelle qui apparaît. Utiliseznagiosadmin pour le nom d'utilisateur et le mot de passe que vous avez créé pour cet utilisateur.

Après authentification, vous verrez la page d'accueil par défaut de Nagios. Cliquez sur le lienHosts dans la barre de navigation de gauche pour voir quels hôtes Nagios surveille:

Nagios Hosts Page

Comme vous pouvez le constater, Nagios ne surveille que «localhost» ou lui-même.

Surveillons notre autre serveur avec Nagios,

[[step-5 -—- Installing-npre-on-a-host]] == Étape 5 - Installation de NPRE sur un hôte

Ajoutons un nouvel hôte pour que Nagios puisse le surveiller. Nous allons installer le NRPE (Nagios Remote Plugin Executor) sur l’hôte distant, installer quelques plug-ins, puis configurer le serveur Nagios pour surveiller cet hôte.

Connectez-vous au deuxième serveur, que nous appellerons lesmonitored server.

ssh sammy@your_monitored_server_ip

Créez d’abord un utilisateur «nagios» qui exécutera l’agent NRPE.

sudo useradd nagios

Nous allons installer NRPE à partir des sources, ce qui signifie que vous aurez besoin des mêmes bibliothèques de développement que celles installées sur le serveur Nagios à l’étape 1. Mettez à jour vos sources de paquets et installez les prérequis NRPE:

sudo apt-get update
sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev unzip

NRPE nécessite queNagios plugins soit installé sur l'hôte distant. Installons ce paquet depuis les sources.

Trouvez la dernière version des plugins Nagios sur la pageNagios Plugins Download. Copiez l'adresse du lien de la dernière version et copiez-la pour que vous puissiez la télécharger sur votre serveur Nagios.

Téléchargez les plugins Nagios dans votre répertoire personnel aveccurl:

cd ~
curl -L -O http://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz

Extrayez l’archive des plugins Nagios:

tar zxf nagios-plugins-*.tar.gz

Passez au répertoire extrait:

cd nagios-plugins-*

Avant de créer des plugins Nagios, configurez-le pour utiliser l'utilisateur et le groupenagios, et configurez le support OpenSSL:

./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl

Maintenant, compilez les plugins:

make

Puis installez-les:

sudo make install

Ensuite, installez NRPE. Trouvez l'URL de téléchargement de la dernière version stable de NRPE auxNagios Exchange site, comme vous l'avez fait à l'étape 1. Téléchargez la dernière version stable de NRPE dans le répertoire de base de votre serveur surveillé aveccurl:

cd ~
curl -L -O https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz

Extrayez l’archive NRPE avec cette commande:

tar zxf nrpe-*.tar.gz

Ensuite, passez au répertoire extrait:

cd nrpe-*

Configurez NRPE en spécifiant l'utilisateur et le groupe Nagios et indiquez-lui que vous souhaitez une prise en charge de SSL:

./configure --enable-command-args --with-nagios-user=nagios --with-nagios-group=nagios --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu

Maintenant, construisez et installez NRPE et son script de démarrage avec ces commandes:

make all
sudo make install
sudo make install-config
sudo make install-init

Ensuite, mettons à jour le fichier de configuration NRPE:

sudo nano /usr/local/nagios/etc/nrpe.cfg

Trouvez la directiveallowed_hosts et ajoutez l'adresse IP privée de votre serveur Nagios à la liste délimitée par des virgules:

/usr/local/nagios/etc/nrpe.cfg

allowed_hosts=127.0.0.1,::1,your_nagios_server_private_ip

Cela configure NRPE pour accepter les demandes de votre serveur Nagios via son adresse IP privée.

Enregistrez et quittez votre éditeur. Maintenant, vous pouvez démarrer NRPE:

sudo systemctl start nrpe.service

Assurez-vous que le service est en cours d'exécution en vérifiant son statut:

sudo systemctl status nrpe.service

Vous verrez le résultat suivant:

Output...
Oct 16 07:10:00 nagios systemd[1]: Started Nagios Remote Plugin Executor.
Oct 16 07:10:00 nagios nrpe[14653]: Starting up daemon
Oct 16 07:10:00 nagios nrpe[14653]: Server listening on 0.0.0.0 port 5666.
Oct 16 07:10:00 nagios nrpe[14653]: Server listening on :: port 5666.
Oct 16 07:10:00 nagios nrpe[14653]: Listening for connections on port 5666
Oct 16 07:10:00 nagios nrpe[14653]: Allowing connections from: 127.0.0.1,::1,207.154.249.232

Ensuite, autorisez l'accès au port5666 via le pare-feu. Si vous utilisez UFW, configurez-le pour autoriser les connexions TCP au port5666:

sudo ufw allow 5666/tcp

Vous pouvez en savoir plus sur UFW dansHow To Set Up a Firewall with UFW on Ubuntu 16.04.

Vous pouvez maintenant vérifier la communication avec le serveur NRPE distant. Exécutez la commande suivante sur le serveur Nagios:

/usr/local/nagios/libexec/check_nrpe -H remote_host_ip

Vous verrez le résultat suivant:

OutputNRPE v3.2.1

Maintenant, configurons quelques vérifications de base que Nagios peut surveiller.

Commençons par surveiller l’utilisation du disque par ce serveur. Utilisez la commandedf -h pour rechercher le système de fichiers racine. Vous utiliserez ce nom de système de fichiers dans la configuration NRPE:

df -h /

Vous verrez une sortie semblable à celle-ci:

OutputFilesystem      Size  Used Avail Use% Mounted on
udev            490M     0  490M   0% /dev
tmpfs           100M  3.1M   97M   4% /run
/dev/vda1        29G  1.4G   28G   5% /
tmpfs           497M     0  497M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           497M     0  497M   0% /sys/fs/cgroup
/dev/vda15      105M  3.4M  102M   4% /boot/efi
tmpfs           100M     0  100M   0% /run/user/0

Localisez le système de fichiers associé à/. Sur un Droplet, le système de fichiers souhaité est probablement/dev/vda1.

Ouvrez maintenant le fichier/usr/local/nagios/etc/nrpe.cfg dans votre éditeur:

sudo nano /usr/local/nagios/etc/nrpe.cfg

Le fichier de configuration NRPE est très long et plein de commentaires. Vous devrez trouver et modifier quelques lignes:

  • server_address: défini sur l'adresse IP privée du serveur surveillé

  • command[check_hda1]: remplacez/dev/hda1 par le nom de votre système de fichiers racine

Localisez ces paramètres et modifiez-les de manière appropriée:

/usr/local/nagios/etc/nrpe.cfg

...
server_address=monitored_server_private_ip
...
command[check_vda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda1
...

Enregistrez et quittez l'éditeur.

Redémarrez le service NRPE pour que les modifications prennent effet:

sudo systemctl restart nrpe.service

Répétez les étapes de cette section pour chaque serveur supplémentaire à surveiller.

Une fois que vous avez terminé l'installation et la configuration de NRPE sur les hôtes que vous souhaitez surveiller, vous devrez ajouter ces hôtes à la configuration de votre serveur Nagios avant qu'il ne commence à les surveiller. Faisons-le ensuite.

[[step-6 -–- monitoring-hosts-with-nagios]] == Étape 6 - Surveillance des hôtes avec Nagios

Pour surveiller vos hôtes avec Nagios, vous allez ajouter des fichiers de configuration pour chaque hôte en spécifiant ce que vous souhaitez surveiller. Vous pouvez ensuite afficher ces hôtes dans l'interface Web de Nagios.

Sur votre serveur Nagios, créez un nouveau fichier de configuration pour chacun des hôtes distants que vous souhaitez surveiller dans/usr/local/nagios/etc/servers/. Remplacez le mot en surbrillance,monitored_server_host_name par le nom de votre hôte:

sudo nano /usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg

Ajoutez la définition d'hôte suivante, en remplaçant la valeurhost_name par votre nom d'hôte distant, la valeuralias par une description de l'hôte et la valeuraddress par l'adresse IP privée de l'hôte distant :

/usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg

define host {
        use                             linux-server
        host_name                       your_monitored_server_host_name
        alias                           My client server
        address                         your_monitored_server_private_ip
        max_check_attempts              5
        check_period                    24x7
        notification_interval           30
        notification_period             24x7
}

Avec cette configuration, Nagios ne vous dira que si l'hôte est actif ou non. Ajoutons quelques services à surveiller.

Tout d’abord, ajoutez ce bloc pour surveiller l’utilisation du processeur:

/usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg

define service {
        use                             generic-service
        host_name                       your_monitored_server_host_name
        service_description             CPU load
        check_command                   check_nrpe!check_load
}

La directiveuse generic-service indique à Nagios d'hériter des valeurs d'un modèle de service appelégeneric-service qui est prédéfini par Nagios.

Ensuite, ajoutez ce bloc pour surveiller l'utilisation du disque:

/usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg

define service {
        use                             generic-service
        host_name                       your_monitored_server_host_name
        service_description             /dev/vda1 free space
        check_command                   check_nrpe!check_vda1
}

Maintenant, enregistrez et quittez. Redémarrez le service Nagios pour appliquer les modifications suivantes:

sudo systemctl restart nagios

Après quelques minutes, Nagios vérifiera les nouveaux hôtes et vous les verrez dans l’interface Web de Nagios. Cliquez sur le lienServices dans la barre de navigation de gauche pour voir tous vos hôtes et services surveillés.

Nagios Services Page

Conclusion

Vous avez installé Nagios sur un serveur et l'avez configuré pour surveiller l'utilisation du processeur et du disque d'au moins un ordinateur distant.

Maintenant que vous surveillez un hôte et certains de ses services, vous pouvez commencer à utiliser Nagios pour surveiller vos services critiques. Vous pouvez utiliser Nagios pour configurer des notifications pour des événements critiques. Par exemple, vous pouvez recevoir un courrier électronique lorsque l'utilisation de votre disque atteint un seuil d'avertissement ou critique, ou une notification lorsque votre site Web principal est en panne. De cette façon, vous pouvez résoudre la situation rapidement ou même avant qu'un problème ne survienne.