Initial commit
This commit is contained in:
commit
33882d5455
13 files changed
+543
No files matched your search
@@ -0,0 +1,56 @@
|
||||
#!/bin/bash
|
||||
|
||||
# XML escape in string metrics. Gmond handles this for its own metrics, we must do it ourself
|
||||
xml_escape() {
|
||||
local input="$1"
|
||||
input="${input//&/\&}"
|
||||
input="${input//</\<}"
|
||||
input="${input//>/\>}"
|
||||
input="${input//\"/\"}"
|
||||
input="${input//\'/\'}"
|
||||
echo "$input"
|
||||
}
|
||||
|
||||
# Read all the IPMI hardware sensors
|
||||
/usr/sbin/ipmi-sensors --ignore-not-available --no-header-output |
|
||||
sed -Es 's/ *\| */|/g' |
|
||||
while read line; do
|
||||
# Read the line into a split array
|
||||
readarray -td '|' linearray < <(echo $line)
|
||||
|
||||
# line looks like:
|
||||
# 4 | CPU1 Temp | Temperature | 46.00 | C | 'OK'
|
||||
|
||||
# name of the sensor
|
||||
reading_name=${linearray[1]}
|
||||
|
||||
# replace spaces with underscores
|
||||
reading_name=${reading_name// /_}
|
||||
|
||||
# fix the tilde on some machines which report ram temperatures in banks
|
||||
reading_name=${reading_name//\~/_thru_}
|
||||
|
||||
# make it all lowercase
|
||||
reading_name=${reading_name,,*}
|
||||
|
||||
# reading units and value
|
||||
reading_value=${linearray[3]}
|
||||
reading_units=${linearray[4]}
|
||||
|
||||
# If it's an event, report a string not a float
|
||||
if [ $reading_value == "N/A" ]; then
|
||||
reading_event=${linearray[5]}
|
||||
reading_event=${reading_event//$'\n'/}
|
||||
reading_event=${reading_event//"' '"/, }
|
||||
reading_event=${reading_event//"'"/}
|
||||
gmetric --name="$reading_name" --value="$(xml_escape "$reading_event")" --type=string --group=physical --conf=$conf
|
||||
else
|
||||
gmetric --name="$reading_name" --value="$reading_value" --units=$reading_units --type=float --group=physical --conf=$conf
|
||||
fi
|
||||
|
||||
# echo "$reading_name $reading_value $reading_units"
|
||||
done
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user