From b0875e6d213cd01fbcc6f8ca21795f701e4bf879 Mon Sep 17 00:00:00 2001 From: Carlos Ladeira Date: Sun, 7 Sep 2008 23:09:04 +0200 Subject: [PATCH] Initial version --- plugins/other/sensors_ | 184 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100755 plugins/other/sensors_ diff --git a/plugins/other/sensors_ b/plugins/other/sensors_ new file mode 100755 index 00000000..b4db86ba --- /dev/null +++ b/plugins/other/sensors_ @@ -0,0 +1,184 @@ +#!/bin/bash +# +# Plugin: sensors_ +# Author: Carlos Ladeira (caladeira at gmail dot com] +# Version: 08.09.13 +# +# +# This script handles the output of lm-sensors +# like this example: +# +# it87-isa-0290 +# Adapter: ISA adapter +# VCore 1: +1.49 V (min = +0.00 V, max = +4.08 V) +# VCore 2: +2.46 V (min = +0.00 V, max = +4.08 V) +# +3.3V: +3.25 V (min = +0.00 V, max = +4.08 V) +# +5V: +4.97 V (min = +0.00 V, max = +6.85 V) +# +12V: +12.22 V (min = +0.00 V, max = +16.32 V) +# -12V: -1.83 V (min = -27.36 V, max = +3.93 V) +# -5V: -9.48 V (min = -13.64 V, max = +4.03 V) +# Stdby: +4.95 V (min = +0.00 V, max = +6.85 V) +# VBat: +3.33 V +# fan1: 3375 RPM (min = 0 RPM, div = 8) +# fan2: 0 RPM (min = 0 RPM, div = 8) +# fan3: 0 RPM (min = 0 RPM, div = 2) +# M/B Temp: +39°C (low = -1°C, high = +127°C) sensor = thermistor +# CPU Temp: +34°C (low = -1°C, high = +127°C) sensor = thermistor +# Temp3: +48°C (low = -1°C, high = +127°C) sensor = thermistor +# +# +# Wildcard-plugin to monitor output of lm sensors. +# +# Syntax: sensors_[_ignore1[,ignore2[,...]]] +# +# fans monitor fans speed +# voltages monitor system voltages +# temperatures monitor system temperatures +# +# ignore1, ignore2, ... list of sensores to ignore +# +# +# HOW TO SETUP THIS SCRIPT +# +# 1. Start copying this script to the munin main plugin directory +# +# sudo cp sensors_ /usr/share/munin/plugins/sensors_ +# +# 2. create links in the user plugin directory with the desired setup +# Some examples: +# +# ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_fans +# ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_voltages +# ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_temperatures_5V,12V +# ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_temperatures_Temp3 +# +# +# Munin (http://munin.projects.linpro.no/) +# lm-sensors (http://www.lm-sensors.org/) +# +# Requirements: * lm-sensors (http://www.lm-sensors.org/) +# +# +# Changelog: v08.09.07 - initial release +# v08.09.13 - add ignore parameter list +# +# +#%# family=contrib +#%# capabilities=autoconf suggest + +##### CONSTANTS ##################################################### + +DETECTED_SENSORS=$(sensors -U -A | wc -l) +GCAT="sensors" + +IGNORE_DELIMITER='_' + +ARGS=$(basename $0 | sed -e 's/^sensors_//g') +MODE=$(echo -n $ARGS | cut -d $IGNORE_DELIMITER -f 1) +IGNORE=$(echo -n $ARGS | cut -d $IGNORE_DELIMITER -f 2) + +IGNORE_LIST="" +if [ -n "$IGNORE" ] ; then + if [ "$IGNORE" != "$MODE" ] ; then + IGNORE_LIST="$(echo -n $IGNORE | sed -e 's/,/ /g')" + fi +fi + +case "$MODE" in + + voltages) + LINE_FILTER=" V" + VALUE_FILTER='V' + GTITLE="Voltages" + GLABEL="Volts" + ;; + + temperatures) + LINE_FILTER="C " + VALUE_FILTER='C' + GTITLE="Temperatures" + GLABEL="Celsius" + ;; + + fans) + LINE_FILTER="RPM" + VALUE_FILTER='R' + GTITLE="Fans Speed" + GLABEL="RPM" + ;; + + *) + echo "Invalid Option: $MODE" + exit 1 + +esac + + +##################################################################### + +if [ "$1" == "autoconf" ]; then + + if [ "$DETECTED_SENSORS" -eq 0 ]; then + echo "no" + exit 1 + else + echo "yes" + exit 0 + fi + +elif [ "$1" == "suggest" ]; then + + echo "voltages" + echo "temperatures" + echo "fans" + exit 0 + +elif [ "$1" == "config" ]; then + + echo "graph_title $GTITLE" + echo "graph_vlabel $GLABEL" + echo "graph_category $GCAT" + echo "graph_args --base 1000 -l 0" + echo "graph_scale no" + + sensors | grep "$LINE_FILTER" | + + while read a; do + label=$(echo $a | cut -d ':' -f 1 | sed -e 's/[+| |/]//g' -e 's/-/n/' -e 's/\./_/') + name=$(echo $a | cut -d ':' -f 1) + + found=0 + for item in $IGNORE_LIST; do + if [ "$item" == "$label" ] ; then + found=1 + fi + done + + if [ $found -eq 0 ] ; then + echo $label.label $name + fi + done + +else + + sensors | grep "$LINE_FILTER" | + + while read a; do + label=$(echo $a | cut -d ':' -f 1 | sed -e 's/[+| |/]//g' -e 's/-/n/' -e 's/\./_/') + value=$(echo $a | cut -d ':' -f 2 | cut -d $VALUE_FILTER -f 1 | sed -e 's/[+|[:blank:]|°|C]//g') + + found=0 + for item in $IGNORE_LIST; do + if [ "$item" == "$label" ] ; then + found=1 + fi + done + + if [ $found -eq 0 ] ; then + echo $label.value $value + fi + + done + +fi +