]> jfr.im git - munin-plugins.git/blame - snmp__cyberpower
support for a 2nd unbound plugin
[munin-plugins.git] / snmp__cyberpower
CommitLineData
3decc5d1
JR
1#!/usr/bin/perl -w
2
3=head1 NAME
4
5Monitor CyberPower UPS Battery Status.
6
7
8=head1 AUTHOR
9
10Kai Boenke
11
12=head1 LICENSE
13
14Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)
15
16=back
17
18
19#####
20# Enable SNMP-Discovery
21###
22=head1 MAGIC MARKERS
23 #%# family=snmpauto
24 #%# capabilities=snmpconf
25=cut
26if (defined $ARGV[0] and $ARGV[0] eq "snmpconf") {
27 print "require 1.3.6.1.2.1.33.1.2.4.0\n";
28 exit 0;
29}
30
31
32#####
33# Initialize
34###
35use strict;
36use Munin::Plugin::SNMP;
37my $session = Munin::Plugin::SNMP->session();
38
39
40#####
41# Declare OIDs
42###
43use constant oid_cps_battery_runtime => ".1.3.6.1.2.1.33.1.2.3.0";
44use constant oid_cps_battery_charge => ".1.3.6.1.2.1.33.1.2.4.0";
45use constant oid_cps_input_voltage => ".1.3.6.1.2.1.33.1.3.3.1.3.1";
46use constant oid_cps_output_voltage => ".1.3.6.1.2.1.33.1.4.4.1.2.1";
47use constant oid_cps_output_load => ".1.3.6.1.2.1.33.1.4.4.1.5.1";
48use constant oid_cps_env_temp => ".1.3.6.1.4.1.3808.1.1.4.2.1.0";
49use constant oid_cps_env_humidity => ".1.3.6.1.4.1.3808.1.1.4.3.1.0";
50
51use constant upsStatus => ".1.3.6.1.4.1.3808.1.1.1.10.1.0";
52use constant upsBaseBatteryStatus => ".1.3.6.1.4.1.3808.1.1.1.2.1.1.0";
53use constant upsAdvanceInputStatus => ".1.3.6.1.4.1.3808.1.1.1.3.2.6.0";
54use constant upsBaseOutputStatus => ".1.3.6.1.4.1.3808.1.1.1.4.1.1.0";
55use constant upsAdvanceInputFrequency => ".1.3.6.1.4.1.3808.1.1.1.3.2.4.0";
56use constant upsAdvanceOutputFrequency => ".1.3.6.1.4.1.3808.1.1.1.4.2.2.0";
57use constant upsAdvanceOutputPower => ".1.3.6.1.4.1.3808.1.1.1.4.2.5.0";
58
59
60#####
61# Config
62###
63if (defined $ARGV[0] and $ARGV[0] eq "config") {
64 my ($host) = Munin::Plugin::SNMP->config_session();
65 print "host_name $host\n" unless $host eq 'localhost';
66 print "multigraph cyberpower_load
67graph_title CyberPower UPS Status
68graph_info This graph shows battery status information.
69graph_category sensors
70graph_vlabel %
71graph_args --upper-limit 101 -l 0
72graph_scale no
73";
74 print "load.label Total load
75load.draw AREA
76load.type GAUGE
77load.min 0
78load.max 100
79";
80 print "charge.label Battery charge
81charge.draw LINE1
82charge.type GAUGE
83charge.min 0
84charge.max 100
85";
86
87 print "multigraph cyberpower_runtime
88graph_title CyberPower UPS Runtime
89graph_info This graph shows expected runtime information.
90graph_category sensors
91graph_vlabel minutes
92";
93 print "runtime.label Expected runtime
94runtime.draw AREA
95runtime.type GAUGE
96";
97
98 print "multigraph cyberpower_voltage
99graph_title CyberPower UPS Voltages
100graph_info This graph shows voltage information.
101graph_category sensors
102graph_vlabel V
103";
104 print "input.label Input voltage
105input.draw LINE2
106input.type GAUGE
107";
108 print "output.label Output voltage
109output.draw LINE1
110output.type GAUGE
111";
112
113 print "multigraph cyberpower_status
114graph_title CyberPower UPS Statuses
115graph_info This graph shows status information.
116graph_category sensors
117";
118 print "upsStatus.label UPS status
119upsStatus.draw LINE1
120upsStatus.type GAUGE
121";
122#upsStatus: 1 normal, 2 overheat, 3 hardwarefault
123 print "upsBaseBatteryStatus.label Battery status
124upsBaseBatteryStatus.draw LINE1
125upsBaseBatteryStatus.type GAUGE
126";
127#upsBaseBatteryStatus: 2 normal, 1 unknown, 3 low, 4 notpresent
128 print "upsAdvanceInputStatus.label Input status
129upsAdvanceInputStatus.draw LINE1
130upsAdvanceInputStatus.type GAUGE
131";
132#upsAdvanceInputStatus: 1 normal, 2 high, 3 low, 4 freq, 5 blackout, 6 powerFailure
133 print "upsBaseOutputStatus.label Output status
134upsBaseOutputStatus.draw LINE1
135upsBaseOutputStatus.type GAUGE
136";
137#upsBaseOutputStatus:
138# unknown(1),
139# onLine(2),
140# onBattery(3),
141# onBoost(4),
142# onSleep(5),
143# off(6),
144# rebooting(7),
145# onECO(8),
146# onBypass(9),
147# onBuck(10),
148# onOverload(11)
149
150 print "multigraph cyberpower_frequency
151graph_title CyberPower UPS Frequency
152graph_info This graph shows frequencies
153graph_category sensors
154graph_vlabel Hz
155graph_args --upper-limit 80 --lower-limit 40
156";
157 print "upsAdvanceInputFrequency.label Input frequency
158upsAdvanceInputFrequency.draw LINE1
159upsAdvanceInputFrequency.type GAUGE
160";
161 print "upsAdvanceOutputFrequency.label Output frequency
162upsAdvanceOutputFrequency.draw LINE1
163upsAdvanceOutputFrequency.type GAUGE
164";
165
166 print "multigraph cyberpower_power
167graph_title CyberPower UPS Power
168graph_info This graph shows power usage
169graph_category sensors
170graph_vlabel W
171";
172 print "upsAdvanceOutputPower.label Output power
173upsAdvanceOutputPower.draw LINE1
174upsAdvanceOutputPower.type GAUGE
175";
176
177
178 exit 0;
179}
180
181
182#####
183# Get Values
184###
185
186print "multigraph cyberpower_load\n";
187my $load = $session->get_single(oid_cps_output_load);
188my $charge = $session->get_single(oid_cps_battery_charge);
189if($load ne 'U'){
190 print "load.value ", $load, "\n";
191}
192if($charge ne 'U'){
193 print "charge.value ", $charge, "\n";
194}
195
196print "multigraph cyberpower_runtime\n";
197my $runtime = $session->get_single(oid_cps_battery_runtime);
198if($runtime ne 'U'){
199 print "runtime.value ", $runtime, "\n";
200}
201
202print "multigraph cyberpower_voltage\n";
203my $input = $session->get_single(oid_cps_input_voltage);
204my $output = $session->get_single(oid_cps_output_voltage);
205if($input ne 'U'){
206 print "input.value ", $input, "\n";
207}
208if($output ne 'U'){
209 print "output.value ", $output, "\n";
210}
211
212print "multigraph cyberpower_status\n";
213print "upsStatus.value ", $session->get_single(upsStatus), "\n";
214print "upsBaseBatteryStatus.value ", $session->get_single(upsBaseBatteryStatus), "\n";
215print "upsAdvanceInputStatus.value ", $session->get_single(upsAdvanceInputStatus), "\n";
216print "upsBaseOutputStatus.value ", $session->get_single(upsBaseOutputStatus), "\n";
217
218print "multigraph cyberpower_frequency\n";
219print "upsAdvanceInputFrequency.value ", $session->get_single(upsAdvanceInputFrequency)/10, "\n";
220print "upsAdvanceOutputFrequency.value ", $session->get_single(upsAdvanceOutputFrequency)/10, "\n";
221
222print "multigraph cyberpower_power\n";
223print "upsAdvanceOutputPower.value ", $session->get_single(upsAdvanceOutputPower), "\n";