| 
 
 
   |   |  www.lissyara.su—> статьи—> FreeBSD—> программы—> Температура в серверной
 
 Мониторинг температуры MRTG+Digitemp
Автор: Капитан.
 
        Встала задача наблюдать за температурой в серверной. Встроенные датчики оборудования для этой цели не сильно подходят. Поиск на просторах сети вывел на программу 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.lissyara.su/articles/mad_hands/computers/ds9097+ds1820/
 
 Теперь софт.
 В портах этой программы не оказалось.
 Придётся ставить вручную из исходников. Исходники можно скачать с сайта разработчиков по адресу:
 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. Проверяем:
 Программа выведет встроенный 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
 
 
 
		
		
 
 
 
 
 
 
 Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=14&t=31002.
 
 
 
				
					| размещено: 2011-01-28,последнее обновление: 2011-02-04,
 автор: Капитан
 |  |  
 
 
  
 |   |   
 2014-07-27, lissyaragmirror
 Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
 2013-08-20, zentarimScan+Print server FreeBSD 9
 Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
 2011-11-20, BlackCatРазъём на WiFi-карту
 Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
 2011-09-14, manefestoНастройка git+gitosis
 Настройка системы контроля версия исходного кода в связке git+gitosis+ssh 
 2011-08-14, zentarimWi-FI роутер + DHCP + DNS
 Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
 2011-06-15, -ZG-Охранная система на FreeBSD+LPT
 В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
 2011-03-13, terminusng_nat
 Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
 2011-02-20, КапитанNagios+Digitemp
 Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
 2011-02-17, Le1Zyxel Configuration
 Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
 2011-02-16, foxhast carp zfs ucarp cluster
 HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
 2011-02-04, BlackCatВосстановление ZFS
 История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
 2011-02-03, Капитан1-Wire
 Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
 2011-01-28, КапитанТемпература в серверной
 Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
 2011-01-21, m4rkellSyslog server
 Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
 2011-01-07, lissyaraCanon/gphotofs
 Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
 2010-12-13, AlIPSec
 Описание принципов работы IPSEC и способов аутентификации.
 2010-12-07, manefestoFreeBSD on flash
 Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем  =)
 2010-12-05, Fomalhautroot ZFS, GPT
 Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
 2010-09-05, CancerНастройка аудиоплеера на ximp3
 Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
 2010-08-31, CancerУстановка и настройка OpenVPN
 На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
 2010-08-25, manefestofreebsd lvm
 Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
 2010-04-30, gonzo111proftpd file auth"a
 Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
 2010-04-22, lissyaratw_cli
 Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
 2010-04-14, foxMySQL Master+Master
 MySQL (Master Master) and (Master Slave) Как настроить репликацию…
 2010-03-09, terminusDNS zones
 Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
 2010-03-09, asperaSquid+AD (group access)
 Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
 
 | 
	
Комментарии пользователей [22 шт.]