Здравствуйте, хабрлюди!
Предыстория.
Небольшой завод, небольшая серверная (2x4 метра), парк стоечных серверов, хранилищ, ИБП. Кондиционер который работает круглосуточно/круглодично.
Мир, труд, 1 мая, 7 утра звонок с завода, охрана: «Сработала пожарная сигнализация в серверной, горячая дверь, запаха гари нет.». Даю инструкцию дальнейших действий: «Вооружаемся рядом стоявшим огнетушителем, открываем дверь, еду.» По дороге звонок: «Дверь открыли, ничего не горит там жарко.» Говорю: «Оставить открытой дверь.»
Через 30 минут после первого звонка я возле серверной. Действительно жарко. Сервера неприятно шумят куллерами. Кондиционер отключен. Рубильником отключаю кондиционер, жду, включаю обратно, «пик», но не холодит. Вызываем кондционерщика обслуживающего нашу организацию, проверяем давление газа в кондиционере, газ есть но давление маленькое, добавляем газа, холодит. Закрываем дверь ждем, заходим, прохлада, сервера приятно шумят куллерами. Договариваемся об поиске места утечки. Расходимся. Шашлык. 1 мая, труд. мир.
Далее под кат.
Задача
Мониторинг температуры в серверной.
1. Всякого рода дополнительные датчики, с уведомлениями куда угодно.
Есть организация которая занимается у нас пожарной и всякого вида сигнализацией на заводе, ничего внятного предложить не смогли.
2. Принудительная вентиляция, с клапанами вентиляторами фильтрами.
Расположение серверной таково, что без проекта и подключения к этому дело разного вида служб нет возможности это сделать. Возможность конечно же есть, но желания у этих служб сводится к нулю. «Занимайся сам.»
3. Датчики в имеющемся железе.
На этом и остановился ради теста мониторинга и хоть какого то оповещения.
Развязка
В серверной много разношерстного железа. И все они содержат датчики, это факт. Но выбор пал именно на Mikrotik RouterBoard 2011UAS-RM. Объясню почему.
1. Он первый на кого дует кондиционер.
2. У него нет своего куллера.
3. Наличие датчика температуры.
4. Расположен в верхней части стойки.
5. Linux.
6. Свой скриптовый язык.
7. Наличие шары SMB.
8. Возможность отправки e-mail, смс не использую.
Все что нужно сделать это проверить его температуру. Уведомить на почту. Уведомить пост охраны. Если температура превышает нужное значения.
Tutorial
1. На Mikrotik есть интернет отправка e-mail настроена как надо и работает.
2. Пишем скрипт проверки температуры и отправки показаний на e-mail.
:global temp1
:set temp1 30
:global temp2 [/system health get temperature]
:if ($temp2 > $temp1) do= {/tool e-mail send to=email@email.ru subject=Warning_Temperature body="Warning!!! Room temperature - $temp2 Degrees"}
Разберем
:global temp1
переменная для порога температуры,
:set temp1 30
порог температуры,
:global temp2 [/system health get temperature]
получаем температуру и заносим ее в переменную,
:if ($temp2 > $temp1) do= {/tool e-mail send to=email@email.ru subject=Warning_Temperature body="Warning!!! Room temperature - $temp2 Degrees"}
тут все просто если полученная температура выше порога отправляем уведомление на почту. Переменные глобальные для других сриптов.
Данные скрипт в Scheduler с выполнением раз в 30 минут, а хотя по времени как хотите.
3. Оповещение охраны на посту. Так как серверная и пост охраны на разных этажах, но сеть то одна. И на посту большой телевизор с камерами подключенный к Windows машине.
Итак:
Включаем шару в Mikrotik /ip smb. Создаем пользователя, даем доступ к //mikrotik/pub.
Пишем скрипт.
:global t
:set t 1
:global f
:set f 0
/file set pub/temp.txt contents=$f
:if ($temp2 > $temp1) do= {/file set pub/temp.txt contents=$t}
Разберем
Переменная для плохой температуры
:global t
назначаем переменной единицу
:set t 1
переменная для хорошей температуры
:global f
назначаем переменной нуль
:set t 0
записываем в фал pub/temp.txt «0»
/file set pub/temp.txt contents=$f
проверяем температуру
:if ($temp2 > $temp1) do= {/file set pub/temp.txt contents=$t}
если температура выше нормы в файле pub/temp.txt 0 меняем на 1.
Данные скрипт в Scheduler с выполнением раз в 30 минут, а хотя по времени как хотите.
4. Оповещение Windows Машины на посту охраны.
Все что нужно это периодически читать файл //mikrotik/pub/temp.txt. Если в файле 0 ничего не делать, а если 1 то на экран (телевизор в моем случае) выводить большими красными буквами WARNING и другую информацию, которая будет полезна в решении проблемы. Данную программку можно спокойно написать хоть на чем. Под рукой был Delphi на нем и написали.
Да скажете колхоз и все такое, но пока такое решение. Пока беспокоить охрану не приходилось.
Автор: lmaxximl