|
@@ -81,7 +81,7 @@ def setup(bot):
|
|
|
highscores['clients'] = 0
|
|
|
highscores['clients_ts'] = time.time()
|
|
|
|
|
|
- monitored_nodes = shelve.open('monitorednodes', writeback=True)
|
|
|
+ monitored_nodes = shelve.open('nodes.monitored', writeback=True)
|
|
|
|
|
|
seen_nodes = shelve.open('nodes.seen', writeback=True)
|
|
|
bot.memory['seen_nodes'] = seen_nodes
|
|
@@ -679,12 +679,17 @@ def ffpb_monitor_ping(bot):
|
|
|
notify_target = bot.config.ffpb.msg_target
|
|
|
|
|
|
for node in monitored_nodes:
|
|
|
- added = monitored_nodes[node][0]
|
|
|
- last_status = monitored_nodes[node][1]
|
|
|
- last_check = monitored_nodes[node][2]
|
|
|
+ mon = monitored_nodes[node]
|
|
|
+ added = mon['added']
|
|
|
+ last_status = mon['status']
|
|
|
+ last_check = mon['last_check']
|
|
|
+ last_success = mon['last_success']
|
|
|
|
|
|
current_status = ffpb_ping(bot=None, target_name=node)
|
|
|
- monitored_nodes[node] = ( added, current_status, time.time() )
|
|
|
+ if current_status is None: current_status = False
|
|
|
+ mon['status'] = current_status
|
|
|
+ mon['last_check'] = time.time()
|
|
|
+ if current_status == True: mon['last_success'] = time.time()
|
|
|
print("Monitoring ({0}) {1} (last: {2} at {3})".format(node, current_status, last_status, time.strftime('%Y-%m-%d %H:%M', time.localtime(last_check))))
|
|
|
if last_status != current_status and (last_status or current_status):
|
|
|
if last_check is None:
|
|
@@ -692,7 +697,7 @@ def ffpb_monitor_ping(bot):
|
|
|
continue
|
|
|
|
|
|
if current_status == True:
|
|
|
- bot.msg(notify_target, 'Monitoring: Knoten \'{0}\' pingt wieder (zuletzt {1})'.format(node, pretty_date(last_check)))
|
|
|
+ bot.msg(notify_target, 'Monitoring: Knoten \'{0}\' pingt wieder (zuletzt {1})'.format(node, pretty_date(last_success) if not last_success is None else '[nie]'))
|
|
|
else:
|
|
|
bot.msg(notify_target, 'Monitoring: Knoten \'{0}\' DOWN'.format(node))
|
|
|
|
|
@@ -714,7 +719,14 @@ def ffpb_monitor(bot, trigger):
|
|
|
if node in monitored_nodes:
|
|
|
bot.say('Knoten \'{0}\' wird bereits gemonitored.'.format(node))
|
|
|
return
|
|
|
- monitored_nodes[node] = ( trigger.sender, None, None )
|
|
|
+
|
|
|
+ monitored_nodes[node] = {
|
|
|
+ 'added': trigger.sender,
|
|
|
+ 'status': None,
|
|
|
+ 'last_check': None,
|
|
|
+ 'last_success': None,
|
|
|
+ }
|
|
|
+
|
|
|
bot.say('Knoten \'{0}\' wird jetzt ganz genau beobachtet.'.format(node))
|
|
|
return
|
|
|
|
|
@@ -723,13 +735,13 @@ def ffpb_monitor(bot, trigger):
|
|
|
bot.say('Knoten \'{0}\' war gar nicht im Monitoring?!?'.format(node))
|
|
|
return
|
|
|
del monitored_nodes[node]
|
|
|
- bot.say('Okidoki, \'{0}\' war mir sowieso egal.'.format(node))
|
|
|
+ bot.say('Okidoki, \'{0}\' lasse ich jetzt links liegen.'.format(node))
|
|
|
return
|
|
|
|
|
|
if cmd == "info":
|
|
|
if node in monitored_nodes:
|
|
|
info = monitored_nodes[node]
|
|
|
- bot.say('Knoten \'{0}\' wurde zuletzt {1} gepingt (Ergebnis: {2}) - der Auftrag kam von {3}'.format(node, pretty_date(info[2]) if not info[2] is None else "^W noch nie", info[1], info[0]))
|
|
|
+ bot.say('Knoten \'{0}\' wurde zuletzt {1} gepingt (Ergebnis: {2})'.format(node, pretty_date(info['last_check']) if not info['last_check'] is None else "^W noch nie", info['status']))
|
|
|
else:
|
|
|
bot.say('Knoten \'{0}\' ist nicht im Monitoring.'.format(node))
|
|
|
return
|