⇤ ← Version 1 à la date du 2007-06-26 17:51:39
Taille: 4915
Commentaire: copier/coller de la procedure
|
Taille: 4919
Commentaire:
|
Texte supprimé. | Texte ajouté. |
Ligne 4: | Ligne 4: |
* La configuration de Nagios est faite sous forme de template : on suit le même format de configuration, sauf que l'adresse IP est remplacée par $address et le nom de la machine est remplacé par $hostname; * Le logiciel cheetah transforme ces fichiers de template en classes Python; * Un fichier CSV sert de base de données, il contient le nom de la machine, le système d'exploitation, le type de test à faire et le groupe de contact; * Un "parser" en Python fait le lien entre les templates (classes générées par Cheetah) et le fichier CSV. |
* La configuration de Nagios est faite sous forme de template : on suit le même format de configuration, sauf que l'adresse IP est remplacée par $address et le nom de la machine est remplacé par $hostname; * Le logiciel cheetah transforme ces fichiers de template en classes Python; * Un fichier CSV sert de base de données, il contient le nom de la machine, le système d'exploitation, le type de test à faire et le groupe de contact; * Un "parser" en Python fait le lien entre les templates (classes générées par Cheetah) et le fichier CSV. |
Ligne 41: | Ligne 41: |
* Créer le template (fichier .tmpl) en suivant le modèle suivant : | * Créer le template (fichier .tmpl) en suivant le modèle suivant : |
Ligne 43: | Ligne 43: |
{{{ | |
Ligne 50: | Ligne 51: |
}}} | |
Ligne 52: | Ligne 54: |
{{{ |
|
Ligne 59: | Ligne 63: |
}}} | |
Ligne 60: | Ligne 65: |
* Ajouter ce fichier dans le Subversion svn add bd.tmpl * Modifier le script parser.py : * Ajouter la ligne suivant à la fin de la première partie du script (section des imports) : from bd import bd * Dans la fonction "genServices" (à partir de la ligne 25), copier/coller un bloc comprenant le "elif" jusqu'au file.write(tmpl.respond). |
|
Ligne 61: | Ligne 72: |
* Ajouter ce fichier dans le Subversion svn add bd.tmpl * Modifier le script parser.py : ** Ajouter la ligne suivant à la fin de la première partie du script (section des imports) : from bd import bd ** Dans la fonction "genServices" (à partir de la ligne 25), copier/coller un bloc comprenant le "elif" jusqu'au file.write(tmpl.respond). |
|
Ligne 68: | Ligne 73: |
<pre> | {{{ |
Ligne 74: | Ligne 80: |
</pre> | }}} |
Ligne 79: | Ligne 85: |
<pre> | {{{ |
Ligne 90: | Ligne 96: |
</pre> | }}} |
Ligne 93: | Ligne 99: |
<pre> | {{{ |
Ligne 99: | Ligne 105: |
</pre> {{attention|L'indentation est importante en Python, une erreur rendra le script non fonctionnel}} |
}}} |
Ligne 102: | Ligne 107: |
* Enfin, il nous reste à utiliser notre nouveau template, en modifiant le fichier CSV. Par exemple : | '''Attention : L'indentation est importante en Python, une erreur rendra le script non fonctionnel''' * Enfin, il nous reste à utiliser notre nouveau template, en modifiant le fichier CSV. Par exemple : |
Ligne 104: | Ligne 111: |
[[Catégorie:AUF]] |
Procédure pour utiliser le système d'automatisation de la configuration de Nagios
Principe de fonctionnement
- La configuration de Nagios est faite sous forme de template : on suit le même format de configuration, sauf que l'adresse IP est remplacée par $address et le nom de la machine est remplacé par $hostname;
- Le logiciel cheetah transforme ces fichiers de template en classes Python;
- Un fichier CSV sert de base de données, il contient le nom de la machine, le système d'exploitation, le type de test à faire et le groupe de contact;
- Un "parser" en Python fait le lien entre les templates (classes générées par Cheetah) et le fichier CSV.
Stockage des fichiers
Tous les fichiers sont dans le Subversion.
Dans le répertoire etc/nagios/templates il y a la définition des templates, le programme qui sert à générer la configuration et le fichier CSV.
Les templates définis actuellement sont : disquesCEH, healthswitch, host, disquesDEH, 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/nagios/auto.d et /etc/nagios/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" est effacé et regé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 :
- hostname,ip,parent,os,test à faire (nom du template),groupe de contact
Par exemple :
- intranet,10.36.0.10,dmzrpv,Linux,Health,contactgroup1
Modification d'un template
Pour modifier un template il suffit d'adapter le fichier ".tmpl" à nos besoins et 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
Voici les étapes pour ajouter un nouveau template. Pour les exemples, on suppose ici que le template s'appelle bd.tmpl.
- Créer le template (fichier .tmpl) en suivant le modèle suivant :
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 PING contact_groups $contact check_command check_ping!10.0,5%!50.0,20% }
- Ajouter ce fichier dans le Subversion svn add bd.tmpl
- Modifier le script parser.py :
- Ajouter la ligne suivant à la fin de la première partie du script (section des imports) :
- Dans la fonction "genServices" (à partir de la ligne 25), copier/coller un bloc comprenant le "elif" jusqu'au file.write(tmpl.respond).
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
- Enfin, il nous reste à utiliser notre nouveau template, en modifiant le fichier CSV. Par exemple : dmzreflets,10.36.0.253,zeus,Switch,BD,BD_CONTACT