munin-gen8/smart_array_disks_temperature

85 lines
1.8 KiB
Text
Raw Normal View History

2020-03-28 18:00:51 +01:00
#! /bin/bash
: << =cut
=head1 NAME
smart_array_disks_temperature - Plugin to monitor temperature of disk on HP Raid cards.
=head1 APPLICABLE SYSTEMS
Only tested on HP Microserver Gen8 with Smart Array P222.
Maybe works with other HP Prolant Raid cards.
=head1 CONFIGURATION
/etc/munin/plugin-conf.d/global or other file in that dir must contain:
[smart_array_disks_temperature*]
user root
=head1 NOTES
Uses the command "ssacli"
=head1 AUTHOR
Damien Broqua (https://framagit.org/dbroqua)
=head1 LICENSE
GPLv2
=head1 MAGIC MARKERS
#%# family=auto
#%# capabilities=autoconf
=cut
IFS=$'\n'
# Function to list all slots
getSlots () {
list=`ssacli ctrl all show config|grep "Slot"|awk -F'Slot ' '{print $2}'|cut -d' ' -f1`
return $list
}
# Function to get disk of one specified slot
getDisks () {
slot=$1
list=`ssacli ctrl slot=${slot} pd all show status|grep "physicaldrive"|awk -F 'physicaldrive' '{print $2}'|cut -d ' ' -f2`
for disk in ${list[@]} ; do
if [ "${2}" = "config" ]; then
diskName=`ssacli ctrl slot=${slot} pd ${disk} show detail|grep "Model"|cut -d':' -f2`
echo "${slot}${disk}CurrentTemperature(C).label (${disk}) ${diskName} "
else
diskDetails=`ssacli ctrl slot=${slot} pd ${disk} show detail|grep 'Current Temperature'`
temps="${diskDetails}"
for temp in ${temps[@]}; do
line="$(echo -e "${temp}" | tr -d '[:space:]'|sed -e "s/:/.value /g")"
echo ${slot}${disk}${line}
done
fi
done
}
# Config, set graph title
if [ "${1}" = "config" ]; then
echo "graph_title SMART Array disk temperature"
echo "graph_vlabel Degrees celcius"
echo "graph_category sensors"
fi
# Start script by getting list of slots
getSlots
slots=$?
# For each slot, get disks
for i in ${list[@]} ; do
getDisks $i $1
done