Taille: 5590
Commentaire:
|
← Version 8 à la date du 2009-07-30 15:37:08 ⇥
Taille: 3794
Commentaire:
|
Texte supprimé. | Texte ajouté. |
Ligne 79: | Ligne 79: |
Script makeit (version alpha très très très .... très améliorable): {{{ #!/usr/bin/env python # -*- coding:utf-8 -*- |
Script makeit (version alpha très très très .... très améliorable): voir le [[attachment:makeit.py| script]]. |
Ligne 84: | Ligne 81: |
import os, sys, csv def filtre(filename): """ Le rôle de cette fonction est de retourner l'ensemble des fichiers templates compilés et pour lesquels il y a des données. """ (root,ext) = os.path.splitext(filename) return os.path.exists(root + '.tmpl') and \ os.path.exists(root + '.py') and \ os.path.exists(root + '.csv') def listdir(path): return filter(filtre, os.listdir(path)) def listmodule(path): liste = [os.path.splitext(fle)[0] for fle in listdir(path)] set = {} map(set.__setitem__, liste, []) return set.keys() def importing(modulename): print modulename return __import__(modulename) """ TODO: si on veux supporter d'autres types de fichiers!!! def read (filename): Détermine le type de fichier de données et active la fonction de lecture correspondante. ext = os.path.splitext(filename)[1] read_func = getattr(__NAME__, "read_%s"% ext, read_csv) read_func(filename) """ def read_csv(csvfile): """ Cette fonction parse le fichier de données au format csv et retourne le searchList à partir de ces données. La première ligne de données contient les champs de colonne. """ infile = csv.reader(open(csvfile,"rb")) headers = [] isFirstLine = True searchList = [] for row in infile: entry = {} if isFirstLine : isFirstLine = False headers = row continue else: for item in headers: entry[item] = row[headers.index(item)] searchList.append(entry) return searchList for modulename in listmodule(os.curdir): module = importing(modulename) searchlist = read_csv("/root/"+ modulename + ".csv") for dic in searchlist: liste = [] liste.append(dic) serv = getattr(module, modulename)(searchList=liste) print serv.respond() }}} |
Un peu de supervision avec Nagios, pourquoi pas! Jettez un coup d'oeil ici aussi!
Installation
Rien de plus simple:
# aptitude install apache2 nagios3
Pour la configuration du mot de passe de nagiosadmin
# dpkg-reconfigure nagios3-common
Cette commande crée le fichier /etc/nagios3/htpasswd.users qu'on peut utiliser plus tard pour gérer de nouveaux utilisateurs et leur mot de passe. Pour l'instant, pas de mysql (chaque chose en son temps).
Configuration
Il me semble que la configuration de nagios est une tâche de longue haleine. Alors je suis pas pressé, j'y vais au fur et à mesure que j'identifierais des besoins de monitoring. Par conséquent, cette section s'enrichira au fur et à mesure que j'avancerais dans cette aventure.
Intégration avec Apache2
Après installation du paquet nagios3, un fichier /etc/nagios3/apache2.conf est founit un lien vers ce fichier crée dans /etc/apache2/conf.d/nagios3.conf. Donc:
- créer un fichier /etc/apache2/site-available/nagios
web:/etc/nagios3# cat /etc/apache2/sites-available/nagios NameVirtualHost * <VirtualHost *> ServerAdmin webmaster@cm.auf.org ServerName nagios.cm.auf.org ServerAlias nagios.cm.refer.org #DocumentRoot /nagios3 <Directory /> #Options FollowSymLinks #AllowOverride None RedirectMatch ^/$ /nagios3/ </Directory> ErrorLog /var/log/apache2/nagios-error.log LogLevel warn CustomLog /var/log/apache2/nagios-access.log combined ServerSignature On #SSLEngine on #SSLCertificateFile /etc/apache2/ssl/server.crt #SSLCertificateKeyFile /etc/apache2/ssl/server.key </VirtualHost>
- Activer la config:
web:/etc/apache2/sites-available# a2ensite nagios web:/etc/apache2/sites-available# invoke-rc.d apache2 reload
- Ajouter nagios.cm.{auf,refer}.org dans le dns
Un simple http://nagios.cm.auf.org dans le navigateur + login et mot de passe et nous voilà dans l'interface web de nagios3.
config des hôtes
Basée sur l'approche décrite Ici.
fichiers *.tmpl | | | via le script compile | | v fichiers .py + fichiers .csv (ou d'autres!!!) \ / ------------------------- | | via le script makeit (que je propose) | v fichiers *.cfg de Nagios
Script makeit (version alpha très très très .... très améliorable): voir le script.
Quelques éclaircissements:
- Motivation du script: pouvoir ajouter de nouveaux templates sans avoir à modifier le script
- Pour le moment il ne fait rien d'autres que d'afficher le contenu des fichiers .cfg générés (on peut facilement l'adapter pour écrire dans un fichier, mais j'y reviens)
- De plus, je suppose que les fichiers .tmpl, et les fichiers .py et .cfg générés sont tous dans le répertoire courant. Comportement à corriger, j'y travaille.
- Il y a plein de déchets dans ce script, mais ca semble donner de bons résultats. On jouera au puriste plus tard.
- Un bon fichier make pour combiner les deux étapes décrites ci-dessus reste à faire.
- Conclusion: je bavarde autant, parce que ce sera mon premier vrai (utile?) script écrit en python.