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

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

Предыстория

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

Да скажете колхоз и все такое, но пока такое решение. Пока беспокоить охрану не приходилось.
Поделиться публикацией

Комментарии 31

    +1
    Нужно 2 кондишена с автоматическим чередованием работы специальным контроллером. Если отказ — автоматический переход на исправный кондишен с отправкой алерта.
      0
      Трижды ломался «специальный контроллер» управляющий автоматическим чередованием. В качестве временно решения каждый раз вызывались электрики (в отличии от кондиционерщиков них есть круглосуточно (в том числе на выходных) доступный дежурный) и один из кондиционеров подключался напрямую.
        0
        Нет адекватного охлаждения в серверной. Скорее всего ситуация выльется будущими проблемами связанными с охлаждением серверной комнаты в самый неподходящий момент.
        Аналогичная серверная имеются два дайкина — стоит переключатель (CCM-033). Переключение между кондерами каждые 8 часов. Работают уже 4 год. Переключатель — 3 года.
          0
          Аналогичная схема из двух дайкинов. Заменили оба внешних блока (один через 8 лет, второй через 10), заменили переключатель (отработал ~10 лет). Осмотр мастером 2-3 раза в год. Отличное и практически неубиваемое решение.
            0

            Поставил у 2 умных розетки от Мегафона с симками и датчиками температуры: одна шлет смс на охрану, вторая на мой тел.
            Рабатают 2 кондея без контроллера, на противоположных стенках. Оба на одной и тойже температуре, холодят оба.

              0
              Затратно. Зарегил почту на mail, специально для этого у них есть отправка СМС бесплатно 2 в сутки. Одной СМС хватает чтоб среагировать. Бесплатно.
        0
        А если использовать горячий резерв, с двойным запасом по мощности, т.е. чтоб оба работали одновременно. По идее они или снизят мощность если инверторы, или будут чаще выключаться если он\офф.
        +4
        Зрелая система ИТ, без системы мониторинга — Пожар в борделе во время наводнения.
          +1
          Бюджетно, но если в серверной есть APC, то прикупить к нему плату мониторинга (которая уже может в нем быть) с 1-2 датчиками температуры, провести их в нужные места и настроить оповещения. У себя именно так научил Symmetra сообщать о превышении температуры. Если платы и датчиков нет, то в помощь ибей (дешевые платы) и авито (дешевые датчики).
            +1
            Читать туториал не стал. потому как решение показалось странным. Если есть хост, который мониторит самбу, то почему бы не нём не развернуть zabbix для общего мониторинга? микрот отлично мониторится по snmp, полно вариантов оповещения, в том числе и свои. У меня все критические оповещения (а повышение температуры это не высокий, а критичный уровень) вообще телефоном через астериск в мобилу и на рабочий гуглобаба зачитывает. Если астер не доступен, то в телеграм.
              0
              а если вопрос в том как оповещать охрану, так можно использовать виндовые вызовы, хоть банальны net send или msg если охране комп обновлили до win7 )
                0
                По snmp мирота кто мониторить будет? Сервер что стоит рядом? Так он зависнет от перегрева быстрее чем микрот…
                  +1
                  если повиснет сервер, который мониторит микрот, то думаю уже будет всё равно, мониторится что-то или нет, т.к. это будет не единственный повисший сервер. большинство серверов на intel могут работать при температурах близких к 50 градусам, для этого температура в серверной должна подняться минимум до 35-40, при положенных 17 градусах, так что триггер должен быть настроен на 25-30 градусов, а не точку зависания серверов.
                  0
                  Модель RB3011UIAS-RM периодически отдает 85+ градусов по snmp, хотя охлаждения вполне достаточно. Просто после 25 градусов сразу 85+, а потом снова 25.
                  Это так, к слову. Через заббикс эта проблема решается за 1 минуту.
                  0
                  Небольшой завод, небольшая серверная (2x4 метра), парк стоечных серверов, хранилищ, ИБП. Кондиционер который работает круглосуточно/круглодично./blockquote>

                  Я не могу себе объяснить как вот это может сочетаться с тем, что в организации нет никаких систем мониторинга окружающей среды в серверной.
                    0
                    завод может быть механическим, поставка железа комплексная под конкретные задачи, отсутсвие понимания у руководства, да полно причин может быть, вплоть до того, что завод только-только купили и начали деятельность.
                    0
                    Такая же ситуация была, сдох кондиционер, полупромышленный, отработал 3 года, нагнулся компрессор.
                    Замена компессора — 80% от стоимости нового. Заказали новый кондишн, пока ехал, охлаждали открытыми окнами, благо погода позволяла, на улице было от 5 до 15 градусов.
                    Денег на два кондишена не выделяют, увы.
                      0
                      Если есть IPMI на серверах, то можно через zabbix или prtg настроить мониторинг температуры сразу кучи мест.
                      Да и в любом случае мониторинг дисков, процов и критичных сервисов не помешает.
                        0
                        Ставили отдельную железку, мониторили температуру, влажность и все такое, цепляли к заббиксу
                          0
                          Спасибо, как то не задумывался о то что с микротика можно температуру снимать :)
                          Добавил себе в бота телегам.

                          :global temp1
                          :set temp1 30
                          :global temp2 [/system health get temperature]
                          :if ($temp2 > $temp1) do= {/tool fetch url=(«https://api.telegram.org/bot_TOKEN/sendmessage\?chat_id=ChatID&text= Warning!!! Room temperature $temp2.») keep-result=no}
                            0
                            проще Заббикс научить слать в теллеграм сообщения, чем изгаляться.
                            Мы настроили Заббикс слать все в теллеграм и еще тикеты в OTRS открывать. Все работает второй год, история по оборудованию смотрится с первого запроса.
                            0
                            Жутчайший колхоз… Самопильное костыльное ПО… Зачем? Может систему мониторинга внедрить?
                            Из вменяемых и условно дешевых систем контроля окружающей среды — есть отечественная вполне вменяемая и условно бюджетная система netping. К которой подключаются датчики температуры, влажности, протечки, дыма, наличия напряжения и т.д… С поддержка SNMP и своими средствами оповещения. Мне вполне понра.
                              0
                              Слишком сложно у вас как-то все. Можно проще и по старинце, через SNMP:
                              > /system health print oid
                              active-fan: .1.3.6.1.4.1.14988.1.1.3.9.0
                              voltage: .1.3.6.1.4.1.14988.1.1.3.8.0
                              temperature: .1.3.6.1.4.1.14988.1.1.3.10.0
                              processor-temperature: .1.3.6.1.4.1.14988.1.1.3.11.0
                              current: .1.3.6.1.4.1.14988.1.1.3.13.0
                              power-consumption: .1.3.6.1.4.1.14988.1.1.3.12.0
                              psu1-state: .1.3.6.1.4.1.14988.1.1.3.15.0
                              psu2-state: .1.3.6.1.4.1.14988.1.1.3.16.0

                              Дальше нужные OID в систему мониторинга, если она у вас конечно есть.
                                0
                                Да кстати в итоге так и сделали.
                                0
                                Доброго времени суток! А подскажите как реализовать отправку сообщения на мыло?
                                По первой части скрипта который вы выложили отправка сообщения не осуществляется.
                                Пробовал еще такой скрипт

                                /tool e-mail
                                set address=173.194.65.108 from=mikrotik@gmail.com password=\
                                your_password starttls=yes user=your_account@gmail.com
                                  0
                                  А в Mikrotik вы настроили почту? /tool e-mail print
                                  address: 64.233.162.109
                                  port: 587
                                  start-tls: yes
                                  from: Mikrotik
                                  user: gmail@gmail.com
                                  password:
                                  last-status: succeeded
                                    0
                                    И тогда уже /tool e-mail send to=email@email.ru subject=Warning_Temperature body=«Warning!!! Room temperature
                                    0
                                    Надо не забывать, что от версии ROS сенсор температуры иногда жутчайшую дичь отдает (вроде нескольких тысяч градусов в один из замеров) — причем это именно всплеск, покажешь раз чушь, а на следующий замер все отлично.

                                    Полагаю, вас оно обошло стороной. По SNMP ловится чаще, так что в том же Заббиксе невредно брать минимальное значение за несколько последних замеров.
                                      0
                                      у меня все отлично ловит, по графику видно как солнце движется и светит на точку в течении дня. image
                                        0
                                        Я вам могу график за догое время привести, где иногда бывают прыжки выше «порога». Сначала переживали, думали, откуда в 2 часа ночи раз в 5 минут дергание температуры, потом (сравнив с данными от мониторинга APC) пришли, что это дурь микротика. Но наблюдалось на разных экземплярах, так что, возможно, актуально не только для той серии, что была.
                                          0
                                          Скорее всего зависит от модели. Выше писал, что на RB3011UIAS-RM проблема есть. Графиков нет.

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое