Cleanup config.nodes_of
[check_mk.git] / checks / ups_cps_battery
bloba8b48109c5f9db97013a0376c6fff934660635bd
1 #!/usr/bin/python
2 # -*- encoding: utf-8; py-indent-offset: 4 -*-
3 # +------------------------------------------------------------------+
4 # | ____ _ _ __ __ _ __ |
5 # | / ___| |__ ___ ___| | __ | \/ | |/ / |
6 # | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
7 # | | |___| | | | __/ (__| < | | | | . \ |
8 # | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
9 # | |
10 # | Copyright Mathias Kettner 2016 mk@mathias-kettner.de |
11 # +------------------------------------------------------------------+
13 # This file is part of Check_MK.
14 # The official homepage is at http://mathias-kettner.de/check_mk.
16 # check_mk is free software; you can redistribute it and/or modify it
17 # under the terms of the GNU General Public License as published by
18 # the Free Software Foundation in version 2. check_mk is distributed
19 # in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
20 # out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
21 # PARTICULAR PURPOSE. See the GNU General Public License for more de-
22 # tails. You should have received a copy of the GNU General Public
23 # License along with GNU Make; see the file COPYING. If not, write
24 # to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
25 # Boston, MA 02110-1301 USA.
28 def parse_ups_cps_battery(info):
29 parsed = {}
31 if info[0][0]:
32 parsed["capacity"] = int(info[0][0])
34 # The MIB explicitly declares this to be Celsius
35 if info[0][1]:
36 parsed["temperature"] = int(info[0][1])
38 # A TimeTick is 1/100 s
39 if info[0][2]:
40 parsed["battime"] = float(info[0][2]) / 100
41 return parsed
45 # .--Temperature---------------------------------------------------------.
46 # | _____ _ |
47 # | |_ _|__ _ __ ___ _ __ ___ _ __ __ _| |_ _ _ _ __ ___ |
48 # | | |/ _ \ '_ ` _ \| '_ \ / _ \ '__/ _` | __| | | | '__/ _ \ |
49 # | | | __/ | | | | | |_) | __/ | | (_| | |_| |_| | | | __/ |
50 # | |_|\___|_| |_| |_| .__/ \___|_| \__,_|\__|\__,_|_| \___| |
51 # | |_| |
52 # '----------------------------------------------------------------------'
55 def inventory_ups_cps_battery_temp(parsed):
56 if "temperature" in parsed:
57 return [("Battery", {})]
60 def check_ups_cps_battery_temp(item, params, parsed):
61 return check_temperature(parsed["temperature"], params, "ups_cps_battery_temp")
64 check_info["ups_cps_battery.temp"] = {
65 "inventory_function": inventory_ups_cps_battery_temp,
66 "check_function": check_ups_cps_battery_temp,
67 "service_description": "Temperature %s",
68 "group": "temperature",
69 "includes": ["temperature.include"],
73 # .--Capacity------------------------------------------------------------.
74 # | ____ _ _ |
75 # | / ___|__ _ _ __ __ _ ___(_) |_ _ _ |
76 # | | | / _` | '_ \ / _` |/ __| | __| | | | |
77 # | | |__| (_| | |_) | (_| | (__| | |_| |_| | |
78 # | \____\__,_| .__/ \__,_|\___|_|\__|\__, | |
79 # | |_| |___/ |
80 # '----------------------------------------------------------------------'
82 factory_settings["ups_cps_battery"] = {
83 "capacity": (95, 90),
87 def inventory_ups_cps_battery(parsed):
88 if "capacity" in parsed:
89 return [(None, {})]
92 def check_ups_cps_battery(item, params, parsed):
93 def check_lower_levels(value, levels):
94 if not levels:
95 return 0
96 warn, crit = levels
97 if value < crit:
98 return 2
99 elif value < warn:
100 return 1
101 return 0
103 capacity = parsed["capacity"]
104 capacity_params = params["capacity"]
105 capacity_status = check_lower_levels(capacity, capacity_params)
106 if capacity_status:
107 levelstext = " (warn/crit at %d/%d%%)" % capacity_params
108 else:
109 levelstext = ""
110 yield capacity_status, ("Capacity at %d%%" % capacity) + levelstext
112 battime = parsed["battime"]
113 # WATO rule stores remaining time in minutes
114 battime_params = params.get("battime")
115 battime_status = check_lower_levels(battime / 60, battime_params)
116 if battime_status:
117 levelstext = " (warn/crit at %d/%d min)" % battime_params
118 else:
119 levelstext = ""
120 yield battime_status, ("%.0f minutes remaining on battery" % (battime / 60)) + levelstext
123 check_info["ups_cps_battery"] = {
124 "parse_function": parse_ups_cps_battery,
125 "default_levels_variable": "ups_cps_battery",
126 "inventory_function": inventory_ups_cps_battery,
127 "check_function": check_ups_cps_battery,
128 "service_description": "UPS Battery",
129 "snmp_scan_function": lambda oid: oid(".1.3.6.1.2.1.1.2.0").startswith(".1.3.6.1.4.1.3808.1.1.1"
131 "snmp_info": (
132 ".1.3.6.1.4.1.3808.1.1.1.2.2",
134 "1", # upsAdvanceBatteryCapacity
135 "3", # upsAdvanceBatteryTemperature
136 "4", # upsAdvanceBatteryRunTimeRemaining
138 "group": "ups_capacity",