Module: check_mk
Branch: master
Commit: 01e6a59d4480073446fea17c3a3932adca36c3ce
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=01e6a59d448007…
Author: Andreas Boesl <ab(a)mathias-kettner.de>
Date: Mon Dec 15 12:12:06 2014 +0100
Conflicts:
ChangeLog
notifications/spectrum
---
.werks/1662 | 10 ++++++
ChangeLog | 1 +
notifications/spectrum | 63 +++++++++++++++++++++----------------
web/plugins/wato/notifications.py | 6 ++++
4 files changed, 53 insertions(+), 27 deletions(-)
diff --git a/.werks/1662 b/.werks/1662
new file mode 100644
index 0000000..bf4cbc3
--- /dev/null
+++ b/.werks/1662
@@ -0,0 +1,10 @@
+Title: notification plugin spectrum: finalized script. now able to handle host
notications
+Level: 1
+Component: notifications
+Class: feature
+Compatible: compat
+State: unknown
+Version: 1.2.7i1
+Date: 1418641728
+
+
diff --git a/ChangeLog b/ChangeLog
index f61ded8..c572ca5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -20,6 +20,7 @@
* 1761 FIX: Ruleset search is now consistent for host & serviceparameters and
manual checks
Notifications:
+ * 1662 notification plugin spectrum: finalized script. now able to handle host
notications
* 1661 FIX: mknotifyd: improved performance when receiving forwarded notifications
diff --git a/notifications/spectrum b/notifications/spectrum
index aa7c6c4..3bbd0a4 100755
--- a/notifications/spectrum
+++ b/notifications/spectrum
@@ -26,17 +26,24 @@
# Boston, MA 02110-1301 USA.
-import os, subprocess
+import os, subprocess, sys
-# Note: This notifcation plugin can only handle service notifications
-# Host notifications will fail
+# Note: This script contains an example configuration
+# You will probably have to modify the sent information
def send_trap(oids, target, community):
- cmd = ["/usr/sbin/snmptrap", '-v', '1', '-c',
community, target ]
- for oid, text in oids.items():
- cmd += [oid, str(text)]
+ cmd = ["/usr/bin/snmptrap", '-v', '1', '-c',
community, target, "1.3.6.1.4.1.100.1.2.3", "172.25.221.23",
"6", "1", "\"\"" ]
+ for oid, value in oids.items():
+ # Feel free to add more types. Currently only Integer and Strings are supported
+ oid_type = type(value)
+ oid_id = oid_type == int and "i" or "s"
+ if oid_type in [str, unicode]:
+ value = "\"%s\"" % value.replace("\"",
" ")
+ cmd += [oid, oid_id, "%s" % value]
+
+ sys.stderr.write("%r" % cmd)
p = subprocess.Popen(cmd, stdin = subprocess.PIPE)
- return True
+ return p.wait()
def main():
# gather all options from env
@@ -49,31 +56,33 @@ def main():
if "PARAMETER_1" in context:
context["PARAMETER_COMMUNITY"] = context["PARAMETER_1"]
context["PARAMETER_DESTINATION"] = context["PARAMETER_2"]
+ context["PARAMETER_BASEOID"] = context["PARAMETER_3"]
+ base_oid = context.get("PARAMETER_BASEOID", "1.3.6.1.4.1.1234")
- complete_service_url = context["MONITORING_HOST"]
+ # adjust these oids to your needs
+ complete_url = "https://" + context["MONITORING_HOST"]
if "OMD_SITE" in context:
- complete_service_url += "/" + context["OMD_SITE"]
- complete_service_url += context['SERVICEURL']
+ complete_url += "/" + context["OMD_SITE"]
+ complete_url += context.get("SERVICEURL",
context.get("HOSTURL"))
- # adjust these oids to your needs
- # Note: HOSTCONTACTGROUPNAMES is only available via cmc
oids = {
- "1.3.6.1.4.1.13424.10.5.2.1.1.1" : context['MONITORING_HOST'],
- "1.3.6.1.4.1.13424.10.5.2.1.1.2" : context['HOSTNAME'],
- "1.3.6.1.4.1.13424.10.5.2.1.1.3" : context['HOSTADDRESS'],
- "1.3.6.1.4.1.13424.10.5.2.1.1.4" :
context['HOSTCONTACTGROUPNAMES'],
- "1.3.6.1.4.1.13424.10.5.2.1.1.5" : context['SERVICEDESC'],
- "1.3.6.1.4.1.13424.10.5.2.1.1.6" : context['SERVICESTATE'],
- "1.3.6.1.4.1.13424.10.5.2.1.1.7" : context['SERVICEOUTPUT'],
- "1.3.6.1.4.1.13424.10.5.2.1.1.8" : "HARD", # Notifications
always are in HARDSTATE
- "1.3.6.1.4.1.13424.10.5.2.1.1.9" : context['SERVICEDESC'],
- "1.3.6.1.4.1.13424.10.5.2.1.1.10" : 3, #SPECIFIC TRAP (type) NUMBER
- "1.3.6.1.4.1.13424.10.5.2.1.1.11" : "CNO Digital Lvl2 Support (P3
ET, call xxxxx)", #CALLOUT STRING
- "1.3.6.1.4.1.13424.10.5.2.1.1.12" : complete_service_url,
- "1.3.6.1.4.1.13424.10.5.2.1.1.13" : "%s Alarm on host %s" %
(context['SERVICEDESC'], context['HOSTNAME']),
- "1.3.6.1.4.1.13424.10.5.2.1.1.14" :
context['SERVICEGROUPNAMES'],
+ base_oid + ".1" : context['MONITORING_HOST'],
+ base_oid + ".2" : context['HOSTNAME'],
+ base_oid + ".3" : context['HOSTADDRESS'],
+ base_oid + ".4" : context.get('HOSTGROUPNAMES',
""),
+ base_oid + ".5" : context.get('SERVICEDESC',
'Connectivity'),
+ base_oid + ".6" : context.get('SERVICESTATE',
context.get('HOSTSTATE')),
+ base_oid + ".7" : context.get('SERVICEOUTPUT',
context.get("HOSTOUTPUT")),
+ base_oid + ".8" : "HARD", # Notifications always are in
HARDSTATE
+ base_oid + ".9" : context.get('SERVICEDESC',
'Connectivity'),
+ base_oid + ".10" : 3, #SPECIFIC TRAP (type) NUMBER
+ base_oid + ".11" : "Call number 123456", #CALLOUT STRING
+ base_oid + ".12" : complete_url,
+ base_oid + ".13" : "%s alarm on host %s" %
(context.get('SERVICEDESC', 'Connectivity'),
context['HOSTNAME']),
+ base_oid + ".14" : context.get('SERVICEGROUPNAMES',
""),
}
- send_trap(oids, context['PARAMETER_DESTINATION'],
context['PARAMETER_COMMUNITY'])
+
+ sys.exit(send_trap(oids, context['PARAMETER_DESTINATION'],
context['PARAMETER_COMMUNITY']))
main()
diff --git a/web/plugins/wato/notifications.py b/web/plugins/wato/notifications.py
index 0814e4b..27e57ae 100644
--- a/web/plugins/wato/notifications.py
+++ b/web/plugins/wato/notifications.py
@@ -222,6 +222,12 @@ register_notification_parameters("spectrum",
title = _("SNMP Community"),
help = _("SNMP Community for the SNMP trap")
),
+ ("baseoid",
+ TextAscii(
+ title = _("Base OID"),
+ help = _("The base OID for the trap content")
+ default_value = "1.3.6.1.4.1.1234"
+ ),
),
])
)