1
2
3
4
5
6
7
8
9 """
10 Agent zephir pour la surveillance ds démons bacula via check_bacula
11 """
12
13 from twisted.internet import defer
14 from twisted.internet.utils import getProcessOutput, getProcessValue
15 from os import system
16 import traceback
17
18 from zephir.monitor.agentmanager.agent import Agent
19 from zephir.monitor.agentmanager.data import HTMLData, TableData
20 from zephir.monitor.agentmanager.util import status_to_img, boolean_to_onoff, log
21 from zephir.monitor.agentmanager import status
22
24
25 - def __init__(self, name, password, **params):
26 Agent.__init__(self, name, **params)
27 self.name = name
28 self.short_name = self.name.split('-')[1]
29 self.password = password
30 self.table = TableData([
31 ('status', "Etat", {'align':'center'}, status_to_img),
32 ('description', "Description", {'align':'left'}, None),
33 ('host', "Hôte", {'align':'left'}, None),
34 ('port', "Port", {'align':'left'}, None) ])
35 self.data = [self.table]
36
38 CHECK_BACULA = '/usr/lib/nagios/plugins/check_bacula'
39 result = getProcessOutput(CHECK_BACULA,
40 args=('-H', 'localhost',
41 '-D', self.short_name,
42 '-M', '127.0.0.1-mon',
43 '-K', self.password),
44 env={'LC_ALL': 'C'})
45 result.addCallbacks(self.measure_activity, self.measure_error)
46 return result
47
58
60 log.msg(dir(failure))
61 traceback.print_exc()
62
63
65 Agent.write_data(self)
66 if self.last_measure is not None:
67 self.table.table_data = self.last_measure.value['services']
68
70 """remonte une erreur si un des services est tombé"""
71 if self.last_measure is not None:
72 for service in self.last_measure.value['services']:
73 if service['status'] != 'On':
74 return status.Error()
75 else:
76
77 return status.Unknown()
78 return status.OK()
79