Страница 1 из 2

Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-01-27 16:08:32
Капитан
Встала задача наблюдать за температурой в серверной. Встроенные датчики оборудования для этой цели не сильно подходят. Поиск на просторах сети вывел на программу Digitemp. Программа умеет снимать показания с датчиков на двухпроводной шине.
Имеем
Сервер на FreeBSD 8.1 Release 64-bit с установленным WEB сервером Apache и работающим MRTG. Необходимо наличие свободного COM порта.
Железо
Схема простейшего контроллера содержится в архиве с исходными текстами (файл DS9097_Schematic.gif). Для сбора схемы с одним датчиком были закуплены в магазине «Чип&Дип» следующие детали:
1.Диод Шоттки - 1N5818 – 2шт.
2.Стабилитрон на 3,9 В - BZX55C3v9 – 1шт.
3.Стабилитрон на 6,2 В - BZX55C6v2 – 1шт.
4.Резистор на 1,5 КОм – 1шт.
5.Датчик температуры DS1820 – 1шт.
6.Корпус разъема DB9 – 1шт.
7.Разъем DB9 мама (Female) – 1шт.

Всё это дело обошлось примерно в 420р. По ценам января 2011 года.
Если руки растут из правильных мест, и имеете навык общения с паяльником, всю схему можно разместить в корпусе разъёма навесным монтажом.
Автор не несёт ответственности за возможные негативные последствия вызванные попытками применить на практике материалы данной статьи!
Полупроводники имеют штриховую маркировку. Штриху соответствует катод (по схеме: катод – штрих, анод – треугольник). Датчик, повернутый спилом вверх, ножками к нам, маркируется с лева на право. Датчик я вывел обычной витой парой. Третий контакт не соединял – датчику хватает и паразитного питания. Если потребуется, дополнительные датчики подключаются параллельно. Каждый датчик имеет уникальный ID, так что не запутаетесь.

Возможные грабли:
Перед закупкой деталей убедитесь, что COM порт вашего сервера мониторинга имеет стандартное питание 9 В. Померьте напряжение между 4 и 5 контактом. Убил кучу времени пытаясь завести схему на сервере Hewlett Packard с 5-ти вольтовым портом. У стандартного порта напряжение между 4 и 5 контактом будет примерно 10-11,5 вольт. Для низковольтных портов используется другая схема контроллера. Мне в результате пришлось подсоединить контроллер к другому серверу и снимать показания через NRPE (но это уже будет другая статья).
Софт
В портах этой программы не оказалось.
Придётся ставить вручную из исходников. Исходники можно скачать с сайта разработчиков по адресу:
http://www.digitemp.com
Для компиляции понадобится gmake, если не установлен, собираем из портов

Код: Выделить всё

#cd  /usr/ports/devel/gmake
#make install clean
#rehash
Начинаем ставить Digitemp.

Код: Выделить всё

#mkdir  /«какая-нибудь временная папка с исходниками»
#cd  /«какая-нибудь временная папка с исходниками»
#fetch http://www.digitemp.com/software/linux/digitemp-3.6.0.tar.gz
#tar -xzvf digitemp-3.6.0.tar.gz
После разархивирования у нас появится папка
/«какая-нибудь временная папка с исходниками»/digitemp-3.6.0

Код: Выделить всё

#cd digitemp-3.6.0
#gmake ds9097
После компиляции в папке появится исполняемый файл digitemp_DS9097. Проверяем:

Код: Выделить всё

#./digitemp_DS9097
Программа выведет встроенный Help. Всё ОК.
В принципе, кроме этого файла нам больше ничего и не нужно.
Создаём рабочую папку нашей системы наблюдения за температурой.

Код: Выделить всё

#mkdir /usr/local/etc/digitemp/
#cp digitemp_DS9097 /usr/local/etc/digitemp/digitemp
#rm –r  /«какая-нибудь временная папка с исходниками»
#cd /usr/local/etc/digitemp
Контроллер присоединён к COM1, выполняем его инициализацию.

Код: Выделить всё

#./digitemp -i -s /dev/cuau0
Будет выведена информация о найденных датчиках и создан файл конфигурации .digitemprc примерно следующего содержания:
TTY /dev/cuau0
READ_TIME 1000
LOG_TYPE 1
LOG_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F"
CNT_FORMAT "%b %d %H:%M:%S Sensor %s #%n %C"
HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%"
SENSORS 1
ROM 0 0x28 0x4B 0xD1 0xC7 0x02 0x00 0x00 0xF0
Как видно, у меня один датчик. Нумерация датчиков начинается с нуля.
Пробуем снять показания.

Код: Выделить всё

#/usr/local/etc/digitemp/digitemp -a -c /usr/local/etc/digitemp/.digitemprc
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Jan 27 12:51:38 Sensor 0 C: 23.62 F: 74.53
Точность до сотых долей градуса нам не нужна Фаренгейты тоже и, дальнейшее курение Help-а позволяет создать нам итоговую команду вывода показаний температуры. Она будет выглядеть следующим образом:

Код: Выделить всё

#/usr/local/etc/digitemp/digitemp -t 0 -q -o "%.C" -c /usr/local/etc/digitemp/.digitemprc
24
Так гораздо приятнее :).

Теперь прикручиваем это всё к MRTG
Для начала немного лирики (теория). Исторически MRTG предназначен для показа графиков загрузки всяческих сетевых интерфейсов. Значения для этих графиков берутся из показаний соответствующих программных счётчиков снимаемых по протоколу SNMP. Для построения одного графика на входе MRTG должен получить четыре параметра:
1.Значение счётчика входящего трафика (зелёный граф);
2.Значение счётчика исходящего трафика (синий граф);
3.Uptime;
4.Как это всё называется.

Курение манов MRTG показало, что можно снимать значения и других параметров (не только загрузки сетевых интерфейсов) по протоколу SNMP, также существует возможность получать значения для графиков из результатов выполнения какого либо выражения (команды). Главное чтобы вывод был понятен MRTG. В качестве команды возвращающей 4 значения в голову сразу пришла команда cat читающая четырёх строчный файл.
Пора перейти к практике.
Нам нужен скрипт, который будет снимать периодически показания температуры, и создавать четырёх строчный файл в нужном формате.

Код: Выделить всё

#ee /usr/local/etc/mrtg/thermo.sh
Добавляем такие строки:
#!/bin/sh
echo 0 > /usr/local/etc/mrtg/thermal.log
echo `/usr/local/etc/digitemp/digitemp -t 0 -q -o "%.C" -c /usr/local/etc/digitemp/.digitemprc ` >> /usr/local/etc/mrtg/thermal.log
echo "15 days, 23:09:18" >> /usr/local/etc/mrtg/thermal.log
echo "Thermal State" >> /usr/local/etc/mrtg/thermal.log
Небольшой комментарий для тех, кто слабо знаком с работой echo. Первая команда создаёт новый файл /usr/local/etc/mrtg/thermal.log с одной строкой содержащей 0. Вторая команда дописывает в этот файл вторую строку содержащую текущее значение температуры. Третья дописывает в третью строку значение Uptime. Четвёртая – в четвёртую название параметра (из головы).
Делаем скрипт исполняемым и пробуем запустить

Код: Выделить всё

#chmod +x /usr/local/etc/mrtg/thermo.sh
#/usr/local/etc/mrtg/thermo.sh
Проверяем

Код: Выделить всё

#cat /usr/local/etc/mrtg/thermal.log
0
24
15 days, 23:09:18
Thermal State
Как можно заметить, я собираюсь рисовать график синим цветом, соответственно, показания датчика пишутся во вторую строку. Значение Uptime меняться не будет, применительно к температуре оно не имеет смысла, в третью
строку выводится значение с потолка (серверной) :). Теперь необходимо добавить запись в cron на периодический запуск этого скрипта. У меня MRTG запускается тоже через cron каждые пять минут (чаще нельзя). Показания температуры будем снимать с таким же интервалом.

Возможные грабли:
Опрос датчика температуры длится довольно длительное время. В .digitemprc стоит параметр
READ_TIME 1000
одна секунда. Реально получается чуть меньше 750мс. Т.е. скрипт не получится стартовать с такими же параметрами, как и MRTG – данные просто не успеют подготовиться.
У меня работает так:
*/5 * * * * root /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
4,9,14,19,24,29,34,39,44,49,54,59 * * * * root /usr/local/etc/mrtg/thermo.sh
Настало время править конфигурационный файл MRTG.
Примечание:
У меня направление движения графика по-умолчанию, цвета тоже «родные».
Добавляем в конфигурацию следующие строки:
Target[thermal]: `/bin/cat /usr/local/etc/mrtg/thermal.log`
Pagetop[thermal]: <h1>Thermal State in My Town</h1>
Title[thermal]: Thermal State
PNGTitle[thermal]: Thermal State in Server Room
MaxBytes[thermal]: 50
AbsMax[thermal]: 50
LegendI[thermal]: Outer
LegendO[thermal]: Inner
kMG[thermal]: C
Options[thermal]: nopercent,gauge,noinfo
YLegend[thermal]: Temp, C
ShortLegend[thermal]:
Legend1[thermal]: external
Legend2[thermal]: internal
Я оставил возможность подцепить на двухпроводную шину второй датчик (например - в офисе) и выводить его зелёным цветом. В этом случае первая строка thermo.sh будет такая:

Код: Выделить всё

echo `/usr/local/etc/digitemp/digitemp -t 1 -q -o "%.C" -c /usr/local/etc/digitemp/.digitemprc ` > /usr/local/etc/mrtg/thermal.log
После того, как MRTG запустится и «раскачается», график будет доступен по адресу:
http://мойсервермониторинга/mrtg/thermal.html

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-01-27 19:14:28
Alex Keda
схему приложите, и на сайт можно

зачот! =))
=========
хотя, конеччно, интеерсно было бы собрать показания с трёх-четырёх точек на одном графике
было бы показательно понаблюдать....

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-01-28 3:30:57
QweЯty
и где я раньше был, у меня данная схема уже как 9 месяцев работает:)

показывает температуру в тени, на солнце, увлажненного датчика и температуру батарей(по просьбе коменданта общаги)

правда я собирал в rrdtool все на одном графике...делал по примеру с демониады(оттуда взял скрипт для генерации картинки)

схема
Изображение

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-01-28 9:04:24
Alex Keda
статью давай =)

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-01-28 12:01:44
Капитан
Alex Keda писал(а):хотя, конеччно, интеерсно было бы собрать показания с трёх-четырёх точек на одном графике
было бы показательно понаблюдать....
MRTG может только два значения на одном графике (третье - как функция от первых двух). ИМХО, больше и не надо. Мы же не в ГИС Метео работаем :)

Статью сделал, но не разобрался с картинками и с номером раздела :(

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-01-28 14:02:27
Капитан
Разобрался :)

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-01-30 3:16:27
BlackCat
Капитан, интересный материал, спасибо.
А где собственно сама статья на сайте?
=====
QweЯty, даёшь статью для народа!

Добавлено: 2011-01-30 10:33:49
Капитан

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-01-30 14:05:19
Alex Keda
лучше в очумелые ручки засунуть куданить...

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-01-30 14:06:59
Alex Keda
+ пожелание - привести отечественные аналоги радиодеталей.
я, например, принципиально стараюсь инородные не брать.

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-01-31 0:00:56
Капитан
Alex Keda писал(а):лучше в очумелые ручки засунуть куданить...
На недельке сделаю отдельно про изготовление контроллера с фотками.
Просто на подходе использование этого дела в Nagios (для оповещения) . . . Ну чтоб не повторяться ;-)
Alex Keda писал(а):+ пожелание - привести отечественные аналоги радиодеталей.
я, например, принципиально стараюсь инородные не брать.
Стабилитроны
3,9 в - КС407Б
6,2 в - КС405А
А вот Шоттки наши делали для импульсников на токи от 5А и выше. Маломощных что-то не припомню. Все они идут в 220-х корпусах :( Тяжко с ними схему запихнуть в корпус разъёма :(
А так, по характеристикам, ближе всех будут, наверное, КД269А.

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-01-31 17:21:20
Alex Keda
у меня дома пачка валяется отечетсвенных - навыпаивал из импульсников всяких древних компов, когад в армии утилизировал всё это =)
да, большие, зато сжечь трудно =))

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-02-01 0:01:26
sSpeaker
Уже достаточно давно работает дома. Делалось весной и сначала работало на MRTG, но потом пришла зима и пришлось перейти на cacti. MRTG не может рисовать отрицательные значения(не нашол как это сделать).

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-02-01 0:12:36
gloom
единственное что очень неприятно ето цена на датчик коло 15$ штука

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-02-01 0:20:10
sSpeaker
С польшы заказивал по 15 грн(2$) за штуку. 18B20

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-02-01 8:15:34
Zedik
Я датчики покупал с ебея, там они чуть ли не по 80 русских за штуку.
а вот через usb-com переходник не пробовали подключать?
пробовал запустить, но не виден датчик
kernel: ugen0: Prolific Technology Inc. USB-Serial Controller D, rev 1.10/4.00, addr 2
и потом
# ./digitemp_DS9097 -i -s /dev/ugen0
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
owAcquire: failed to set attributes: Invalid argument
Error 24: Failed to initialize system resource
кто нибудь сталкивался?

вот интересная статья по сборке метеостанции с подключением к компу

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-02-01 9:15:53
Alex Keda
Zedik писал(а):Я датчики покупал с ебея, там они чуть ли не по 80 русских за штуку.
а вот через usb-com переходник не пробовали подключать?
пробовал запустить, но не виден датчик
kernel: ugen0: Prolific Technology Inc. USB-Serial Controller D, rev 1.10/4.00, addr 2
телепатирую, что там вольт 5, а то и меньше на ком-порту получается.
в USB питание 5 вольт же

http://forum.lissyara.su/viewtopic.php?f=5&t=31047
кросс-линк, на всякий случай. чтоб не разбредались =))

Добавлено: 2011-02-01 11:03:28
Капитан
Zedik писал(а):а вот через usb-com переходник не пробовали подключать?
пробовал запустить, но не виден датчик
Грабли №1
Alex Keda писал(а):телепатирую, что там вольт 5, а то и меньше на ком-порту получается.
в USB питание 5 вольт же
Эт точно

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-02-01 11:35:32
Zedik
хм, попробую замерить все же, потому как под виндой на ПК через usb переходник все нормально

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-02-02 15:56:43
QweЯty
единственное что очень неприятно ето цена на датчик коло 15$ штука
хм... у нас в магазине радиозапчастей... 75 р за штуку
вот интересная статья по сборке метеостанции с подключением к компу
схема интересная.. а вот стоимость деталей ого-го... один 1600 второй 1200 стоит... дорого:(

хотя если у кого-то завалялись:)

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-02-02 21:18:55
QweЯty
ага, схема интересная...
тока большой минус.. помимо того что цены заоблачные....
прога под винду заточена, и исходников программы нету, уже спрашивал автора...

Руководство по пайке

Добавлено: 2011-02-03 21:53:42
Капитан
Добавил описание изготовления в "Очумелые ручки"
http://www.lissyara.su/articles/mad_han ... 97+ds1820/
На очереди использование сабжа в Нагиос

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-02-03 23:09:13
Alex Keda
Самая дорога деталь

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-02-03 23:11:45
Alex Keda
+ пофиксил заголовок для меню
слишком большой был

Re: Статья: Мониторинг температуры MRTG+Digitemp

Добавлено: 2011-02-04 0:44:49
QweЯty
неиспользуемую третью ногу или на землю запаяйте или вообще отломайте(лучше первый вариант, но на одном датчике у меня перестали вестись показания, пришлось отломать)

нога хоть и корототкая но, сволочь, чувствительная к ВЧ помехам... очень часто будет выскакивать при опросе датчика 85 С - сигнал ошибки.

хотя вы не живете возле универа который усеян радиопередающими антеннами и 2мя радиолокаторами поблизости от общаг... так что наверное можно и так оставить. а у нас кастрюли с утюгами вещают иногда радиопереговорю любителей