[wiki/macro/MonitStatus.py] s/\s*$//
darcs-hash:20081117104058-bd074-4f1c5947bcf9678906c0083773c764f8ed05dfbe.gz
This commit is contained in:
parent
9a4383c723
commit
0cdf65b8bf
1 changed files with 38 additions and 38 deletions
|
@ -5,7 +5,7 @@ import os, sys, sre, commands, time
|
||||||
"""
|
"""
|
||||||
Permet d'intégrer au wiki les résultats de Monit.
|
Permet d'intégrer au wiki les résultats de Monit.
|
||||||
|
|
||||||
La macro wiki est :
|
La macro wiki est :
|
||||||
[[MonitStatus(hotes=host,categories=[All|Process|File],services=[All|Off|On])]]
|
[[MonitStatus(hotes=host,categories=[All|Process|File],services=[All|Off|On])]]
|
||||||
|
|
||||||
Exemple :
|
Exemple :
|
||||||
|
@ -30,14 +30,14 @@ def HostStatus (host) :
|
||||||
Retourne un dictionnaire représentation de l'état des services de
|
Retourne un dictionnaire représentation de l'état des services de
|
||||||
la machine.
|
la machine.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
status = {}
|
status = {}
|
||||||
|
|
||||||
f = open('%s/%s' % (statusfolder,host) )
|
f = open('%s/%s' % (statusfolder,host) )
|
||||||
|
|
||||||
# c'est un hote sous Debian
|
# c'est un hote sous Debian
|
||||||
###########################
|
###########################
|
||||||
|
|
||||||
# s est le service qu'on est en trainde parser
|
# s est le service qu'on est en trainde parser
|
||||||
s = None
|
s = None
|
||||||
for line in f.readlines()[2:] :
|
for line in f.readlines()[2:] :
|
||||||
|
@ -56,7 +56,7 @@ def HostStatus (host) :
|
||||||
else :
|
else :
|
||||||
# on ajoute les données
|
# on ajoute les données
|
||||||
status[t][s][line[:34].strip()] = line[34:].strip()
|
status[t][s][line[:34].strip()] = line[34:].strip()
|
||||||
|
|
||||||
# on supprime les données system
|
# on supprime les données system
|
||||||
try :
|
try :
|
||||||
status.pop('System')
|
status.pop('System')
|
||||||
|
@ -78,20 +78,20 @@ def AllStatusOff () :
|
||||||
"""
|
"""
|
||||||
Retourne status avec juste les services off
|
Retourne status avec juste les services off
|
||||||
"""
|
"""
|
||||||
|
|
||||||
status = AllStatus()
|
status = AllStatus()
|
||||||
|
|
||||||
for h in status.keys() :
|
for h in status.keys() :
|
||||||
|
|
||||||
# si c'est un host qui est down, on le laisse tel quel pour éviter qu'il le supprime
|
# si c'est un host qui est down, on le laisse tel quel pour éviter qu'il le supprime
|
||||||
if h in NotRunningHosts() :
|
if h in NotRunningHosts() :
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# on supprime les types
|
# on supprime les types
|
||||||
for t in status[h].keys() :
|
for t in status[h].keys() :
|
||||||
|
|
||||||
for s in status[h][t].keys() :
|
for s in status[h][t].keys() :
|
||||||
|
|
||||||
# on supprime un status s'il est Up
|
# on supprime un status s'il est Up
|
||||||
if status[h][t][s]['status'] in ['running','accessible'] :
|
if status[h][t][s]['status'] in ['running','accessible'] :
|
||||||
status[h][t].pop(s)
|
status[h][t].pop(s)
|
||||||
|
@ -114,7 +114,7 @@ def FormatService(Type, Service, Data, f) :
|
||||||
Data : dictionnaire contenant toutes les données Data[info]
|
Data : dictionnaire contenant toutes les données Data[info]
|
||||||
f : formatter
|
f : formatter
|
||||||
"""
|
"""
|
||||||
|
|
||||||
result = ''
|
result = ''
|
||||||
result += f.table_row(1)
|
result += f.table_row(1)
|
||||||
result += f.table_cell(1,{'style':'background-color:silver'})
|
result += f.table_cell(1,{'style':'background-color:silver'})
|
||||||
|
@ -126,7 +126,7 @@ def FormatService(Type, Service, Data, f) :
|
||||||
result += f.text(Service)
|
result += f.text(Service)
|
||||||
result += f.strong(0)
|
result += f.strong(0)
|
||||||
result += f.table_cell(0)
|
result += f.table_cell(0)
|
||||||
if Data['status'] in ['running','accessible'] :
|
if Data['status'] in ['running','accessible'] :
|
||||||
result += f.table_cell(1,{'style':'background-color:lime'})
|
result += f.table_cell(1,{'style':'background-color:lime'})
|
||||||
else :
|
else :
|
||||||
result += f.table_cell(1,{'style':'background-color:red'})
|
result += f.table_cell(1,{'style':'background-color:red'})
|
||||||
|
@ -142,20 +142,20 @@ def FormatType(Type, Data, f) :
|
||||||
Data : dictionnaire contenant toutes les données Data[service][info]
|
Data : dictionnaire contenant toutes les données Data[service][info]
|
||||||
f : formatter
|
f : formatter
|
||||||
"""
|
"""
|
||||||
|
|
||||||
result = ''
|
result = ''
|
||||||
|
|
||||||
# titre
|
# titre
|
||||||
result += f.heading(1,3)
|
result += f.heading(1,3)
|
||||||
result += f.text(Type)
|
result += f.text(Type)
|
||||||
result += f.heading(0,3)
|
result += f.heading(0,3)
|
||||||
|
|
||||||
# les services
|
# les services
|
||||||
result += f.table(1)
|
result += f.table(1)
|
||||||
for s in Data.keys() :
|
for s in Data.keys() :
|
||||||
result += FormatService(Type,s,Data[s],f)
|
result += FormatService(Type,s,Data[s],f)
|
||||||
result += f.table(0)
|
result += f.table(0)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def FormatHost (Host, Data, f) :
|
def FormatHost (Host, Data, f) :
|
||||||
|
@ -165,42 +165,42 @@ def FormatHost (Host, Data, f) :
|
||||||
Data : dictionnaire contenant toutes les données Data[type][service][info]
|
Data : dictionnaire contenant toutes les données Data[type][service][info]
|
||||||
f : formatter
|
f : formatter
|
||||||
"""
|
"""
|
||||||
|
|
||||||
result = ''
|
result = ''
|
||||||
|
|
||||||
# titre
|
# titre
|
||||||
result += f.heading(1,2)
|
result += f.heading(1,2)
|
||||||
result += f.text(Host)[0].upper() + f.text(Host)[1:]
|
result += f.text(Host)[0].upper() + f.text(Host)[1:]
|
||||||
result += f.heading(0,2)
|
result += f.heading(0,2)
|
||||||
|
|
||||||
# si monit ne tourne pas
|
# si monit ne tourne pas
|
||||||
if Host in NotRunningHosts() :
|
if Host in NotRunningHosts() :
|
||||||
return result + Cellule('Monit ne semble pas tourner sur %s' % Host,'yellow',f)
|
return result + Cellule('Monit ne semble pas tourner sur %s' % Host,'yellow',f)
|
||||||
|
|
||||||
result += f.table(1)
|
result += f.table(1)
|
||||||
result += f.table_row(1)
|
result += f.table_row(1)
|
||||||
for t in Data.keys() :
|
for t in Data.keys() :
|
||||||
result += f.table_cell(1,{'valign':'top'})
|
result += f.table_cell(1,{'valign':'top'})
|
||||||
result += FormatType(t,Data[t],f)
|
result += FormatType(t,Data[t],f)
|
||||||
result += f.table_cell(0)
|
result += f.table_cell(0)
|
||||||
|
|
||||||
result += f.table_row(0)
|
result += f.table_row(0)
|
||||||
result += f.table(0)
|
result += f.table(0)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def FormatHosts(Data, f) :
|
def FormatHosts(Data, f) :
|
||||||
"""
|
"""
|
||||||
Retourne le code HTML de tous les hotes fournis
|
Retourne le code HTML de tous les hotes fournis
|
||||||
Data : dictionnaire contenant toutes les données Data[hote][type][service][info]
|
Data : dictionnaire contenant toutes les données Data[hote][type][service][info]
|
||||||
f : formatter
|
f : formatter
|
||||||
"""
|
"""
|
||||||
|
|
||||||
result = ''
|
result = ''
|
||||||
|
|
||||||
for h in Data.keys() :
|
for h in Data.keys() :
|
||||||
result += FormatHost(h,Data[h],f)
|
result += FormatHost(h,Data[h],f)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def Cellule(texte, couleur, f) :
|
def Cellule(texte, couleur, f) :
|
||||||
|
@ -221,13 +221,13 @@ def execute(macro, filtre) :
|
||||||
Corps principal de la macro
|
Corps principal de la macro
|
||||||
"""
|
"""
|
||||||
f = macro.formatter
|
f = macro.formatter
|
||||||
|
|
||||||
# on met en forme le filtre
|
# on met en forme le filtre
|
||||||
if not filtre :
|
if not filtre :
|
||||||
filtre = 'all'
|
filtre = 'all'
|
||||||
else :
|
else :
|
||||||
filtre = filtre.lower()
|
filtre = filtre.lower()
|
||||||
|
|
||||||
if filtre == 'off' :
|
if filtre == 'off' :
|
||||||
# tous les services off
|
# tous les services off
|
||||||
status = AllStatusOff()
|
status = AllStatusOff()
|
||||||
|
@ -241,35 +241,35 @@ def execute(macro, filtre) :
|
||||||
# tous les services
|
# tous les services
|
||||||
status = AllStatus()
|
status = AllStatus()
|
||||||
return FormatHosts(status, f)
|
return FormatHosts(status, f)
|
||||||
|
|
||||||
elif '@' in filtre :
|
elif '@' in filtre :
|
||||||
# affichage d'un service simple
|
# affichage d'un service simple
|
||||||
|
|
||||||
host = filtre.split('@')[1]
|
host = filtre.split('@')[1]
|
||||||
service = filtre.split('@')[0]
|
service = filtre.split('@')[0]
|
||||||
status = HostStatus(host)
|
status = HostStatus(host)
|
||||||
|
|
||||||
# recherche du service dans la config
|
# recherche du service dans la config
|
||||||
s = {}
|
s = {}
|
||||||
for t in status.keys() :
|
for t in status.keys() :
|
||||||
if service in status[t].keys() :
|
if service in status[t].keys() :
|
||||||
s = status[t][service]
|
s = status[t][service]
|
||||||
|
|
||||||
if not s :
|
if not s :
|
||||||
# service non trouvé
|
# service non trouvé
|
||||||
code = f.table_cell(0)
|
code = f.table_cell(0)
|
||||||
code += f.table_cell(1,{'style':'background-color:yellow'})
|
code += f.table_cell(1,{'style':'background-color:yellow'})
|
||||||
code += f.text(u'Service introuvable')
|
code += f.text(u'Service introuvable')
|
||||||
return code
|
return code
|
||||||
|
|
||||||
# création de la chaine de retour
|
# création de la chaine de retour
|
||||||
code = f.table_cell(0)
|
code = f.table_cell(0)
|
||||||
if s['status'] in ['running','accessible'] :
|
if s['status'] in ['running','accessible'] :
|
||||||
code += f.table_cell(1,{'style':'background-color:lime'})
|
code += f.table_cell(1,{'style':'background-color:lime'})
|
||||||
else :
|
else :
|
||||||
code += f.table_cell(1,{'style':'background-color:red'})
|
code += f.table_cell(1,{'style':'background-color:red'})
|
||||||
code += f.text(s['status'])
|
code += f.text(s['status'])
|
||||||
return code
|
return code
|
||||||
|
|
||||||
else :
|
else :
|
||||||
return Cellule('Erreur de filtre','yellow',f)
|
return Cellule('Erreur de filtre','yellow',f)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue