Нижеописанная система уже работает больше года практически без перерыва.
Задача:
Собрать бюджетную (с минимальными затратами) стабильную систему для простого удаленного мониторинга температуры в Серверной комнате.
В Серверной установлены два кондиционера (сплит-системы), две 19” стойки с оборудованием (коммутационное оборудование + сервера + ИБП).
Решение собиралось из имеющихся под рукой устройств (некоторым более 10 лет уже было) и бесплатного ПО.
Список оборудования и ПО:
- цифровой USB-термометр MP707 (диапазон измеряемых температур, -55...+125);
- 10-летний неттоп с МП MSI A9830IMS, Intel Atom N270 (1 Сore\1.60 GHz), 1GB ОЗУ, 80GB HDD;
- ОС и ПО для неттопа: Linux Mint 17.1 Cinnamon 32-bit + ПО BMcontrol + служба SNMP + bash-script;
- ПО для мониторинга: PRTG Network Monitor 17.1.28.1341 x64 на 100 сенсоров (бесплатное), установлено на внешнем ПК с Windows 7.
Устанавливаем в Серверной комнате датчик температуры (красным показано место установки):
Вот датчик закреплен на стойке:
Настройка Неттопа:
— устанавливаем Linux Mint, обновляем;
— подключаем к неттопу по USB-кабелю USB-термометр MP707;
— получаем id температурного датчика с помощью BMcontrol;
— проверяем работу датчика: «sudo /var/www/bmcontrol1 temp b0000002c6dded28»
— пишем простой скриптик на 10+ лет работы системы:
#!/bin/bash
count=0
sensor=`sudo /var/www/bmcontrol temp b0000002c6dded28`
while [ $count -lt 9000000 ]
do
(( count++ ))
echo $count
#echo $sensor
echo `sudo /var/www/bmcontrol1 temp b0000002c6dded28`
sudo /var/www/bmcontrol1 temp b0000002c6dded28 > /tmp/1.txt
sleep 60
done
— теперь у нас есть работающий и выдающий данные датчик, осталось передать эти данные в систему мониторинга – поднимаем службу SNMP и в конфиге snmpd.conf добавляем событие для передачи данных с датчика температуры, записанных в файл «extend .1.3.6.1.4.1.2021.51 ipmitemp /bin/cat /tmp/1.txt».
Настройка PRTG (это уже для данных с датчика)
(Главное, правильно интерпретировать данные с помощью регулярных выражений, путем экспериментов только получилось сделать как нужно эти настройки, внизу подсказка как они должны быть).
БАЗОВЫЕ НАСТРОЙКИ ДАТЧИКА Имя датчика SNMP Серверная Температура
Значение OID 1.3.6.1.4.1.2021.51.3.1.1.8.105.112.109.105.116.101.109.112
РАСШИРЕННАЯ ОБРАБОТКА
Интерпретировать результат как Строка (по умолчанию)
Извлекать числовое значение с помощью регулярного выражения
Регулярное выражение ([1-2][0-9].[0-9][0-9])
Теперь в ПО PRTG мы получаем данные по температуре из Серверной от датчика.
Не совсем простая система получилась, но очень дешевая (пришлось только датчик купить), да и как лабораторный вариант и потренироваться для настройки и понимания работы разных компонент – очень полезно.
В данный момент система работает более года (на этой неделе как раз проверил ее и перезапустил скрипт для профилактики) и далее будет еще развиваться, но это совсем другая история.
Комментарии (35)
ilgoo
16.07.2018 20:09А с чем связано такой специфичный выбор ПО для мониторинга?
Почему не выбрали опенсорсные аналоги (Zabbix, Nagios, Graphite, Prometheus, etc.)?scruff
17.07.2018 12:52Скорее всего из-за простоты. Поставить PRTG, прикрутить десяток сенсоров, настроить алерты сможет даже студент за пару часов. Вопрос в другом — если мне не изменяет память, PRTG требует денег, если ставится больше 10 сенсоров.
denis-19 Автор
18.07.2018 08:31Там фри вариант — 100 сенсоров на 1 сервер пртг бесплатно.
Этого количества хватает на много чего.
denis-19 Автор
16.07.2018 20:18-1PRTG удобен и прост при быстром развертывании для стендов и разного парка железа (от Циски до Аудиокодеса его гонял в больших объемах сенсоров).
Да и есть бесплатные плюшки там хорошие.
Заббикс как то не пошел — не удобен оказался для моего парка железа.
Chupakabra303
16.07.2018 20:19+6Неттоп, USB датчик температуры…
"Специалист подобен флюсу, полнота его одностороння"pyur
16.07.2018 21:56+3да. до этого поста я считал, что «дно» — это использование Raspberry PI для подобных задач. а оно эвон как ещё можно.
jehy
16.07.2018 20:34С ардуиной можно уложиться примерно в три доллара. И работать будет явно дольше — там нечему отказывать. Примеров датчиков температуры на хабре сотни.
aik
16.07.2018 21:32Ардуина+температурный датчик+езернет за три доллара?
jehy
16.07.2018 22:12+1Да, простите, ошибся в два раза — шесть при закупке в мелкую розницу. Так что лучше, конечно, нетбук.
aik
16.07.2018 22:21У меня что-то меньше десятки не получается на али. Без учета БП.
А упомянутый usb-градусник баксов шесть стоит.
И стоит ли в этом случае с ардуиной возиться? Нет, конечно, ставить отдельный компьютер для измерения температуры нет никакого смысла, но в большинстве серверных сервера и так имеются — и воткнуть в них градусник проще, чем ставить отдельную ардуину.
pyur
16.07.2018 21:54+2Вы всё неправильно сделали!
Надо было взять б/у сервер на али-экспресс, с двумя 12-ядерными процессорами и 64 гигами оперативы. и в НЕГО воткнуть USB-свисток термометр.rstepanov
16.07.2018 22:29Я года полтора назад предлагал забрать сановские серваки разной степени навороченности, некоторые — бесплатно, некоторые — недорого. Отличный вариант получился бы, как раз в стиле «в гамаке и стоя»
Iaroslav_Olegovich
16.07.2018 22:02Когда-то давно делал подобное на некоем польском чудном устройстве под названием lan controller, со всеми SNMP, cacti и линуксами. Сейчас просто стоит sonoff sc и ок
Charg
16.07.2018 22:22+1Ожидал увидеть хотя бы автоматическое включение кондиционеров по достижению некоего порога температуры, а тут всего-лишь гайд как из костылей собрать велосипед.
aik
16.07.2018 22:26Между кондиционерными блоками виднеется отдельная коробка, есть надежда, что там их мозги спрятаны.
Хотя у меня в серверной бюджетный вариант — стоит два бытовых сплита, один на 21 градус поставлен, другой на 24. Периодически меняю местами (ручками) для распределения нагрузки.
Если вдруг температура стала 24 — значит один из кондиционеров вырубился и надо слать письмо админам.
side2k
16.07.2018 23:16Есть отличные недорогие устройства — ESPMeteo, с внешними датчиками DHT11/22, замеряющими температуру/влажность. Устройства умеют подключаться к wifi и как отдавать данные по запросу tcp/http, так и самостоятельно отправлять их, например, на MQTT-сервер и/или на narodmon.ru (для которого есть «родная» софтина под андроид, например).
Первую такую станцию я купил пару лет назад, и с тех пор купил ещё три — замеряют температуру/влажность как в разных частях дома, так и снаружи. Данные собираются Zabbix-ом на домашнем сервере и рисуют графики.
В самом дешёвом варианте железяка с одним датчиком стоит 850 рублей. Это, конечно, дороже вашего USB датчика, но, на мой взгляд, в целом — копеечное решение.little-brother
17.07.2018 01:09Да самому без особых проблем можно в 4$ уложиться.
Имхо, статья про троллейбус.
Barnaby
17.07.2018 22:04Дорого же, девборда+датчик — меньше $6.
Я собирал беспроводные, вышло не очень: $8.4 на комплектующие, большой, садится за 4-6 месяцев, dht22 сильно врет по влажности.
Проще всего взять сяомный шлюз, датчики аквара по $10 и включить доступ по лан. Очень компактные, долго работают и адекватно измеряют влажность. Поддержка шлюза есть наверное в любом умном доме.
alprk
17.07.2018 09:18А мы вытащили по IPMI температуру с передней панели одного из серверов в Zabbix.
foxb
17.07.2018 10:15Также вы можете использовать датчики температуры сервера. Это не потребует дополнительного оборудования.
denis-19 Автор
17.07.2018 10:17Смысл был именно сделать небольшое отдельное решение, которое можно перемещать и менять настройки при необходимости без вмешательства в текущие рабочие системы в инфраструктуре.
scruff
17.07.2018 12:44Не реклама! Пользую этот ru.aliexpress.com/item/USB-Sensor-Thermometer-Temperature-Measurement-Control-Alarm-Data-Logger-Tester/32777212557.html
Настраивается в 2 минуты. Умеет рисовать графики и слать алерты на почту.
scruff
17.07.2018 12:57Мне одному показалось, что серверная совмещена то ли со складом, то ли с рабочими местами? Если так то, как вы там «выживаете»?
denis-19 Автор
17.07.2018 14:25Рабочих мест там нет (там иногда еще живут стулья и тумбочки незадействованные), стеллажи используются для хранения тестового оборудования.
vviz
17.07.2018 23:05Прошу прощения, но ведь серверные UPS содержат внешние датчики температуры и SNMP. Снять значения Zabbix'ом. Все же уже производителями UPS придумано и реализованно.
denis-19 Автор
18.07.2018 06:59У нас старые APC даже без карт.
Тем более ИБП\сервера не все время стоят в стойке — их могут забрать на ремонт, поменять и прочее. И тогда опять заново настройки делать.
Обычно внутренние датчики температуры из устройства не быстро реагируют на смену внешней температуры, да и погрешность там больше.
Внешний же датчик можно размещать где удобно и он более точен по изменениям показаний в короткое время.
Хотя это интересная тема — провести сравнение видов графиков температуры из сервера, маршрутизатора ибп и внешнего датчика при выключении кондиционеров.
Serge78rus
В чем тайный смысл ограничения времени работы "$count -lt 9000000"?
denis-19 Автор
Ограничение должно быть.
А насколько большое тут каждому свое.
Мне такой цифры хватает, чтобы год не мучаться — работает или нет. Ну и с запасиком…
Serge78rus
Извините, если не точно сформулировал, но я и просил объяснить смысл ограничения, а не его конкретное значение.
denis-19 Автор
Структура цикла.
habr.com/company/ruvds/blog/325928
comargo
Serge78rus
То есть, вместо того, чтобы потратить 5 минут времени и раз и навсегда разобраться, как в bash пишутся бесконечные циклы (авось, еще когда пригодиться), Вы предпочитаете заложить в скрипт бомбу замедленного действия? Такие простенькие системы, как описанная Вами, зачастую живут гораздо дольше, чем изначально предполагалось их создателями. Очень неприятно, когда давно сменил работу и думать забыл о том, что наваял на прошлом месте, получать «звонки из прошлого» с просьбой о помощи.