Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Multigraph munin plugin to monitor Eaton UPS-es through the web interface of the SNMP add-on card.
- Loading branch information
Showing
1 changed file
with
281 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,281 @@ | ||
#!/bin/sh | ||
|
||
################################################################################################### | ||
# | ||
# Multigraph munin plugin to monitor Eaton UPS-es through the web interface of the SNMP add-on card. | ||
# The plugin script simply parses the /PSummary.html page and extracts the values from there. | ||
# | ||
# To use this plugin, copy it to the munin's plugin directory (eg. /usr/share/munin/plugins) | ||
# under the name "eatonups_". Don't change this filename! Follow these steps: | ||
# | ||
# 1. Give names to your UPSes, in fqdn style. Like "ups.server1" or "ups.server2". Make sure | ||
# you can resolve these names as DNS names from the munin machine. You can simply add them | ||
# as entries in /etc/hosts. | ||
# | ||
# 2. Then symlink it to munin's configured plugins directory (eg. /etc/munin/plugins) with names | ||
# according to the devices you wish to monitor, eg: | ||
# | ||
# eatonups_ups.server1 | ||
# eatonups_ups.server2 | ||
# | ||
# 3. In /etc/munin/munin.conf just add these lines for them. Yes, 127.0.0.1 is correct | ||
# because that points to the munin-node address not the UPS address. | ||
# | ||
# [eatonups_ups.server1] | ||
# address 127.0.0.1 | ||
# | ||
# [eatonups_ups.server2] | ||
# address 127.0.0.1 | ||
# | ||
# 4. Restart the munin node by 'service munin-node restart'. | ||
# | ||
# If all went well, after 5 minutes or so you should have two additional nodes listed | ||
# on the Web Interface of munin. | ||
# | ||
# Tested & working with Eaton USP model PW9130 1500VA-R, with installed ConnectUPS Web/SNMP Card | ||
# firmware revision V4.36 with munin v.2.0.14 and Ubuntu LTS 12.04 | ||
# Created in 2013 by robi | ||
# v0.2 - fixed frequency graph scale to center at 50Hz (correct value for Europe) | ||
# v0.1 - initial version | ||
################################################################################################## | ||
|
||
case $0 in | ||
*eatonups_*) | ||
hostname=${0##*/eatonups_} | ||
;; | ||
esac | ||
|
||
case $1 in | ||
config) | ||
|
||
echo "multigraph volt_ac" | ||
echo "host_name $hostname" | ||
echo "graph_args --base 1000" | ||
echo "graph_title AC Voltage Mains" | ||
echo "graph_vlabel Volts" | ||
echo "graph_category sensors" | ||
echo "graph_scale no" | ||
echo "graph_info Input and Output voltage of the UPS." | ||
echo "volt_in.label Input" | ||
echo "volt_in.critical 210:250" | ||
echo "volt_in.info Input mains voltage of the UPS." | ||
echo "volt_out.label Output" | ||
echo "volt_out.critical 210:250" | ||
echo "volt_out.info Output mains voltage of the UPS." | ||
echo | ||
echo "multigraph volt_batt" | ||
echo "host_name $hostname" | ||
echo "graph_args --base 1000" | ||
echo "graph_title DC Voltage Battery" | ||
echo "graph_vlabel Volts" | ||
echo "graph_category sensors" | ||
echo "graph_scale no" | ||
echo "graph_info Voltage of the internal battery of the UPS." | ||
echo "volt_batt.label Battery" | ||
echo "volt_batt.critical 45:65" | ||
echo "volt_batt.info Battery voltage of the UPS." | ||
echo | ||
echo "multigraph curr_out" | ||
echo "host_name $hostname" | ||
echo "graph_args --base 1000" | ||
echo "graph_title Output Current" | ||
echo "graph_vlabel Ampers" | ||
echo "graph_category sensors" | ||
echo "graph_scale no" | ||
echo "graph_info Output current of the UPS." | ||
echo "curr_out.label Current" | ||
echo "curr_out.critical 40" | ||
echo "curr_out.info Output current of the UPS." | ||
echo | ||
echo "multigraph power" | ||
echo "host_name $hostname" | ||
echo "graph_args --base 1000" | ||
echo "graph_title Power" | ||
echo "graph_vlabel W or VA" | ||
echo "graph_category sensors" | ||
echo "graph_scale no" | ||
echo "graph_info Output Power of the UPS." | ||
echo "power_true.label True" | ||
echo "power_true.critical 800" | ||
echo "power_true.info True Power output of the UPS (Watts)." | ||
echo "power_appr.label Apparent" | ||
echo "power_appr.critical 1500" | ||
echo "power_appr.info Apparent Power output of the UPS (VA)." | ||
echo | ||
echo "multigraph runtime" | ||
echo "host_name $hostname" | ||
echo "graph_args --base 1000" | ||
echo "graph_title Runtime" | ||
echo "graph_vlabel minutes" | ||
echo "graph_category sensors" | ||
echo "graph_scale no" | ||
echo "graph_info Remaining runtime of the UPS." | ||
echo "runtime.label Runtime" | ||
echo "runtime.critical 30:" | ||
echo "runtime.info Remaining runtime of the UPS (minutes)." | ||
echo | ||
echo "multigraph load" | ||
echo "host_name $hostname" | ||
echo "graph_args --base 1000" | ||
echo "graph_title Load" | ||
echo "graph_vlabel %" | ||
echo "graph_category sensors" | ||
echo "graph_scale no" | ||
echo "graph_info Load of the UPS." | ||
echo "load.label Load" | ||
echo "load.critical 60" | ||
echo "load.info Load of the UPS (percent)." | ||
echo | ||
echo "multigraph freq_in" | ||
echo "host_name $hostname" | ||
echo "graph_args --base 1000 -l 48.8 -u 51.2 --rigid --alt-y-grid" | ||
echo "graph_title Frequency Input" | ||
echo "graph_vlabel Hz" | ||
echo "graph_category sensors" | ||
echo "graph_scale no" | ||
echo "graph_info Input frequency of the UPS." | ||
echo "freq_in.label Hz in" | ||
echo "freq_in.critical 49:51" | ||
echo "freq_in.info Input frequency of the UPS." | ||
echo | ||
echo "multigraph freq_out" | ||
echo "host_name $hostname" | ||
echo "graph_args --base 1000 -l 48.8 -u 51.2 --rigid --alt-y-grid" | ||
echo "graph_title Frequency Output" | ||
echo "graph_vlabel Hz" | ||
echo "graph_category sensors" | ||
echo "graph_scale no" | ||
echo "graph_info Output frequency of the UPS." | ||
echo "freq_out.label Hz out" | ||
echo "freq_out.critical 49:51" | ||
echo "freq_out.info Output frequency of the UPS." | ||
echo | ||
echo "multigraph temp" | ||
echo "host_name $hostname" | ||
echo "graph_args --base 1000" | ||
echo "graph_title Temperature" | ||
echo "graph_vlabel degrees Celsius" | ||
echo "graph_category sensors" | ||
echo "graph_scale no" | ||
echo "graph_info Internal Temperature of the UPS." | ||
echo "temp.label Load" | ||
echo "temp.critical 80" | ||
echo "temp.info Internal Temperature of the UPS (degrees Celsius)." | ||
echo | ||
|
||
exit 0;; | ||
esac | ||
|
||
statusfile=/tmp/eatonups_munin_$hostname.html | ||
|
||
wget -O $statusfile http://$hostname/PSummary.html -o /dev/null --timeout 9 | ||
|
||
if [ -f "$statusfile" ] | ||
then | ||
volt_in=`sed -n -e '/Voltage In/{n;p;}' $statusfile | sed 's/<[^>]*>//g'` | ||
volt_out=`sed -n -e '/Voltage Out/{n;p;}' $statusfile | sed 's/<[^>]*>//g'` | ||
volt_batt=`sed -n -e '/Voltage</{n;p;}' $statusfile | sed 's/<[^>]*>//g'` | ||
curr_out=`sed -n -e '/Current Out/{n;p;}' $statusfile | sed 's/<[^>]*>//g'` | ||
power_true=`sed -n -e '/True Power/{n;p;}' $statusfile | sed 's/<[^>]*>//g'` | ||
power_appr=`sed -n -e '/Apparent Power/{n;p;}' $statusfile | sed 's/<[^>]*>//g'` | ||
runtime=`sed -n -e '/Runtime/{n;p;}' $statusfile | sed 's/<[^>]*>//g'` | ||
freq_in=`sed -n -e '/Frequency/{n;p;}' $statusfile | sed 's/<[^>]*>//g' | sed -n '1p'` | ||
freq_out=`sed -n -e '/Frequency/{n;p;}' $statusfile | sed 's/<[^>]*>//g' | sed -n '2p'` | ||
load=`sed -n -e '/UPS Load/{n;p;}' $statusfile | sed 's/<[^>]*>//g'` | ||
temp=`sed -n -e '/UPS Internal Temperature/{n;p;}' $statusfile | sed 's/<[^>]*>//g'` | ||
|
||
rm -f $statusfile | ||
fi | ||
|
||
echo "multigraph volt_ac" | ||
echo -n "volt_in.value " | ||
if [ -n "$volt_in" ]; then | ||
echo "$volt_in" | ||
else | ||
echo "U" | ||
fi | ||
echo -n "volt_out.value " | ||
if [ -n "$volt_out" ]; then | ||
echo "$volt_out" | ||
else | ||
echo "U" | ||
fi | ||
echo | ||
|
||
echo "multigraph volt_batt" | ||
echo -n "volt_batt.value " | ||
if [ -n "$volt_batt" ]; then | ||
echo "$volt_batt" | ||
else | ||
echo "U" | ||
fi | ||
echo | ||
|
||
echo "multigraph curr_out" | ||
echo -n "curr_out.value " | ||
if [ -n "$curr_out" ]; then | ||
echo "$curr_out" | ||
else | ||
echo "U" | ||
fi | ||
echo | ||
|
||
echo "multigraph power" | ||
echo -n "power_true.value " | ||
if [ -n "$power_true" ]; then | ||
echo "$power_true" | ||
else | ||
echo "U" | ||
fi | ||
echo -n "power_appr.value " | ||
if [ -n "$power_appr" ]; then | ||
echo "$power_appr" | ||
else | ||
echo "U" | ||
fi | ||
echo | ||
|
||
echo "multigraph runtime" | ||
echo -n "runtime.value " | ||
if [ -n "$runtime" ]; then | ||
echo "$runtime" | ||
else | ||
echo "U" | ||
fi | ||
echo | ||
|
||
echo "multigraph load" | ||
echo -n "load.value " | ||
if [ -n "$load" ]; then | ||
echo "$load" | ||
else | ||
echo "U" | ||
fi | ||
echo | ||
|
||
echo "multigraph freq_in" | ||
echo -n "freq_in.value " | ||
if [ -n "$freq_in" ]; then | ||
echo "$freq_in" | ||
else | ||
echo "U" | ||
fi | ||
echo | ||
|
||
echo "multigraph freq_out" | ||
echo -n "freq_out.value " | ||
if [ -n "$freq_out" ]; then | ||
echo "$freq_out" | ||
else | ||
echo "U" | ||
fi | ||
echo | ||
|
||
echo "multigraph temp" | ||
echo -n "temp.value " | ||
if [ -n "$temp" ]; then | ||
echo "$temp" | ||
else | ||
echo "U" | ||
fi | ||
echo |