RRDTools мониторинг температуры процессора
Тут вкратце опишу как сделать графики мониторинга температуры процессора с помощью RRDTools.
- Если не установлен пакет RRDTools — читаем здесь.
- Все используемые скрипты приложены к данному посту.
- Инструкция короткая, как записка, просто на память.
Используемая система
uname -v
FreeBSD 9.1-RELEASE #0: Mon Jan 14 22:10:38 KRAT 2013 root@f02.24srv.ru:/usr/obj/usr/src/sys/GEN140113
Процессор с 2-я ядрами, поэтому скрипты рассчитаны на это.
Используемый пакет RRDTools
pkg_info | grep rrd
rrdtool-1.4.7_2 Round Robin Database Tools
Откуда берём данные о температуре?
sysctl -a | grep temperature
Если пусто — пересобираем ядро с опцией:
device coretemp
Выбираем папку, где будут лежать скрипты и базы rrd, у меня это /mnt/bin/
Скрипт создания базы RRD: Температура процессора
#!/bin/sh
rrdtool create db-cputemp.rrd --step 60 \
DS:core0:GAUGE:120:U:U \
DS:core1:GAUGE:120:U:U \
RRA:AVERAGE:0.5:1:525600 \
RRA:AVERAGE:0.5:15:35040 \
RRA:AVERAGE:0.5:30:17520 \
RRA:AVERAGE:0.5:60:8760 \
RRA:MIN:0.5:1:525600 \
RRA:MIN:0.5:15:35040 \
RRA:MIN:0.5:30:17520 \
RRA:MIN:0.5:60:8760 \
RRA:MAX:0.5:1:525600 \
RRA:MAX:0.5:15:35040 \
RRA:MAX:0.5:30:17520 \
RRA:MAX:0.5:60:8760 \
RRA:LAST:0.5:1:525600 \
RRA:LAST:0.5:15:35040 \
RRA:LAST:0.5:30:17520 \
RRA:LAST:0.5:60:8760
Скрипт называется у меня: cdb-cputemp.sh — установите права для скрипта на исполнение, выполнить ОДИН раз. Скрипт создаст в месте запуска БД db-cputemp.rrd
Скрипт обновления базы RRD: Температура процессора
#!/bin/sh
rrd='/mnt/bin'
core0=`sysctl -a | grep dev.cpu.0.temperature | awk -F " " '{print $2}' | awk -F "C" '{print $1}'`
core1=`sysctl -a | grep dev.cpu.1.temperature | awk -F " " '{print $2}' | awk -F "C" '{print $1}'`
`/usr/local/bin/rrdtool update $rrd/db-cputemp.rrd N:$core0:$core1`
Скрипт upd-cputemp.sh (Именно так он у меня называется) обновляет базу db-cputemp.rrd по расписанию, которое Вы установите в crontab, у меня раз в минуту. Ну не забываем дать права на исполнение скрипта.
Скрипт рисования графиков из базы RRD: Температура процессора
#!/bin/sh
export LANG=UTF-8
export LC_ALL=ru_RU.UTF-8
CPUBASE="/mnt/bin/db-cputemp.rrd"
WWWPREFIX="/mnt/www/server.24srv.ru/data/images/rrd"
RRDCMD="/usr/local/bin/rrdtool"
PERIOD="1d 30d 182d 1y"
for day in $PERIOD; do
$RRDCMD graph $WWWPREFIX/cputemp${day}.png \
--width 580 \
--height 250 \
--imgformat PNG \
--start -${day} \
--end now \
--slope-mode \
--font-render-mode light \
--font DEFAULT:8:Tahoma \
--font TITLE:9:Arial \
--font AXIS:7:Arial \
--font UNIT:8:"Courier New" \
--font LEGEND:7:"Courier New" \
--font WATERMARK:1:Arial \
--color BACK#2F2F2F \
--color CANVAS#003333 \
--color SHADEA#CCCCCC \
--color SHADEB#CCCCCC \
--color FONT#FFFFFF \
--color AXIS#FFFFFF \
--color ARROW#FF0000 \
--color GRID#CCCCCC \
--color MGRID#CCCCCC \
--vertical-label "Температура, C" \
--title "Температура процессора" \
DEF:core0=$CPUBASE:core0:LAST \
DEF:core1=$CPUBASE:core1:LAST \
LINE3:core0#FFFF00:"CPU ядро 0 " \
AREA:core0#FF0000:"" \
GPRINT:core0:LAST:"Посл. %1.0lf, C " \
GPRINT:core0:MAX:"Макс. %1.0lf, C " \
GPRINT:core0:AVERAGE:"Сред. %1.0lf, C " \
GPRINT:core0:MIN:"Мин. %1.0lf, C \c" \
COMMENT:"\s" \
LINE2:core1#00FF00:"CPU ядро 1 " \
GPRINT:core1:LAST:"Посл. %1.0lf, C " \
GPRINT:core1:MAX:"Макс. %1.0lf, C " \
GPRINT:core1:AVERAGE:"Сред. %1.0lf, C " \
GPRINT:core1:MIN:"Мин. %1.0lf, C \c" \
COMMENT:"www.savenkoff.com Processor Temperature last ${day}\n" \
> /dev/null 2>&1
done
exit 0
Скрипт под названием img-cputemp.sh рисует и перезаписывает уже нарисованные графики. Скрипт использует цикл, Кол-во и временной интервал, за который рисовать графики указан в переменной PERIOD=»1d 30d 182d 1y» — таким образом рисуется 4 графика: 1 день, 30 дней, 182 дня, 1 год. WWWPREFIX=»/mnt/www/server.24srv.ru/data/images/rrd» — Место — куда сохраняются графики. Думаю дальше объяснять не стоит.
Скачать скрипты можно по ссылке, пароль для скачивания LENdFCbQME