RRDTools мониторинг температуры процессора

RRDTools мониторинг температуры процессора

Тут вкратце опишу как сделать графики мониторинга температуры процессора с помощью RRDTools.

  1. Если не установлен пакет RRDTools — читаем здесь.
  2. Все используемые скрипты приложены к данному посту.
  3. Инструкция короткая, как записка, просто на память.

Используемая система

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