Как стать автором
Обновить

Мониторинг температуры серверной своими руками

Время на прочтение 3 мин
Количество просмотров 25K
Когда мы в очередной раз узнали об отказе кондиционера в серверной по гневным сообщениям от встроенного мониторинга серверов, было принято волевое решение научить Zabbix мониторить температуру в серверной. Чтобы при повторении подобной ситуации принять меры до того, как серверная превратится в баню.



Реализация довольно проста: термодатчик опрашивается контроллером через шину 1wire, сам контроллер подключается к любому доступному серверу по USB и опрашивается командой head -n1 /dev/cuaU, которая прописывется в конфиге zabbix агента следующим образом:

UserParameter=usbtemp,head -n1 /dev/cuaU0

Выбор датчика с цифровым интерфейсом обусловлен тем, что это хороший задел на будущее чтобы добавить на шину еще десяток датчиков, если потребуется мониторить температуру каждой стойки отдельно, напрмер. Сам контроллер подключен по USB и чтобы не изобретать свои драйвера прикидывается обычным CDC serial emulator, то есть обычным виртуальным COM портом, и можно конечно же было использовать и HID class, так как он идеологически лучше подходит со всеми своими структурированными HID-report’ами для опроса всяческих датчиков. Но решил все же пока обойтись CDC для наглядности и простоты реализации.

Итак, все что потребуется для реализации это: непосредственно термодатчик DS18B20, микроконтроллер имеющий аппаратный USB модуль на борту, пара резисторов, конденсаторов и USB шнурок. В качестве микроконтроллера реализующего мост 1wire-USB, использован МК PIC16F1454, вообще же читатель может использовать любой другой МК на собственный вкус (подключив пару библиотек — 1wire, USB-CDC), либо подключить внешний UART-USB мост типа CP2102. Не очень люблю подобные костыли поэтому предпочел решение на одной микросхеме — взял самый дешевый контроллер с USB, на момент создания устройства это был PIC16F1454.



В проекте не использовалось готовых USB стеков от Microchip или сторонних, вместо них использован самописный стек, разработанный ранее для другого проекта. Однако вдаваться в особенности реализации своей библиотеки USB я в данной статье не буду. Так как работа с шиной USB выходит за рамки этой статьи и заслуживает отдельной, либо даже цикла статей. За который я возможно возьмусь в скором будущем, если, конечно читателю эта тема будет интересна.
Схема очень простая, поэтому плата была сразу разведена в sprint layout, тем не менее привожу чертеж схемы.



Контроллер не поддерживает бут-лоадер, поэтому зашить его можно только через программатор, используя ICSP разъем. Подойдет PICKIT2, например, или его клон.

Правильно собранное устройство начинает работать сразу после подачи питания и наладки не требует. Устройство драйверов не требует так как используется стандартный класс CDC, под Windows 10 и FreeBSD определяется сразу, под Windows 7 потребуется указать inf файл (см. архив к статье), явно указывающий на драйвер usbser.sys. Под другими ОС устройство не тестировалось. При подключении должно определиться как /dev/cuaUx, под FreeBSD, где x — логический номер устройства. Выполнив команду #head -n1 /dev/cuaU0 вы можете проверить, что датчик корректно опрашивается и отображается текущая температура.



Под виндой для проверки можно использовать любую терминальную программу, например putty.



Если все работает правильно можно продолжить. Далее создаем новый параметр (item) где в качестве key прописываем наш UserParameter, указанный в конфиге агента.



Ну и после этого остается только создать новый график из этого параметра. И добавить триггер например на 28-30 градусов.

В следующей версии планируется добавить возможность опроса множества датчиков и отображение температуры, с выбранного датчика, на дисплее на самом устройстве. Архив с материалами к статье.
Теги:
Хабы:
+28
Комментарии 59
Комментарии Комментарии 59

Публикации

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн