Procédure pour utiliser le système d'automatisation de la configuration de Nagios

Principe de fonctionnement

Stockage des fichiers

Tous les fichiers sont dans le Subversion.

Dans le répertoire etc/nagios2/templates il y a la définition des templates, le fichier CSV et le programme qui sert à générer la configuration.

Les templates définis actuellement sont : disquesCEH, healthswitch, host, disquesDEH, disquesS, healthlinux, healthwindows, process.tmpl.

Le fichier CSV s'appelle actuellement liste.csv.

Sur le serveur Nagios, il y a deux répertoires spéciaux : /etc/nagios2/auto.d et /etc/nagios2/manuel.d. Tous les fichiers avec l'extension .cfg placés dans un de ces répertoires seront pris en compte par Nagios. Le contenu du répertoire auto.d est effacé et régénéré à chaque modification d'un template ou du fichier CSV, donc il ne faut pas faire de modifications personnalisées. Le répertoire manuel est prévu pour entreposer toutes les modifications personnalisées (hors template).

Ajout de machine

Pour ajouter une machine, il faut rajouter une entrée dans le fichier CSV selon le format suivant :

Par exemple :

 intranet,10.36.0.10,dmzrpv,Linux,Health,contactgroup1

Et lancer le script compile.

Pour supprimer une machine, il suffit d'enlever son entrée du fichier liste.csv et d'exécuter le script.

Modification d'un template

Ajout/suppression d'un nouveau service dans un template, modification d'un seuil.

Pour modifier un template il suffit d'adapter le fichier ".tmpl" à nos besoins et de lancer le script compile.

NB : ne pas oublier de faire un "commit" dans le Subversion.

Cette modification fera en sorte que la configuration de toutes les machines qui utilisent ce template sera mise à jour.

Ajout d'un nouveau template

Nouveau service, nouvel ensemble de tests pour un groupe de machine

Voici les étapes pour ajouter un nouveau template.

Pour les exemples, on suppose ici que le template s'appelle bd.tmpl.

 define service {
        use                             generic-service
        host_name                       $hostname
        service_description             LE_NOM_DU_SERVICE
        contact_groups                  $contact
        check_command                   commande!argument1!argument2
 }

Par exemple :

 define service {
        use                             generic-service
        host_name                       $hostname
        service_description             TEST_PING_BD
        contact_groups                  $contact
        check_command                   check_ping!10.0,5%!50.0,20%
 }

Par exemple copier la section :

elif check == "Health" and type == "Windows":
 tmpl = healthwindows()
        tmpl.hostname = hostname
        tmpl.contact = contact
        file.write(tmpl.respond())

Coller cette section et remplacer la valeur de "check" par la valeur qui sera mise dans le fichier CSV pour le champ "type de test" (par exemple BD) et modifier ou supprimer le 'and type == "Windows"' en fonction du besoin. Si un test dépend du système d'exploitation, il faut laisser cette dernière partie, sinon elle peut être supprimée. Par exemple si nous avons un test de BD pour Linux et un autre pour Windows, on pourra ajouter les parties suivantes :

elif check == "BD" and type == "Windows":
        tmpl = bdwindows()
        tmpl.hostname = hostname
        tmpl.contact = contact
        file.write(tmpl.respond())
elif check == "BD" and type == "Linux":
        tmpl = bdlinux()
        tmpl.hostname = hostname
        tmpl.contact = contact
        file.write(tmpl.respond())

Par contre si notre test est indépendant du système d'exploitation, on pourra écrire la section suivante :

elif check == "BD":
        tmpl = bd()
        tmpl.hostname = hostname
        tmpl.contact = contact
        file.write(tmpl.respond())

Attention : L'indentation est importante en Python, une erreur rendra le script non fonctionnel

Suppression d'un template

ZA/Montréal/Supervision/AutomatisationdeNagios (dernière édition le 2010-10-29 15:10:01 par MoussaNombre)