Superviser rapidement un parc Informatique (Nagios)

Ajouter des hôtes

Pour éviter d'avoir pleins de fichiers de part et d'autres, on se créer un dossier qui contiendra la configuration de chacunes des machines :

mkdir machines
mv localhost_nagios2.cfg machines/
Lors de l'ajout d'un nouvel hôte, il vaut mieux se baser sur un fichier de configuration de base tel que localhost_nagios2.cfg :
cp machines/localhost_nagios2.cfg machines/xmg.cfg
xmg.cfg
define host{
        use                     generic-host
        host_name               xmg
        alias                   xmg
        address                 192.168.1.129
        }

Cependant, admettons que pour cette machine on souhaite connaitre le nombre de processus. Il faudra alors ajouter la déclaration suivante au précédent fichier :

xmg.cfg
# Check the number of currently running procs on the local machine.
# Warning if > 250 processes, critical if > 400 processes.
define service{
        use                             generic-service
        host_name                       xmg
        service_description             Total Processes
                check_command           check_procs!250!400
        }

Créer un groupe d'hôtes

Les groupes d'hôtes on l'avantage de pouvoir regrouper des hôtes auquel ont leur attachera un ou plusieurs services.

De même, on regroupe les fichiers dans un dossier spécifique :

mkdir goupes_hotes
mv hostsgroup.cfg groupes_hotes/
nano groupes_hotes/hostsgroup.cfg
hostsgroup.cfg
# A list of your ssh-accessible servers
define hostgroup {
        hostgroup_name          ssh-servers
                alias           SSH servers
                members         localhost,xmg
       }

Créer un groupe de services

Précédament nous avons superviser un service précis pour une seule machine. L'avantage des groupes de services est que l'on peut rapidement mettre en place une configuration qui supervisera, par exemple, le service SSH d'un grand nombres de machines.

En d'autres terme, un groupe de service sera appliqué à des hôtes spécifique.

Idem, crééons un dossier pour mieu organiser les fichiers de configurations :

mkdir groupes_services
nano groupes_services/gservices.cfg
gservices.cfg
define servicegroup {
    servicegroup_name   services-ssh
    alias               SSH Services
    members             localhost,SSH,xmg,SSH
}

Les groupes de services

Il est possible de liéer le check d'un service à un groupe d'hôtes

Hop! continuons d'organiser notre config :

mkdir groupes_services
nano groupes_services/services_nagios2.cfg

Avec l'example de vérifier la disponibilité du service SSH pour le groupe de service “ssh-servers”.

services_nagios2.cfg
# check that ssh services are running
define service {
        hostgroup_name                  ssh-servers
        service_description             SSH
        check_command                   check_ssh
        use                             generic-service
}

L'usage des templates

On peut remarquer que la configuration est déjà assez longue pour le peu d'hôtes et de services supervisés. Pour aller plus vite dans la configuration, on peut faire appel à des templates qui contiendrons également d'autres informations tel que les délais de notifications ou quel personnes contacter en cas d'anomalies. Idem pour faire simple, on met les templates dans un dossier.

mkdir templates
mv generic-host_nagios2.cfg templates/
mv generic-service_nagios2.cfg templates/
Je ne comprend pas encore leur réel fonctionalité mais je laisse la copie de ces fichiers telquel pour y revenir plus tard.
nano templates/generic-host_nagios2.cfg
generic-host_nagios2.cfg
define host{
        name                            generic-host    ; The name of this host template
        notifications_enabled           1       ; Host notifications are enabled
        event_handler_enabled           1       ; Host event handler is enabled
        flap_detection_enabled          1       ; Flap detection is enabled
        failure_prediction_enabled      1       ; Failure prediction is enabled
        process_perf_data               1       ; Process performance data
        retain_status_information       1       ; Retain status information across program restarts
        retain_nonstatus_information    1       ; Retain non-status information across program restarts
                check_command                   check-host-alive
                max_check_attempts              10
                notification_interval           0
                notification_period             24x7
                notification_options            d,u,r
                contact_groups                  admins
        register                        0       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
        }
generic-service_nagios2.cfg
# generic service template definition
define service{
        name                            generic-service ; The 'name' of this service template
        active_checks_enabled           1       ; Active service checks are enabled
        passive_checks_enabled          1       ; Passive service checks are enabled/accepted
        parallelize_check               1       ; Active service checks should be parallelized (disabling this can lead to major performance problems)
        obsess_over_service             1       ; We should obsess over this service (if necessary)
        check_freshness                 0       ; Default is to NOT check service 'freshness'
        notifications_enabled           1       ; Service notifications are enabled
        event_handler_enabled           1       ; Service event handler is enabled
        flap_detection_enabled          1       ; Flap detection is enabled
        failure_prediction_enabled      1       ; Failure prediction is enabled
        process_perf_data               1       ; Process performance data
        retain_status_information       1       ; Retain status information across program restarts
        retain_nonstatus_information    1       ; Retain non-status information across program restarts
                notification_interval           0               ; Only send notifications on status change by default.
                is_volatile                     0
                check_period                    24x7
                normal_check_interval           5
                retry_check_interval            1
                max_check_attempts              4
                notification_period             24x7
                notification_options            w,u,c,r
                contact_groups                  admins
        register                        0       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
        }

Gerer les moyens de contacts

Quand un service est défaillant, Nagios devra contacter un responsable. Idem, on regroupe les informations dans un dossier.

mkdir contacts
mv timeperiods_nagios2.cfg contacts
mv contacts_nagios2.cfg contacts.cfg

Par défaut, c'est l'utilisateur root qui recevra les mails vu qu'il est disponible tout le temps. ;)

Utiliser la map

La map indique en temps réel l'état des machines sur une carte.

  • Organiser la disposition des machines

Par défaut elle ne veut rien dire. Voici l'apperçu de notre objectif :

C'est très simple, il suffit juste de rajouter le paramètre parents lors de la déclaration d'un hôte :

define host{
        use                     generic-host
        host_name               xmg
        alias                   xmg
        address                 192.168.1.129
        parents                 routeur  
        }

Ici j'indique que le parent est le routeur de mon réseau local. Il faut donc à postériori avoir créée l'hôte routeur.

  • Attribuer une image aux hôtes supervisé

Crééons dans un 1er temps un dossier qui regroupera ces infos puis on indique que l'hôte xmg est une machine debian :

mkdir map
mv extinfo_nagios2.cfg map/extinfo_nagios2.cfg
nano map/extinfo_nagios2.cfg.cfg
extinfo_nagios2.cfg
define hostextinfo{
        hostgroup_name   ssh-servers
        icon_image       base/debian.png
        icon_image_alt   Debian GNU/Linux
        vrml_image       debian.png
        statusmap_image  base/debian.gd2
        }