diff --git a/src/appeartv/baseinfo.ini b/src/appeartv/baseinfo.ini new file mode 100644 index 0000000..4c01d6d --- /dev/null +++ b/src/appeartv/baseinfo.ini @@ -0,0 +1,7 @@ +[info] +title = AppearTV +author = Markus Birth +description = SNMP based check (alarm messages) for AppearTV devices. +version = 2016.06.03.1 +version.min_required = 1.2.8p2 +download_url = https://github.com/mbirth/check_mk-plugins diff --git a/src/appeartv/checks/appeartv_messages b/src/appeartv/checks/appeartv_messages new file mode 100644 index 0000000..7fdef4d --- /dev/null +++ b/src/appeartv/checks/appeartv_messages @@ -0,0 +1,71 @@ +#!/usr/bin/python +# -*- coding: utf-8; py-indent-offset: 4 -*- +# _______ __ _ ____ __ +# | | \ | |___ \ / / +# | | \| | __) | / /-,_ +# | | |\ |/ __/ /__ _| +# |_______|_| \__|_____| |_| +# +# @author Markus Birth + +def inventory_appeartv_messages(info): + inventory = [] + inventory.append( ("Messages", None) ) + return inventory + +def check_appeartv_messages(item, _no_params, info): + severities = [ "Indeterminate", "Critical", "Major", "Minor", "Warning", "Cleared", "Notify" ] + sev2omd = [ 1, 2, 2, 1, 1, 0, 0 ] + + status = 0 + message = "" + longmsg = "" + maxsev = 1 + + for seqno, mid, srcname, text, gentime, detailpres, severity, detail, slot, port, instance, cardid in info: + # replace Pipes by Slashes to not confuse Check_MK + text = text.replace("|", "/") + detail = detail.replace("|", "/") + omdsev = sev2omd[int(severity)] + if omdsev > status: + status = omdsev + if omdsev == maxsev: + message += " %s: %s." % (srcname, text) + elif omdsev > maxsev: + # Clear message to only show alarms of the highest priority + message = " %s: %s." % (srcname, text) + maxsev = omdsev + longmsg += "\\n%s [%s] %s: %s" % (gentime, severities[int(severity)], srcname, text) + if detailpres == "1": + longmsg += " (%s)" % (detail) + longmsg += " [Slot: %s, Port: %s, Card: %s]" % (slot, port, cardid) + + if status == 0: + message += "No messages." + + message += longmsg + + return status, message + +check_info["appeartv_messages"] = { + "check_function" : check_appeartv_messages, + "inventory_function" : inventory_appeartv_messages, + "service_description" : "%s", + "snmp_info" : (".1.3.6.1.4.1.23916.3.1.4.1", [ + 1, # msgSeqNo + 2, # msgId + 3, # msgSrcName + 4, # msgText + 6, # msgGenTime + 11, # msgDetailPresent + 13, # msgSeverity (0-unkn, 1-critical .. 6-notify) + 14, # msgDetail + 15, # msgSlot + 16, # msgPort + 17, # msgInstance + 18, # msgCardId + ]), + "snmp_scan_function" : lambda oid: oid(".1.3.6.1.2.1.1.2.0").startswith(".1.3.6.1.4.1.23916"), + "has_perfdata" : False, + "handle_empty_info" : True +}