Added Exception for incorrect Zabbix authentication and implemented global color for module result

This commit is contained in:
Alexandr Mikhailov 2015-12-17 23:18:37 +03:00 committed by enkore
parent bac8a05d41
commit b2dd1b46ca

View File

@ -6,6 +6,12 @@ class Zabbix(IntervalModule):
""" """
Zabbix alerts watcher Zabbix alerts watcher
.. rubric:: Available formatters
* {default} - Full output count alerts like total:a5/a4/a3/a2/a1/a0
* {total} - Total count of alerts
* {aX_count} - Count alerts of X severity
* {colorX} - Predicted color for X severity. It can be used with Pango markup hint for different colours at each severity with
Requires pyzabbix Requires pyzabbix
""" """
settings = ( settings = (
@ -23,6 +29,7 @@ class Zabbix(IntervalModule):
alerts_color = ["#DBDBDB", "#D6F6FF", "#FFF6A5", "#FFB689", "#FF9999", "#FF3838"] alerts_color = ["#DBDBDB", "#D6F6FF", "#FFF6A5", "#FFB689", "#FF9999", "#FF3838"]
zapi = ZabbixAPI(self.zabbix_server) zapi = ZabbixAPI(self.zabbix_server)
try:
zapi.login(self.zabbix_user, self.zabbix_password) zapi.login(self.zabbix_user, self.zabbix_password)
triggers = zapi.trigger.get(only_true=1, triggers = zapi.trigger.get(only_true=1,
skipDependent=1, skipDependent=1,
@ -37,15 +44,22 @@ class Zabbix(IntervalModule):
cdict = {} cdict = {}
for i in range(0, 6): for i in range(0, 6):
alerts[i] = alerts_list.count(str(i)) alerts[i] = alerts_list.count(str(i))
cdict["a%s" % i]=alerts[i] cdict["a%s_count" % i]=alerts[i]
if alerts[i] == 0: if alerts[i] == 0:
cdict["c%s" % i] = "#FFFFFF" cdict["color%s" % i] = "#FFFFFF"
else: else:
cdict["c%s" % i] = alerts_color[i] cdict["color%s" % i] = alerts_color[i]
cdict["default"] = "{0}:{a[5]}/{a[4]}/{a[3]}/{a[2]}/{a[1]}/{a[0]}".format(sum(alerts), a=alerts) cdict["default"] = "{0}:{a[5]}/{a[4]}/{a[3]}/{a[2]}/{a[1]}/{a[0]}".format(sum(alerts), a=alerts)
cdict["total"] = sum(alerts) cdict["total"] = sum(alerts)
color = alerts_color[max(alerts)]
result = self.format.format(**cdict)
except Exception as e:
result = "Zabbix connection error"
color = "#FF0000"
self.output = { self.output = {
"full_text": self.format.format(**cdict) "full_text": result,
"color": color
} }