From d0ed79dc27d303dfe50ac8bed0cc337bdcd1d00a Mon Sep 17 00:00:00 2001 From: "Thorsten.Klein" Date: Fri, 27 Feb 2015 11:07:31 +0100 Subject: [PATCH 1/2] Added checks for battery charge and runtime --- nut_cmk/checks/nut | 65 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 52 insertions(+), 13 deletions(-) diff --git a/nut_cmk/checks/nut b/nut_cmk/checks/nut index cc2323e..b199d5c 100644 --- a/nut_cmk/checks/nut +++ b/nut_cmk/checks/nut @@ -51,7 +51,6 @@ nut_input_voltage_fault_default_levels = (155, 160) nut_input_default_levels = (245, 250) nut_input_freq_default_levels = (51, 55) - # the inventory function (dummy) def inventory_nut(check_type, info): # begin with empty inventory @@ -71,6 +70,8 @@ def inventory_nut(check_type, info): elif check_type == 'nut.input' and line[1] == 'input.voltage:': inventory.append((line[0], None, 'nut_input_default_levels')) elif check_type == 'nut.input.fault' and line[1] == 'input.voltage.fault:': inventory.append((line[0], None, 'nut_input_voltage_fault_default_levels')) elif check_type == 'nut.battery' and line[1] == 'battery.voltage:': inventory.append((line[0], None, 'nut_battery_default_levels')) + elif check_type == 'nut.battery.charge' and line[1] == 'battery.charge:': inventory.append((line[0], None, 'nut_battery_charge_default_levels')) + elif check_type == 'nut.battery.runtime' and line[1] == 'battery.runtime:': inventory.append((line[0], None, 'nut_battery_runtime_default_levels')) elif check_type == 'nut.output' and line[1] == 'output.voltage:': inventory.append((line[0], None, 'nut_output_default_values')) elif check_type == 'nut.beeper' and line[1] == 'ups.beeper.status:': inventory.append((line[0], None)) elif check_type == 'nut.load' and line[1] == 'ups.load:': inventory.append((line[0], None, 'nut_load_default_values')) @@ -118,8 +119,44 @@ def check_nut_battery(item, params, info): return (3, "UNKNOWN - battery.voltage not found in agent output for %s" % item) +def check_nut_battery_charge(item, params, info): + warn, crit = params + + for line in info: + + if len(line) >= 3 and line[0] == item and line[1] == "battery.charge:": + charge = float(line[2]) + perfdata = [ ( "charge", charge, warn, crit ) ] + + if charge <= crit: + return (2, "CRIT - Battery Charge is %0.2fv" % charge, perfdata) + elif charge <= warn: + return (1, "WARN - Battery Charge is %0.2fv" % charge, perfdata) + else: + return (0, "OK - Battery Charge is %0.2fv" % charge, perfdata) + return (3, "UNKNOWN - battery.charge not found in agent output for %s" % item) + +def check_nut_battery_runtime(item, params, info): + warn, crit = params + + for line in info: + + if len(line) >= 3 and line[0] == item and line[1] == "battery.runtime:": + + runtime = float(line[2]) + perfdata = [ ( "runtime", runtime, warn, crit ) ] + + if runtime <= crit: + return (2, "CRIT - Battery Charge is %0.2fv" % runtime, perfdata) + elif runtime <= warn: + return (1, "WARN - Battery Charge is %0.2fv" % runtime, perfdata) + else: + return (0, "OK - Battery Charge is %0.2fv" % runtime, perfdata) + return (3, "UNKNOWN - battery.runtime not found in agent output for %s" % item) + + ### String collection checks def check_nut_device(item, params, info): @@ -238,18 +275,20 @@ def check_nut_status(item, params, info): # declare the check to Check_MK -check_info["nut.battery"] = (check_nut_battery, 'NUT %s Battery Voltage', 1, lambda info: inventory_nut("nut.battery", info)) -check_info["nut.device"] = (check_nut_device, 'NUT %s Device Details', 0, lambda info: inventory_nut("nut.device", info)) -check_info["nut.driver"] = (check_nut_driver, 'NUT %s Driver Details', 0, lambda info: inventory_nut("nut.driver", info)) -check_info["nut.input"] = (lambda item, params, info: check_nut_value(item, params, info,"input.voltage", "voltage", "Input Voltage is %0.2fv"), 'NUT %s Input Voltage', 1, lambda info: inventory_nut("nut.input", info)) -check_info["nut.input.freq"] = (lambda item, params, info: check_nut_value(item, params, info,"input.frequency", "frequency", "Input Frequency is %0.2fHz"), 'NUT %s Input Frequency', 1, lambda info: inventory_nut("nut.input.freq", info)) -check_info["nut.input.fault"] = (lambda item, params, info: check_nut_value(item, params, info,"input.voltage.fault", "voltage", "Input Voltage fault is %0.2fv"), 'NUT %s Input Voltage Fault', 1, lambda info: inventory_nut("nut.input.fault", info)) -check_info["nut.output"] = (lambda item, params, info: check_nut_value(item, params, info,"output.voltage", "voltage", "Output Voltage is %0.2fv"), 'NUT %s Output Voltage', 1, lambda info: inventory_nut("nut.output", info)) -check_info["nut.load"] = (lambda item, params, info: check_nut_value(item, params, info,"ups.load", "load", "Load is %d%%"), 'NUT %s Load Percentage', 1, lambda info: inventory_nut("nut.load", info)) -check_info["nut.temp"] = (lambda item, params, info: check_nut_value(item, params, info,"ups.temperature", "temp", "Temperature is %0.1fC"), 'NUT %s Temperature', 1, lambda info: inventory_nut("nut.temp", info)) -check_info["nut.beeper"] = (check_nut_beeper, 'NUT %s Beeper Status', 0, lambda info: inventory_nut("nut.beeper", info)) -check_info["nut.delay"] = (check_nut_delay, 'NUT %s Delay settings', 0, lambda info: inventory_nut("nut.delay", info)) -check_info["nut.status"] = (check_nut_status, 'NUT %s Status', 0, lambda info: inventory_nut("nut.status", info)) +check_info["nut.battery"] = (check_nut_battery, 'NUT %s Battery Voltage', 1, lambda info: inventory_nut("nut.battery", info)) +check_info["nut.battery.charge"] = (check_nut_battery_charge, 'NUT %s Battery Charge', 1, lambda info: inventory_nut("nut.battery.charge", info)) +check_info["nut.battery.runtime"] = (check_nut_battery_runtime, 'NUT %s Battery Runtime', 1, lambda info: inventory_nut("nut.battery.runtime", info)) +check_info["nut.device"] = (check_nut_device, 'NUT %s Device Details', 0, lambda info: inventory_nut("nut.device", info)) +check_info["nut.driver"] = (check_nut_driver, 'NUT %s Driver Details', 0, lambda info: inventory_nut("nut.driver", info)) +check_info["nut.input"] = (lambda item, params, info: check_nut_value(item, params, info,"input.voltage", "voltage", "Input Voltage is %0.2fv"), 'NUT %s Input Voltage', 1, lambda info: inventory_nut("nut.input", info)) +check_info["nut.input.freq"] = (lambda item, params, info: check_nut_value(item, params, info,"input.frequency", "frequency", "Input Frequency is %0.2fHz"), 'NUT %s Input Frequency', 1, lambda info: inventory_nut("nut.input.freq", info)) +check_info["nut.input.fault"] = (lambda item, params, info: check_nut_value(item, params, info,"input.voltage.fault", "voltage", "Input Voltage fault is %0.2fv"), 'NUT %s Input Voltage Fault', 1, lambda info: inventory_nut("nut.input.fault", info)) +check_info["nut.output"] = (lambda item, params, info: check_nut_value(item, params, info,"output.voltage", "voltage", "Output Voltage is %0.2fv"), 'NUT %s Output Voltage', 1, lambda info: inventory_nut("nut.output", info)) +check_info["nut.load"] = (lambda item, params, info: check_nut_value(item, params, info,"ups.load", "load", "Load is %d%%"), 'NUT %s Load Percentage', 1, lambda info: inventory_nut("nut.load", info)) +check_info["nut.temp"] = (lambda item, params, info: check_nut_value(item, params, info,"ups.temperature", "temp", "Temperature is %0.1fC"), 'NUT %s Temperature', 1, lambda info: inventory_nut("nut.temp", info)) +check_info["nut.beeper"] = (check_nut_beeper, 'NUT %s Beeper Status', 0, lambda info: inventory_nut("nut.beeper", info)) +check_info["nut.delay"] = (check_nut_delay, 'NUT %s Delay settings', 0, lambda info: inventory_nut("nut.delay", info)) +check_info["nut.status"] = (check_nut_status, 'NUT %s Status', 0, lambda info: inventory_nut("nut.status", info)) From 4040bbcbeacd58f59f587d8472d8baf4a6b4a978 Mon Sep 17 00:00:00 2001 From: "Thorsten.Klein" Date: Tue, 3 Mar 2015 11:16:06 +0100 Subject: [PATCH 2/2] Added additional data for battery charge and battery runtime --- nut_cmk/checks/nut | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/nut_cmk/checks/nut b/nut_cmk/checks/nut index b199d5c..c3ef596 100644 --- a/nut_cmk/checks/nut +++ b/nut_cmk/checks/nut @@ -46,6 +46,8 @@ nut_load_default_values = (50, 70) nut_output_default_values = (245, 250) nut_battery_default_levels = (10, 5) +nut_battery_charge_default_levels = (90, 85) +nut_battery_runtime_default_levels = (1200, 900) nut_input_voltage_fault_default_levels = (155, 160) nut_input_default_levels = (245, 250) @@ -111,11 +113,11 @@ def check_nut_battery(item, params, info): perfdata = [ ( "voltage", voltage, warn, crit ) ] if voltage <= crit: - return (2, "CRIT - Battery Voltage is %0.2fv" % voltage, perfdata) + return (2, "CRIT - Battery Voltage is %0.2f V" % voltage, perfdata) elif voltage <= warn: - return (1, "WARN - Battery Voltage is %0.2fv" % voltage, perfdata) + return (1, "WARN - Battery Voltage is %0.2f V" % voltage, perfdata) else: - return (0, "OK - Battery Voltage is %0.2fv" % voltage, perfdata) + return (0, "OK - Battery Voltage is %0.2f V" % voltage, perfdata) return (3, "UNKNOWN - battery.voltage not found in agent output for %s" % item) @@ -130,11 +132,11 @@ def check_nut_battery_charge(item, params, info): perfdata = [ ( "charge", charge, warn, crit ) ] if charge <= crit: - return (2, "CRIT - Battery Charge is %0.2fv" % charge, perfdata) + return (2, "CRIT - Battery Charge is %0.2f %%" % charge, perfdata) elif charge <= warn: - return (1, "WARN - Battery Charge is %0.2fv" % charge, perfdata) + return (1, "WARN - Battery Charge is %0.2f %%" % charge, perfdata) else: - return (0, "OK - Battery Charge is %0.2fv" % charge, perfdata) + return (0, "OK - Battery Charge is %0.2f %%" % charge, perfdata) return (3, "UNKNOWN - battery.charge not found in agent output for %s" % item) @@ -145,15 +147,15 @@ def check_nut_battery_runtime(item, params, info): if len(line) >= 3 and line[0] == item and line[1] == "battery.runtime:": - runtime = float(line[2]) + runtime = float(line[2]) / 60 perfdata = [ ( "runtime", runtime, warn, crit ) ] if runtime <= crit: - return (2, "CRIT - Battery Charge is %0.2fv" % runtime, perfdata) + return (2, "CRIT - Battery Runtime is %0.2f min" % runtime, perfdata) elif runtime <= warn: - return (1, "WARN - Battery Charge is %0.2fv" % runtime, perfdata) + return (1, "WARN - Battery Runtime is %0.2f min" % runtime, perfdata) else: - return (0, "OK - Battery Charge is %0.2fv" % runtime, perfdata) + return (0, "OK - Battery Runtime is %0.2f min" % runtime, perfdata) return (3, "UNKNOWN - battery.runtime not found in agent output for %s" % item) @@ -280,12 +282,12 @@ check_info["nut.battery.charge"] = (check_nut_battery_charge, 'NUT %s Battery C check_info["nut.battery.runtime"] = (check_nut_battery_runtime, 'NUT %s Battery Runtime', 1, lambda info: inventory_nut("nut.battery.runtime", info)) check_info["nut.device"] = (check_nut_device, 'NUT %s Device Details', 0, lambda info: inventory_nut("nut.device", info)) check_info["nut.driver"] = (check_nut_driver, 'NUT %s Driver Details', 0, lambda info: inventory_nut("nut.driver", info)) -check_info["nut.input"] = (lambda item, params, info: check_nut_value(item, params, info,"input.voltage", "voltage", "Input Voltage is %0.2fv"), 'NUT %s Input Voltage', 1, lambda info: inventory_nut("nut.input", info)) -check_info["nut.input.freq"] = (lambda item, params, info: check_nut_value(item, params, info,"input.frequency", "frequency", "Input Frequency is %0.2fHz"), 'NUT %s Input Frequency', 1, lambda info: inventory_nut("nut.input.freq", info)) -check_info["nut.input.fault"] = (lambda item, params, info: check_nut_value(item, params, info,"input.voltage.fault", "voltage", "Input Voltage fault is %0.2fv"), 'NUT %s Input Voltage Fault', 1, lambda info: inventory_nut("nut.input.fault", info)) -check_info["nut.output"] = (lambda item, params, info: check_nut_value(item, params, info,"output.voltage", "voltage", "Output Voltage is %0.2fv"), 'NUT %s Output Voltage', 1, lambda info: inventory_nut("nut.output", info)) -check_info["nut.load"] = (lambda item, params, info: check_nut_value(item, params, info,"ups.load", "load", "Load is %d%%"), 'NUT %s Load Percentage', 1, lambda info: inventory_nut("nut.load", info)) -check_info["nut.temp"] = (lambda item, params, info: check_nut_value(item, params, info,"ups.temperature", "temp", "Temperature is %0.1fC"), 'NUT %s Temperature', 1, lambda info: inventory_nut("nut.temp", info)) +check_info["nut.input"] = (lambda item, params, info: check_nut_value(item, params, info,"input.voltage", "voltage", "Input Voltage is %0.2f V"), 'NUT %s Input Voltage', 1, lambda info: inventory_nut("nut.input", info)) +check_info["nut.input.freq"] = (lambda item, params, info: check_nut_value(item, params, info,"input.frequency", "frequency", "Input Frequency is %0.2f Hz"), 'NUT %s Input Frequency', 1, lambda info: inventory_nut("nut.input.freq", info)) +check_info["nut.input.fault"] = (lambda item, params, info: check_nut_value(item, params, info,"input.voltage.fault", "voltage", "Input Voltage fault is %0.2f V"), 'NUT %s Input Voltage Fault', 1, lambda info: inventory_nut("nut.input.fault", info)) +check_info["nut.output"] = (lambda item, params, info: check_nut_value(item, params, info,"output.voltage", "voltage", "Output Voltage is %0.2f V"), 'NUT %s Output Voltage', 1, lambda info: inventory_nut("nut.output", info)) +check_info["nut.load"] = (lambda item, params, info: check_nut_value(item, params, info,"ups.load", "load", "Load is %d %%"), 'NUT %s Load Percentage', 1, lambda info: inventory_nut("nut.load", info)) +check_info["nut.temp"] = (lambda item, params, info: check_nut_value(item, params, info,"ups.temperature", "temp", "Temperature is %0.1f C"), 'NUT %s Temperature', 1, lambda info: inventory_nut("nut.temp", info)) check_info["nut.beeper"] = (check_nut_beeper, 'NUT %s Beeper Status', 0, lambda info: inventory_nut("nut.beeper", info)) check_info["nut.delay"] = (check_nut_delay, 'NUT %s Delay settings', 0, lambda info: inventory_nut("nut.delay", info)) check_info["nut.status"] = (check_nut_status, 'NUT %s Status', 0, lambda info: inventory_nut("nut.status", info))