Тут вкратце опишу как сделать графики мониторинга температуры процессора с помощью RRDTools.
1. Если не установлен пакет RRDTools — читаем здесь.
2. Все используемые скрипты приложены к данному посту.
3. Инструкция короткая, как записка, просто на память.
Используемая система:
1 2 |
root@f02:/root # 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:
1 2 |
root@f02:/root # pkg_info | grep rrd rrdtool-1.4.7_2 Round Robin Database Tools |
Откуда берём данные о температуре?
1 |
sysctl -a | grep temperature |
Если пусто — пересобираем ядро с опцией:
1 |
device coretemp |
Выбираем папку, где будут лежать скрипты и базы rrd, у меня это /mnt/bin/
Скрипт создания базы RRD: Температура процессора
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#!/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: Температура процессора
1 2 3 4 5 6 7 |
#!/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: Температура процессора
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
#!/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» — Место — куда сохраняются графики. Думаю дальше объяснять не стоит.
Пример рабочего активного графика RRD: Температура процессора

Температура процессора за сутки
Скачать архив со скриптами:
Архив тут
1 Comment Добавить комментарий