Nagios

Installation

Tout d'abord, installez le paquet nagios sur serveur01. Dans un terminal, saisissez :

sudo apt install nagios3 nagios-nrpe-plugin

Il vous sera alors demandé d'entrer un mot de passe pour l'utilisateur nagiosadmin. Les droits d'accès des utilisateurs sont conservés dans le fichier /etc/nagios3/htpasswd.users. Pour changer le mot de passe de nagiosadmin, ou ajouter d'autres utilisateurs aux scripts CGI de Nagios, utilisez htpasswd, qui fait partie du paquet apache2-utils.

Par exemple, pour changer le mot de passe de l'utilisateur nagiosadmin, entrez:

sudo htpasswd /etc/nagios3/htpasswd.users nagiosadmin

Pour ajouter un utilisateur :

sudo htpasswd /etc/nagios3/htpasswd.users steve

Ensuite, sur serveur02, installez le paquet nagios-nrpe-server. Depuis un terminal sur serveur02, entrez:

sudo apt install nagios-nrpe-server

NRPE vous permet d'exécuter des vérifications locales sur des hôtes distants. Il existe d'autres façons d'accomplir ces vérifications, ainsi que d'autres, grâce à d'autres greffons de Nagios.

Vue d'ensemble de la configuration

Il y a plusieurs répertoires contenant les fichiers de configuration et de tests de Nagios.

  • /etc/nagios3 : contient les fichiers de configuration pour l'exécution du démon nagios, des fichiers CGI, des hôtes, etc.

  • /etc/nagios-plugins : héberge les fichiers de configuration pour les vérifications du service.

  • /etc/nagios : sur l'hôte distant, contient les fichiers de configuration de nagios-nrpe-server.

  • /usr/lib/nagios/plugins/ : où les fichiers binaires vérifiés sont conservés. Pour consulter les options de vérification, utilisez l'option -h.

    Par exemple: /usr/lib/nagios/plugins/check_dhcp -h

Nagios peut être configuré pour exécuter une pléthore de vérifications pour n'importe quel hôte donné. Pour cet exemple Nagios sera configuré pour vérifier l'espace disque, les DNS, et un groupe d'hôtes MySQL. Le contrôle des DNS sera fait sur server02, et le groupe d'hôtes MySQL contiendra server01 et server02.

Voir HTTPD - serveur web Apache2 pour les détails concernant la préparation d'Apache, Service de nom de domaine (DNS) pour DNS, et MySQL pour MySQL.

En complément, voici quelques termes qui, une fois expliqués, faciliteront la compréhension de la configuration de Nagios :

  • Hôte : un serveur, une station de travail, un périphérique réseau, etc., qui est en train d'être contrôlé.

  • Groupe d'hôtes : un groupe d'hôtes similaires. Par exemple, vous pourriez grouper tous les serveurs web, les serveurs de fichiers, etc.

  • Service : le service qui est en train d'être contrôlé sur l'hôte. Comme HTTP, DNS, NFS, etc.

  • Groupe de services : vous permet de grouper plusieurs services ensemble. Ceci est utile pour regrouper plusieurs HTTP.

  • Contact : personne à prévenir quand un événement se produit. Nagios peut être configuré pour envoyer des courriels, des SMS, etc.

Par défaut, Nagios est configuré pour vérifier HTTP, l'espace disque, SSH, les utilisateurs actuels, les processus, et la charge de l'hôte local. Nagios lancera aussi un ping de vérification sur la passerelle.

Les grosses installations de Nagios peuvent s'avérer compliquées à configurer. Il est généralement plus sage de commencer par une petite installation d'un ou deux hôtes, et de la configurer comme vous l'entendez avant de l'agrandir.

Configuration

    1. Tout d'abord, créez un fichier de configuration hôte pour serveur02. Sauf indication contraire, exécuter toutes ces commandes sur serveur01. Dans un terminal saisissez :

      sudo cp /etc/nagios3/conf.d/localhost_nagios2.cfg \ /etc/nagios3/conf.d/server02.cfg
      

      Dans les exemples de commandes ci-dessus et ci-dessous, remplacez « serveur01 », « serveur02 »172.18.100.100 et 172.18.100.101 par les noms et les adresses IP de vos serveurs.

    2. Ensuite, modifiez /etc/nagios3/conf.d/serveur02.cfg:

      define host{
              use                     generic-host  ; Name of host template to use
              host_name               server02
              alias                   Server 02
              address                 172.18.100.101
      }
      
      # check DNS service.
      define service {
              use                             generic-service
              host_name                       server02
              service_description             DNS
              check_command                   check_dns!172.18.100.101
      }
      
    3. Relancez le démon nagios pour activer la nouvelle configuration :

      sudo systemctl restart nagio3.service
      
    1. Maintenant, définissez un nouveau service pour la vérification de MySQL, en ajoutant ceci au fichier /etc/nagios3/conf.d/services_nagios2.cfg :

      # check MySQL servers.
      define service {
              hostgroup_name        mysql-servers
              service_description   MySQL
              check_command         check_mysql_cmdlinecred!nagios!secret!$HOSTADDRESS
              use                   generic-service
              notification_interval 0 ; set > 0 if you want to be renotified
      }
      
    2. Maintenant, Il faut définir un groupe d’hôtes serveurs-mysql. Modifiez /etc/nagios3/conf.d/hostgroups_nagios2.cfg en y ajoutant :

      # Groupe d'hôtes MySQL.
      define hostgroup {
              hostgroup_name  mysql-serveurs
                      alias           MySQL serveurs
                      members         localhost, serveur02
              }
      
    3. La vérification de Nagios a besoin de s'authentifier auprès de MySQL. Pour ajouter nagios en tant qu'utilisateur de MySQL, entrez :

      mysql -u root -p -e "create user nagios identified by 'secret';"
      

      L'utilisateur nagios devra être ajouté pour tous les hôtes du groupe mysql-serveurs.

    4. Redémarrez nagios pour commencer à vérifier les serveurs MySQL.

      sudo systemctl restart nagios3.service
      
    1. Enfin, configurez NRPE pour vérifier l'espace disque sur serveur02.

      Sur serveur01 ajoutez le service de vérification dans /etc/nagios3/conf.d/serveur02.cfg :

      # NRPE disk check.
      define service {
              use                     generic-service
              host_name               server02
              service_description     nrpe-disk
              check_command           check_nrpe_1arg!check_all_disks!172.18.100.101
      }
      
    2. Maintenant sur serveur02, modifiez /etc/nagios/nrpe.cfg en y changeant :

      allowed_hosts=172.18.100.100
      

      Et dessous, dans la zone de définition de commande, ajoutez :

      command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -e
      
    3. Pour finir, redémarrez nagios-nrpe-server:

      sudo systemctl restart nagios-nrpe-server.service
      
    4. De plus, sur serveur01, redémarrez nagios :

      sudo systemctl restart nagios3.service
      

Vous devriez maintenant être capable de voir l'hôte et les services de vérification dans les fichiers CGI de Nagios. Pour y accéder, rendez-vous sur http://server01/nagios3 avec votre navigateur. Il vous sera demandé le nom d'utilisateur et le mot de passe de nagiosadmin.

Références

Cette partie n'a fait qu'effleurer le potentiel des fonctionnalités de Nagios. nagios-plugins-extra et nagios-snmp-plugins contiennent bien plus de services de vérification.