]> jfr.im git - munin-plugins.git/blob - snmp__cyberpower
support for a 2nd unbound plugin
[munin-plugins.git] / snmp__cyberpower
1 #!/usr/bin/perl -w
2
3 =head1 NAME
4
5 Monitor CyberPower UPS Battery Status.
6
7
8 =head1 AUTHOR
9
10 Kai Boenke
11
12 =head1 LICENSE
13
14 Attribution-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
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";
28 exit 0;
29 }
30
31
32 #####
33 # Initialize
34 ###
35 use strict;
36 use Munin::Plugin::SNMP;
37 my $session = Munin::Plugin::SNMP->session();
38
39
40 #####
41 # Declare OIDs
42 ###
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";
50
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";
58
59
60 #####
61 # Config
62 ###
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
70 graph_vlabel %
71 graph_args --upper-limit 101 -l 0
72 graph_scale no
73 ";
74 print "load.label Total load
75 load.draw AREA
76 load.type GAUGE
77 load.min 0
78 load.max 100
79 ";
80 print "charge.label Battery charge
81 charge.draw LINE1
82 charge.type GAUGE
83 charge.min 0
84 charge.max 100
85 ";
86
87 print "multigraph cyberpower_runtime
88 graph_title CyberPower UPS Runtime
89 graph_info This graph shows expected runtime information.
90 graph_category sensors
91 graph_vlabel minutes
92 ";
93 print "runtime.label Expected runtime
94 runtime.draw AREA
95 runtime.type GAUGE
96 ";
97
98 print "multigraph cyberpower_voltage
99 graph_title CyberPower UPS Voltages
100 graph_info This graph shows voltage information.
101 graph_category sensors
102 graph_vlabel V
103 ";
104 print "input.label Input voltage
105 input.draw LINE2
106 input.type GAUGE
107 ";
108 print "output.label Output voltage
109 output.draw LINE1
110 output.type GAUGE
111 ";
112
113 print "multigraph cyberpower_status
114 graph_title CyberPower UPS Statuses
115 graph_info This graph shows status information.
116 graph_category sensors
117 ";
118 print "upsStatus.label UPS status
119 upsStatus.draw LINE1
120 upsStatus.type GAUGE
121 ";
122 #upsStatus: 1 normal, 2 overheat, 3 hardwarefault
123 print "upsBaseBatteryStatus.label Battery status
124 upsBaseBatteryStatus.draw LINE1
125 upsBaseBatteryStatus.type GAUGE
126 ";
127 #upsBaseBatteryStatus: 2 normal, 1 unknown, 3 low, 4 notpresent
128 print "upsAdvanceInputStatus.label Input status
129 upsAdvanceInputStatus.draw LINE1
130 upsAdvanceInputStatus.type GAUGE
131 ";
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
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
151 graph_title CyberPower UPS Frequency
152 graph_info This graph shows frequencies
153 graph_category sensors
154 graph_vlabel Hz
155 graph_args --upper-limit 80 --lower-limit 40
156 ";
157 print "upsAdvanceInputFrequency.label Input frequency
158 upsAdvanceInputFrequency.draw LINE1
159 upsAdvanceInputFrequency.type GAUGE
160 ";
161 print "upsAdvanceOutputFrequency.label Output frequency
162 upsAdvanceOutputFrequency.draw LINE1
163 upsAdvanceOutputFrequency.type GAUGE
164 ";
165
166 print "multigraph cyberpower_power
167 graph_title CyberPower UPS Power
168 graph_info This graph shows power usage
169 graph_category sensors
170 graph_vlabel W
171 ";
172 print "upsAdvanceOutputPower.label Output power
173 upsAdvanceOutputPower.draw LINE1
174 upsAdvanceOutputPower.type GAUGE
175 ";
176
177
178 exit 0;
179 }
180
181
182 #####
183 # Get Values
184 ###
185
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);
189 if($load ne 'U'){
190 print "load.value ", $load, "\n";
191 }
192 if($charge ne 'U'){
193 print "charge.value ", $charge, "\n";
194 }
195
196 print "multigraph cyberpower_runtime\n";
197 my $runtime = $session->get_single(oid_cps_battery_runtime);
198 if($runtime ne 'U'){
199 print "runtime.value ", $runtime, "\n";
200 }
201
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);
205 if($input ne 'U'){
206 print "input.value ", $input, "\n";
207 }
208 if($output ne 'U'){
209 print "output.value ", $output, "\n";
210 }
211
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";
217
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";
221
222 print "multigraph cyberpower_power\n";
223 print "upsAdvanceOutputPower.value ", $session->get_single(upsAdvanceOutputPower), "\n";