From 5005ca3959814f1524993328da2820819f35df9d Mon Sep 17 00:00:00 2001 From: dbroqua Date: Sat, 28 Mar 2020 18:00:51 +0100 Subject: [PATCH] Added smart_array_disks_temperature --- smart_array_disks_temperature | 85 ++++++++++++++++++++++++++++++++++ smart_array_system_temperature | 16 +++++++ 2 files changed, 101 insertions(+) create mode 100755 smart_array_disks_temperature create mode 100644 smart_array_system_temperature diff --git a/smart_array_disks_temperature b/smart_array_disks_temperature new file mode 100755 index 0000000..5c91896 --- /dev/null +++ b/smart_array_disks_temperature @@ -0,0 +1,85 @@ +#! /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 \ No newline at end of file diff --git a/smart_array_system_temperature b/smart_array_system_temperature new file mode 100644 index 0000000..2b185cc --- /dev/null +++ b/smart_array_system_temperature @@ -0,0 +1,16 @@ + + +# Auteur: Damien Broqua extract slot(s) +# => for each slot +# => get disk Model (ATA ST4000DM004-2CV1) +# => get disk temperature (Current Temperature (C):) + +# Process for get temperatures: +# get list of slot (hpacucli ctrl all show) +# => for each slot +# => temperatures (hpacucli ctrl slot=1 show) \ No newline at end of file