RRD: статистика температуры дисков через hddtemp: различия между версиями
Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
Rain (обсуждение | вклад) (Новая: <source lang=bash> #!/bin/bash dbfile="$1" if [ -z "${1}" ]; then echo -e " \e[32mUsage: \e[31m$0 \e[33mRRDBFILE \e[36mDrive1 Drive2 \e[32mExample: \e[31m$0 \e[33m/home/$USER/myups....) |
Rain (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
==Создание базы== | |||
Создание базы для замеров температуры с 10 дисков через hddtemp. | |||
---- | |||
<source lang=bash> | |||
rrdtool create /home/stats/hddtemp.$HOSTNAME.rrd --step 60 \ | |||
DS:disk0temp:GAUGE:120:U:U \ | |||
DS:disk1temp:GAUGE:120:U:U \ | |||
DS:disk2temp:GAUGE:120:U:U \ | |||
DS:disk3temp:GAUGE:120:U:U \ | |||
DS:disk4temp:GAUGE:120:U:U \ | |||
DS:disk5temp:GAUGE:120:U:U \ | |||
DS:disk6temp:GAUGE:120:U:U \ | |||
DS:disk7temp:GAUGE:120:U:U \ | |||
DS:disk8temp:GAUGE:120:U:U \ | |||
DS:disk9temp:GAUGE:120:U:U \ | |||
RRA:AVERAGE:0.5:1:80 \ | |||
RRA:AVERAGE:0.5:8:200 \ | |||
RRA:AVERAGE:0.5:80:600 \ | |||
RRA:AVERAGE:0.5:600:1100 | |||
</source> | |||
==Добавление данных== | |||
<source lang=bash> | <source lang=bash> | ||
#!/bin/bash | #!/bin/bash | ||
Строка 22: | Строка 45: | ||
shift | shift | ||
rrdtool update "${dbfile}" $(date +%s):$(/usr/sbin/hddtemp -n "${@}" | tr '\n' ':' | sed 's/:$//g') | # Как оказалось, если в базе создано 10 элементов, то при заносе данных в базу должны заноситься все значения, поэтому в дополнение тут используется функция, дополняющая недостающие устройства символами ":0" | ||
rrdtool update "${dbfile}" $(date +%s):$(/usr/sbin/hddtemp -n "${@}" | tr '\n' ':' | sed 's/:$//g')$(seq 1 $((10-$#)) | tr '\n0-9' '0:') | |||
</source> | |||
==Создание графика== | |||
Пример для одного диска, нужные DEF'айны и LINE'ы добавить при необходимости. | |||
---- | |||
<source lang=bash> | |||
#!/bin/bash | |||
imgpath='/home/stats/graphs/' | |||
mkgraph() { | |||
if [ "$3" == 'normal' ];then | |||
size='--width 400 --height 200' | |||
elif [ "$3" == 'large' ]; then | |||
size='--width 900 --height 450' | |||
fi | |||
nice -n 19 rrdtool graph "${2}" --imgformat PNG \ | |||
DEF:disk0temp="${1}":disk0temp:AVERAGE \ | |||
LINE2:disk0temp#ff0000:'hda' \ | |||
${size} \ | |||
--title "${4}" \ | |||
-s ${5} \ | |||
--lower-limit 0 \ | |||
--watermark="${HOSTNAME}" \ | |||
--slope-mode \ | |||
--lazy | |||
} | |||
img="${1##*/}";img="${img%.rrd}" | |||
mkgraph "${1}" "${imgpath}""${img}".h.png 'normal' "${2}, час" -75min | |||
mkgraph "${1}" "${imgpath}""${img}".h.large.png 'large' "${2}, час" -75min | |||
mkgraph "${1}" "${imgpath}""${img}".d.png 'normal' "${2}, день" -27h | |||
mkgraph "${1}" "${imgpath}""${img}".d.large.png 'large' "${2}, день" -27h | |||
mkgraph "${1}" "${imgpath}""${img}".m.png 'normal' "${2}, месяц" -33d | |||
mkgraph "${1}" "${imgpath}""${img}".m.large.png 'large' "${2}, месяц" -33d | |||
mkgraph "${1}" "${imgpath}""${img}".y.png 'normal' "${2}, год" -15mon | |||
mkgraph "${1}" "${imgpath}""${img}".y.large.png 'large' "${2}, год" -15mon | |||
</source> | </source> | ||
[[Category:Round Robin Database]][[Category:Скрипт]] | [[Category:Round Robin Database]][[Category:Скрипт]] |
Версия 01:42, 7 декабря 2008
Создание базы
Создание базы для замеров температуры с 10 дисков через hddtemp.
rrdtool create /home/stats/hddtemp.$HOSTNAME.rrd --step 60 \
DS:disk0temp:GAUGE:120:U:U \
DS:disk1temp:GAUGE:120:U:U \
DS:disk2temp:GAUGE:120:U:U \
DS:disk3temp:GAUGE:120:U:U \
DS:disk4temp:GAUGE:120:U:U \
DS:disk5temp:GAUGE:120:U:U \
DS:disk6temp:GAUGE:120:U:U \
DS:disk7temp:GAUGE:120:U:U \
DS:disk8temp:GAUGE:120:U:U \
DS:disk9temp:GAUGE:120:U:U \
RRA:AVERAGE:0.5:1:80 \
RRA:AVERAGE:0.5:8:200 \
RRA:AVERAGE:0.5:80:600 \
RRA:AVERAGE:0.5:600:1100
Добавление данных
#!/bin/bash
dbfile="$1"
if [ -z "${1}" ]; then
echo -e "
\e[32mUsage: \e[31m$0 \e[33mRRDBFILE \e[36mDrive1 Drive2
\e[32mExample: \e[31m$0 \e[33m/home/$USER/myups.rrd \e[36m/dev/hda /dev/hdb /dev/hdc /dev/sda
\e[0m"
exit 2
fi
if [ ! -e "${dbfile}" ]; then
echo -e "\e[31mError: Database \e[33m\"${dbfile}\" \e[31mnot exist\e[0m"
exit 1
fi
if [ ! -e /usr/sbin/hddtemp ]; then
echo -e "\e[31mError: \e[35m/usr/sbin/hddtemp:\e[31m no such file\e[0m"
exit 3
fi
shift
# Как оказалось, если в базе создано 10 элементов, то при заносе данных в базу должны заноситься все значения, поэтому в дополнение тут используется функция, дополняющая недостающие устройства символами ":0"
rrdtool update "${dbfile}" $(date +%s):$(/usr/sbin/hddtemp -n "${@}" | tr '\n' ':' | sed 's/:$//g')$(seq 1 $((10-$#)) | tr '\n0-9' '0:')
Создание графика
Пример для одного диска, нужные DEF'айны и LINE'ы добавить при необходимости.
#!/bin/bash
imgpath='/home/stats/graphs/'
mkgraph() {
if [ "$3" == 'normal' ];then
size='--width 400 --height 200'
elif [ "$3" == 'large' ]; then
size='--width 900 --height 450'
fi
nice -n 19 rrdtool graph "${2}" --imgformat PNG \
DEF:disk0temp="${1}":disk0temp:AVERAGE \
LINE2:disk0temp#ff0000:'hda' \
${size} \
--title "${4}" \
-s ${5} \
--lower-limit 0 \
--watermark="${HOSTNAME}" \
--slope-mode \
--lazy
}
img="${1##*/}";img="${img%.rrd}"
mkgraph "${1}" "${imgpath}""${img}".h.png 'normal' "${2}, час" -75min
mkgraph "${1}" "${imgpath}""${img}".h.large.png 'large' "${2}, час" -75min
mkgraph "${1}" "${imgpath}""${img}".d.png 'normal' "${2}, день" -27h
mkgraph "${1}" "${imgpath}""${img}".d.large.png 'large' "${2}, день" -27h
mkgraph "${1}" "${imgpath}""${img}".m.png 'normal' "${2}, месяц" -33d
mkgraph "${1}" "${imgpath}""${img}".m.large.png 'large' "${2}, месяц" -33d
mkgraph "${1}" "${imgpath}""${img}".y.png 'normal' "${2}, год" -15mon
mkgraph "${1}" "${imgpath}""${img}".y.large.png 'large' "${2}, год" -15mon