5 Monitor CyberPower UPS Battery Status.
14 Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)
20 # Enable SNMP-Discovery
24 #%# capabilities=snmpconf
26 if (defined $ARGV[0] and $ARGV[0] eq "snmpconf") {
27 print "require 1.3.6.1.2.1.33.1.2.4.0\n";
36 use Munin
::Plugin
::SNMP
;
37 my $session = Munin
::Plugin
::SNMP-
>session();
43 use constant oid_cps_battery_runtime
=> ".1.3.6.1.2.1.33.1.2.3.0";
44 use constant oid_cps_battery_charge
=> ".1.3.6.1.2.1.33.1.2.4.0";
45 use constant oid_cps_input_voltage
=> ".1.3.6.1.2.1.33.1.3.3.1.3.1";
46 use constant oid_cps_output_voltage
=> ".1.3.6.1.2.1.33.1.4.4.1.2.1";
47 use constant oid_cps_output_load
=> ".1.3.6.1.2.1.33.1.4.4.1.5.1";
48 use constant oid_cps_env_temp
=> ".1.3.6.1.4.1.3808.1.1.4.2.1.0";
49 use constant oid_cps_env_humidity
=> ".1.3.6.1.4.1.3808.1.1.4.3.1.0";
51 use constant upsStatus
=> ".1.3.6.1.4.1.3808.1.1.1.10.1.0";
52 use constant upsBaseBatteryStatus
=> ".1.3.6.1.4.1.3808.1.1.1.2.1.1.0";
53 use constant upsAdvanceInputStatus
=> ".1.3.6.1.4.1.3808.1.1.1.3.2.6.0";
54 use constant upsBaseOutputStatus
=> ".1.3.6.1.4.1.3808.1.1.1.4.1.1.0";
55 use constant upsAdvanceInputFrequency
=> ".1.3.6.1.4.1.3808.1.1.1.3.2.4.0";
56 use constant upsAdvanceOutputFrequency
=> ".1.3.6.1.4.1.3808.1.1.1.4.2.2.0";
57 use constant upsAdvanceOutputPower
=> ".1.3.6.1.4.1.3808.1.1.1.4.2.5.0";
63 if (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
67 graph_title CyberPower UPS Status
68 graph_info This graph shows battery status information.
69 graph_category sensors
71 graph_args --upper-limit 101 -l 0
74 print "load.label Total load
80 print "charge.label Battery charge
87 print "multigraph cyberpower_runtime
88 graph_title CyberPower UPS Runtime
89 graph_info This graph shows expected runtime information.
90 graph_category sensors
93 print "runtime.label Expected runtime
98 print "multigraph cyberpower_voltage
99 graph_title CyberPower UPS Voltages
100 graph_info This graph shows voltage information.
101 graph_category sensors
104 print "input.label Input voltage
108 print "output.label Output voltage
113 print "multigraph cyberpower_status
114 graph_title CyberPower UPS Statuses
115 graph_info This graph shows status information.
116 graph_category sensors
118 print "upsStatus.label UPS status
122 #upsStatus: 1 normal, 2 overheat, 3 hardwarefault
123 print "upsBaseBatteryStatus.label Battery status
124 upsBaseBatteryStatus.draw LINE1
125 upsBaseBatteryStatus.type GAUGE
127 #upsBaseBatteryStatus: 2 normal, 1 unknown, 3 low, 4 notpresent
128 print "upsAdvanceInputStatus.label Input status
129 upsAdvanceInputStatus.draw LINE1
130 upsAdvanceInputStatus.type GAUGE
132 #upsAdvanceInputStatus: 1 normal, 2 high, 3 low, 4 freq, 5 blackout, 6 powerFailure
133 print "upsBaseOutputStatus.label Output status
134 upsBaseOutputStatus.draw LINE1
135 upsBaseOutputStatus.type GAUGE
137 #upsBaseOutputStatus:
150 print "multigraph cyberpower_frequency
151 graph_title CyberPower UPS Frequency
152 graph_info This graph shows frequencies
153 graph_category sensors
155 graph_args --upper-limit 80 --lower-limit 40
157 print "upsAdvanceInputFrequency.label Input frequency
158 upsAdvanceInputFrequency.draw LINE1
159 upsAdvanceInputFrequency.type GAUGE
161 print "upsAdvanceOutputFrequency.label Output frequency
162 upsAdvanceOutputFrequency.draw LINE1
163 upsAdvanceOutputFrequency.type GAUGE
166 print "multigraph cyberpower_power
167 graph_title CyberPower UPS Power
168 graph_info This graph shows power usage
169 graph_category sensors
172 print "upsAdvanceOutputPower.label Output power
173 upsAdvanceOutputPower.draw LINE1
174 upsAdvanceOutputPower.type GAUGE
186 print "multigraph cyberpower_load\n";
187 my $load = $session->get_single(oid_cps_output_load
);
188 my $charge = $session->get_single(oid_cps_battery_charge
);
190 print "load.value ", $load, "\n";
193 print "charge.value ", $charge, "\n";
196 print "multigraph cyberpower_runtime\n";
197 my $runtime = $session->get_single(oid_cps_battery_runtime
);
199 print "runtime.value ", $runtime, "\n";
202 print "multigraph cyberpower_voltage\n";
203 my $input = $session->get_single(oid_cps_input_voltage
);
204 my $output = $session->get_single(oid_cps_output_voltage
);
206 print "input.value ", $input, "\n";
209 print "output.value ", $output, "\n";
212 print "multigraph cyberpower_status\n";
213 print "upsStatus.value ", $session->get_single(upsStatus
), "\n";
214 print "upsBaseBatteryStatus.value ", $session->get_single(upsBaseBatteryStatus
), "\n";
215 print "upsAdvanceInputStatus.value ", $session->get_single(upsAdvanceInputStatus
), "\n";
216 print "upsBaseOutputStatus.value ", $session->get_single(upsBaseOutputStatus
), "\n";
218 print "multigraph cyberpower_frequency\n";
219 print "upsAdvanceInputFrequency.value ", $session->get_single(upsAdvanceInputFrequency
)/10, "\n";
220 print "upsAdvanceOutputFrequency.value ", $session->get_single(upsAdvanceOutputFrequency
)/10, "\n";
222 print "multigraph cyberpower_power\n";
223 print "upsAdvanceOutputPower.value ", $session->get_single(upsAdvanceOutputPower
), "\n";