mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
185 lines
4.2 KiB
Bash
Executable File
185 lines
4.2 KiB
Bash
Executable File
#!/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_<type>[_ignore1[,ignore2[,...]]]
|
|
#
|
|
# <type> 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
|
|
|