From 109d873699789b02d6b1510333a291e1ab53d451 Mon Sep 17 00:00:00 2001 From: nagyrobi Date: Wed, 14 Aug 2013 12:23:06 +0200 Subject: [PATCH] Create eatonups_ Multigraph munin plugin to monitor Eaton UPS-es through the web interface of the SNMP add-on card. --- plugins/ups/eatonups_ | 281 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 281 insertions(+) create mode 100644 plugins/ups/eatonups_ diff --git a/plugins/ups/eatonups_ b/plugins/ups/eatonups_ new file mode 100644 index 00000000..d95b7996 --- /dev/null +++ b/plugins/ups/eatonups_ @@ -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]*>//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