Modifications entre les versions 7 et 8
Version 7 à la date du 2009-07-20 15:50:05
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):
{{{
#!/us
r/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.

NacerAdamouSaidou/Nagios (dernière édition le 2009-07-30 15:37:08 par NacerAdamouSaidou)