установка_и_настройка_digitemp http://klotik.ru/wiki/doku.php/freebsd:cacti_digitemp
В этой части статьи мы научимся структурировано сохранять и визуализировать наши данные. Поможет нам в этом – набор утилит rrdtool.Поехали!
# portsnap fetch update # cd /usr/ports/databases/rrdtool # make config
Выбираем нужные нам опции, жмем Enter
# make install clean # rehash
Создаем директорию для хранения базы rrd.
# mkdir /var/db/rrdtool
Выполняем команду создания нашей базы, команда выполняется в одну строку, символы ” \” являются переносами строк.
/usr/local/bin/rrdtool create /var/db/rrdtool/temperature.rrd --step 300 \ DS:temperature:GAUGE:600:U:U \ # последние 48 часов, каждые 5 мин RRA:AVERAGE:0.5:1:576 \ # последние 2 недели, среднее зн. за 30 RRA:AVERAGE:0.5:6:672 \ # последние 2 месяца, средне за каждые 2 часа RRA:AVERAGE:0.5:24:732 \ # последние 2 года, среднее за 12 часов RRA:AVERAGE:0.5:144:1460
Тем самым мы создали нашу базу в /var/db/rrdtool/temperature.rrd с шагом 300(скрипт у нас запускается каждые 5 мин(5мин*60сек=300)), в которой есть один DS (Data Source) с названием temperature, с типом источника GAUGE, который нам больше всего подходит, т.к. может хранить произвольные числа. Так же в DS у нас описаны четыре RRA (round robin archives), по примеру: RRA:функция_консолидации:доля:отсчетов_на_ячейку:число_ячеек.
Немного переделываем наш скрипт, который мы писали во второй части статьи.
# vi /home/scripts/temperature.sh #!/bin/sh # в переменную $line вставляем текущие значения номер датчика и температуры line=`/usr/local/bin/digitemp_DS9097 -q -a -c /path/.digitemprc` # в переменной $temperature оставляем только значение температуры temperature=`echo $line | awk '{print $2}'` # определяем текущею дату для вывода в лог date=`date "+%d.%m.%Y_%H:%M"` # делаем вывод в лог-файл echo $temperature $date >> /var/log/temperature.log #Наполняем нашу базу /usr/local/bin/rrdtool update /var/db/rrdtool/temperature.rrd N:$temperatere
Если скрипт отработал без ошибок, значит Вы все сделали правильно, если нет, то проверьте пути до программ и конфигурационного файла.
Теперь попробуем создать график для отображения наших данных. В вышеуказанных примерах, мы использовали утилиту rrdtool с аргументами “create” и “update”. Для создания графиков мы будем использовать rrdtool c аргументом “graph”. Напишем скрипт для генерации графика:
# vi /home/scripts/graphcreate.sh #!/bin/sh #Экспортируем нашу локаль, у меня KOI-8, свою локаль Вы можете проверить командой "locale" #без этого на график не получится вывести кириллические символ export LANG=KOI8-R export LC_ALL=ru_RU.KOI8-R #Строим график либо все в одну строку, либо через разделитель " \", комментарии в строке вызовут ошибку rrdtool graph \ /usr/local/www/temperature/test.png \ --width 400 \ --height 250 \ --font TITLE:13 \ --color BACK#444444 \ --color SHADEA#444444 \ --color SHADEB#444444 \ --color CANVAS#444444 \ --color FONT#ff7518 \ --slope-mode \ --start -1d \ --end now \ --units-exponent 0 \ --vertical-label "Температура, C°" \ --title "Температура за сутки" \ --imgformat PNG \ DEF:temperature=/var/db/rrdtool/temperature.rrd:temperature:AVERAGE \ LINE1:temperature#00ff00:"" \ GPRINT:temperature:LAST:"Текущая\:%3.2lfC°" GPRINT:temp_0:AVERAGE:"Средняя\:%3.2lfC°" GPRINT:temp_0:MAX:"Максимальная\:%3.2lfC°" GPRINT:temp_0:MIN:"Минимальная\:%3.2lfC°\j" \ HRULE:0#00ffff
# chmod +x /home/scripts/graphcreate.sh
Создадим директорию для сохранения файла с графиком
# mkdir /usr/local/www/temperature # /home/scripts/graphcreate.sh 466×298
466×298 – это размер созданного .png файла, хотя мы в скрипте описали параметры –widht 400 и –height 250, картинка получается больше из-за дополнительных атрибутов (обозначение оси, титула и т.п.). Вот что у меня получилось
Разберем некоторые параметры rrdgraph:
–width 400 – Ширина в px
–height 250 – Высота в px
–font TITLE:13 – Размер шрифта в заголовке
–color BACK#444444 – Цвет фона
–color SHADEA#444444 – Цвет верхней и левой границы
–color SHADEB#444444 – Цвет нижней и привой границы
–color CANVAS#444444 – Цвет холста
–color FONT#ff7518 – Цвет шрифта
–slope-mode – Включить сглаживание
–start -1d – За какой период генерировать график, мы указали за сутки
–end now – Конец временного интервала графика (т.е. используя время в at-формате или формате Unix мы можем построить график за любой период)
–units-exponent 0 – Задаем единицы измерения по оси Y (0 – единицы, 1 – 1000, 2 – 10000 и т.д.)
–vertical-label “Температура, C°” – Подпись вертикальной оси
–title “Температура за сутки” – Заголовок графика
–imgformat PNG – Формат выходного файла .png
DEF:temperature=/var/db/rrdtool/temperature.rrd:temperature:AVERAGE – Создаем переменную “temperature”
LINE1:temperature#00ff00:”” – Задаем линию графика (толщину 1 и цвет #00ff00), после двоеточия в кавычках можно вписать название, на графике это будет использоваться как легенда
GPRINT:temperature:LAST:”Текущая\:%3.2lfC°” – Выводим в подпись температуру, которая может быть: последней, средней, максимальной, минимальной
Выведем график с помощью веб-сервера Apache (предполагается, что Apache у вас уже настроен и запущен, все пути в этой статье указывают на дефолтные настройки Apache). Создадим статичную страницу HTML.
# vi /usr/local/www/temperature/temperature.html <html> <title>Наша температура</title> </html> <body> <h1 align="center">Температура за сутки</h1> <div align="center"> <img src="test.png"> </div> </body>
Заходим на созданную страницу http://my_domen/temperature/temperature.html, мы должны увидеть примерно следующее: Осталось поместить в crontab расписания запуска нашего скрипта, генерирующего график /home/scripts/graphcreate.sh, либо вызывать его из скрипта получающие данные с температурного датчика или объединить эти скрипты.
http://blog.marvins.ru/avtomatizaciya/temperaturnyj-datchik-ds18s20-chast-3.html
https://ru.wikibooks.org/wiki/RRDtool#rrdcgi
http://dutyadmin.ru/content/rrdtool-teoriya-i-praktika
http://www.bog.pp.ru/work/rrdtool.html