Mikrotik на страже температуры

в 6:35, , рубрики: bash, linux, mikrotik, Серверное администрирование, Сетевые технологии, системное администрирование

Здравствуйте, хабрлюди!

Предыстория.
Небольшой завод, небольшая серверная (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

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js