From 2d1ab3c193132ff823794bb6cf41a5e66891e310 Mon Sep 17 00:00:00 2001 From: George Pochiscan Date: Tue, 4 Aug 2020 21:44:25 +0300 Subject: [PATCH] George Pochiscan: Removed obsolete check for juniper_ive and updated checks for 1.6 compatibility. --- check_mk-juniper_extensions/juniper_chassis | 47 ++++++++++++++++ .../juniper_checks-1.1.mkp | Bin 0 -> 2403 bytes check_mk-juniper_extensions/juniper_cpu | 44 +++++++++++++++ check_mk-juniper_extensions/juniper_mem | 35 ++++++++++++ check_mk-juniper_extensions/juniper_processes | 29 ++++++++++ check_mk-juniper_extensions/juniper_temp | 50 ++++++++++++++++++ 6 files changed, 205 insertions(+) create mode 100644 check_mk-juniper_extensions/juniper_chassis create mode 100644 check_mk-juniper_extensions/juniper_checks-1.1.mkp create mode 100644 check_mk-juniper_extensions/juniper_cpu create mode 100644 check_mk-juniper_extensions/juniper_mem create mode 100644 check_mk-juniper_extensions/juniper_processes create mode 100644 check_mk-juniper_extensions/juniper_temp diff --git a/check_mk-juniper_extensions/juniper_chassis b/check_mk-juniper_extensions/juniper_chassis new file mode 100644 index 0000000..1641b81 --- /dev/null +++ b/check_mk-juniper_extensions/juniper_chassis @@ -0,0 +1,47 @@ +#!/usr/bin/python + +# OIDs used: +# JUNIPER-MIB::jnxOperatingDescr .1.3.6.1.4.1.2636.3.1.13.1.5 +# JUNIPER-MIB::jnxOperatingState .1.3.6.1.4.1.2636.3.1.13.1.6 +# JUNIPER-MIB::jnxBoxDescr .1.3.6.1.4.1.2636.3.1.2.0 + +# Scan function looks for 'Juniper' in jnxBoxDescr + +# Author: Mike Julian - mike@mikejulian.com - http://mikejulian.com + +def inventory_juniper_chassis(info): + inventory = [] + for line in info: + inventory.append((line[0], None)) + return inventory + +def check_juniper_chassis(item, _no_params, info): + for descr, state in info: + if item == descr: + status = int(state) + if status == 1: + return (1, "CRIT - Status: unknown") + elif status == 2: + return (0, "OK - Status: Running (active)") + elif status == 3: + return (0, "OK - Status: Ready (not active)") + elif status == 4: + return (2, "WARN - Status: Held in reset") + elif status == 5: + return (0, "WARN - Status: Running at full speed (fans only)") + elif status == 6: + return (1, "CRIT - Status: Down/Offline (PSUs only)") + elif status == 7: + return (0, "OK - Status: Standby") + else: + return (3, "UNKNOWN") + return (3, "UNKNOWN") + +check_info["juniper_chassis"] = { + "check_function" : check_juniper_chassis, + "inventory_function" : inventory_juniper_chassis, + "service_description" : "Chassis: %s", + "has_perfdata" : False, + "snmp_scan_function" : lambda oid: "Juniper" in oid(".1.3.6.1.4.1.2636.3.1.2.0"), + "snmp_info" : ( ".1.3.6.1.4.1.2636.3.1.13.1", [5, 6]), +} diff --git a/check_mk-juniper_extensions/juniper_checks-1.1.mkp b/check_mk-juniper_extensions/juniper_checks-1.1.mkp new file mode 100644 index 0000000000000000000000000000000000000000..90b2a0b95c70a3290bdc02d92729848c8e6fd81e GIT binary patch literal 2403 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 crit: + return (2, "CRIT" + infotext + " (critical at %d%%)" % crit, perfdata) + elif util >= warn: + return (1, "WARN" + infotext + " (warning at %d%%)" % warn, perfdata) + else: + return (0, "OK" + infotext, perfdata) + return (3, "UNKNOWN") + +check_info["juniper_cpu"] = { + "check_function" : check_juniper_cpu, + "inventory_function" : inventory_juniper_cpu, + "service_description" : "CPU Utilization: ", + "has_perfdata" : True, + "group" : "cpu_utilization", + "snmp_scan_function" : lambda oid: "Juniper" in oid(".1.3.6.1.4.1.2636.3.1.2.0"), + "snmp_info" : ( ".1.3.6.1.4.1.2636.3.1.13.1", [ 5, 8 ] ), + "default_levels_variable" : "juniper_cpu_default_levels", +} + diff --git a/check_mk-juniper_extensions/juniper_mem b/check_mk-juniper_extensions/juniper_mem new file mode 100644 index 0000000..56d444a --- /dev/null +++ b/check_mk-juniper_extensions/juniper_mem @@ -0,0 +1,35 @@ +#!/usr/bin/python +juniper_mem_default_levels = (80.0, 90.0) +fruTypesMem = ['Routing Engine', 'FPC', 'PIC'] + +def inventory_juniper_mem(info): + inventory = [] + for line in info: + for fru in fruTypesMem: + if line[0].startswith(fru): + inventory.append((line[0], juniper_mem_default_levels)) + return inventory + +def check_juniper_mem(item, params, info): + for descr, buffer in info: + if item == descr: + warn, crit = params + util = float(buffer) + infotext = " - %2.1f%% Utilization" % util + perfdata = [("Memory Usage (percent)", util, warn, crit, 0, 100)] + if util >= crit: + return (2, "CRIT" + infotext + " (critical at %d%%)" % crit, perfdata) + elif util >= warn: + return (1, "WARN" + infotext + " (warning at %d%%)" % warn, perfdata) + else: + return (0, "OK" + infotext, perfdata) + return (3, "UNKNOWN") + +check_info["juniper_mem"] = { + "check_function" : check_juniper_mem, + "inventory_function" : inventory_juniper_mem, + "service_description" : "Memory Usage", + "has_perfdata" : True, + "snmp_scan_function" : lambda oid: "Juniper" in oid(".1.3.6.1.4.1.2636.3.1.2.0"), + "snmp_info" : ( ".1.3.6.1.4.1.2636.3.1.13.1", ["5", "11"]), +} diff --git a/check_mk-juniper_extensions/juniper_processes b/check_mk-juniper_extensions/juniper_processes new file mode 100644 index 0000000..d2c30c4 --- /dev/null +++ b/check_mk-juniper_extensions/juniper_processes @@ -0,0 +1,29 @@ +#!/usr/bin/python + +def inventory_juniper_processes(info): + inventory = [] + for line in info: + if line[0].startswith("mgd"): + continue + elif line[0].startswith("sshd"): + continue + else: + inventory.append((line[0], None)) + return inventory + +def check_juniper_processes(item, params, info): + for procName, procUsage in info: + if item == procName: + usage = int(procUsage) / 8 + perfdata = [ ( "Memory (kB)", usage) ] + return (0, "OK: %s kB Used" % usage, perfdata) + return (3, "UNKNOWN") + +check_info["juniper_processes"] = { + "check_function" : check_juniper_processes, + "inventory_function" : inventory_juniper_processes, + "service_description" : "Process", + "has_perfdata" : True, + "snmp_scan_function" : lambda oid: "Juniper" in oid(".1.3.6.1.4.1.2636.3.1.2.0"), + "snmp_info" : ( ".1.3.6.1.2.1.54.1.2.3.1", [7, 10]), +} diff --git a/check_mk-juniper_extensions/juniper_temp b/check_mk-juniper_extensions/juniper_temp new file mode 100644 index 0000000..08d9d52 --- /dev/null +++ b/check_mk-juniper_extensions/juniper_temp @@ -0,0 +1,50 @@ +#!/usr/bin/python + +# OIDs used: +# JUNIPER-MIB::jnxOperatingDescr .1.3.6.1.4.1.2636.3.1.13.1.5 +# JUNIPER-MIB::jnxOperatingTemp .1.3.6.1.4.1.2636.3.1.13.1.7 +# JUNIPER-MIB::jnxOperatingDescr .1.3.6.1.4.1.2636.3.1.2.0 + +# Author: Mike Julian - mike@mikejulian.com - http://mikejulian.com + + +factory_settings["juniper_temp_default_levels"] = { + "levels": (25, 28) +} + + +def inventory_juniper_temp(info): + frus = ['CB', 'Routing Engine', 'FPC', 'Bottom Tray Fan', 'Bottom Fan Tray', 'Top Tray Fan', 'Top Fan Tray', 'PEM'] + inventory = [] + for line in info: + # Exclude interface cards, as they have no temp sensors + for fru in frus: + if line[0].startswith(fru): + inventory.append((line[0], juniper_temp_default_levels)) + return inventory + +def check_juniper_temp(item, params, info): + for descr, temp in info: + warn,crit = params["levels"] + if item == descr: + temp = int(temp) + perfdata = [ ( "temp", temp) ] + if temp >= crit: + return (2, "CRIT - Temperature above threshold (%s): %sC" % (crit,temp), perfdata) + elif temp >= warn: + return (1, "WARN - Temperature above threshold (%s): %sC" % (warn,temp), perfdata) + else: + return (0, "OK - Temperature: %sC" % temp, perfdata) + return (3, "UNKNOWN") + +check_info["juniper_temp"] = { + "check_function" : check_juniper_temp, + "inventory_function" : inventory_juniper_temp, + "service_description" : "Temp: %s", + "has_perfdata" : True, + "snmp_scan_function" : lambda oid: "Juniper" in oid(".1.3.6.1.4.1.2636.3.1.2.0"), + "snmp_info" : ( ".1.3.6.1.4.1.2636.3.1.13.1", [5, 7]), + "group" : "temperature", + "includes" : [ "temperature.include" ], + "default_levels_variable" : "juniper_temp_default_levels" +}