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

Предыстория

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

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

Комментарии (26)


  1. DanilinS
    04.05.2017 09:48
    +1

    Нужно 2 кондишена с автоматическим чередованием работы специальным контроллером. Если отказ — автоматический переход на исправный кондишен с отправкой алерта.


    1. Taciturn
      04.05.2017 10:59

      Трижды ломался «специальный контроллер» управляющий автоматическим чередованием. В качестве временно решения каждый раз вызывались электрики (в отличии от кондиционерщиков них есть круглосуточно (в том числе на выходных) доступный дежурный) и один из кондиционеров подключался напрямую.


      1. epoxm
        04.05.2017 14:36

        Нет адекватного охлаждения в серверной. Скорее всего ситуация выльется будущими проблемами связанными с охлаждением серверной комнаты в самый неподходящий момент.
        Аналогичная серверная имеются два дайкина — стоит переключатель (CCM-033). Переключение между кондерами каждые 8 часов. Работают уже 4 год. Переключатель — 3 года.


        1. rtzra
          05.05.2017 07:28

          Аналогичная схема из двух дайкинов. Заменили оба внешних блока (один через 8 лет, второй через 10), заменили переключатель (отработал ~10 лет). Осмотр мастером 2-3 раза в год. Отличное и практически неубиваемое решение.


          1. skylevels
            12.05.2017 13:30

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


            1. lmaxximl
              12.05.2017 13:38

              Затратно. Зарегил почту на mail, специально для этого у них есть отправка СМС бесплатно 2 в сутки. Одной СМС хватает чтоб среагировать. Бесплатно.


    1. u010602
      08.05.2017 15:22

      А если использовать горячий резерв, с двойным запасом по мощности, т.е. чтоб оба работали одновременно. По идее они или снизят мощность если инверторы, или будут чаще выключаться если он\офф.


  1. NikiN
    04.05.2017 10:58
    +4

    Зрелая система ИТ, без системы мониторинга — Пожар в борделе во время наводнения.


  1. Stalkeros
    04.05.2017 12:14
    +1

    Бюджетно, но если в серверной есть APC, то прикупить к нему плату мониторинга (которая уже может в нем быть) с 1-2 датчиками температуры, провести их в нужные места и настроить оповещения. У себя именно так научил Symmetra сообщать о превышении температуры. Если платы и датчиков нет, то в помощь ибей (дешевые платы) и авито (дешевые датчики).


  1. spxnezzar
    04.05.2017 12:29
    +1

    Читать туториал не стал. потому как решение показалось странным. Если есть хост, который мониторит самбу, то почему бы не нём не развернуть zabbix для общего мониторинга? микрот отлично мониторится по snmp, полно вариантов оповещения, в том числе и свои. У меня все критические оповещения (а повышение температуры это не высокий, а критичный уровень) вообще телефоном через астериск в мобилу и на рабочий гуглобаба зачитывает. Если астер не доступен, то в телеграм.


    1. spxnezzar
      04.05.2017 12:38

      а если вопрос в том как оповещать охрану, так можно использовать виндовые вызовы, хоть банальны net send или msg если охране комп обновлили до win7 )


    1. mihmig
      04.05.2017 12:52

      По snmp мирота кто мониторить будет? Сервер что стоит рядом? Так он зависнет от перегрева быстрее чем микрот…


      1. spxnezzar
        04.05.2017 13:00
        +1

        если повиснет сервер, который мониторит микрот, то думаю уже будет всё равно, мониторится что-то или нет, т.к. это будет не единственный повисший сервер. большинство серверов на intel могут работать при температурах близких к 50 градусам, для этого температура в серверной должна подняться минимум до 35-40, при положенных 17 градусах, так что триггер должен быть настроен на 25-30 градусов, а не точку зависания серверов.


    1. AcidVenom
      04.05.2017 20:06

      Модель RB3011UIAS-RM периодически отдает 85+ градусов по snmp, хотя охлаждения вполне достаточно. Просто после 25 градусов сразу 85+, а потом снова 25.
      Это так, к слову. Через заббикс эта проблема решается за 1 минуту.


  1. Biochemist
    04.05.2017 12:35

    Небольшой завод, небольшая серверная (2x4 метра), парк стоечных серверов, хранилищ, ИБП. Кондиционер который работает круглосуточно/круглодично./blockquote>

    Я не могу себе объяснить как вот это может сочетаться с тем, что в организации нет никаких систем мониторинга окружающей среды в серверной.


    1. spxnezzar
      04.05.2017 12:39

      завод может быть механическим, поставка железа комплексная под конкретные задачи, отсутсвие понимания у руководства, да полно причин может быть, вплоть до того, что завод только-только купили и начали деятельность.


  1. solalex
    04.05.2017 15:33

    Такая же ситуация была, сдох кондиционер, полупромышленный, отработал 3 года, нагнулся компрессор.
    Замена компессора — 80% от стоимости нового. Заказали новый кондишн, пока ехал, охлаждали открытыми окнами, благо погода позволяла, на улице было от 5 до 15 градусов.
    Денег на два кондишена не выделяют, увы.


  1. Constantin84
    04.05.2017 16:32

    Если есть IPMI на серверах, то можно через zabbix или prtg настроить мониторинг температуры сразу кучи мест.
    Да и в любом случае мониторинг дисков, процов и критичных сервисов не помешает.


  1. ArsenAbakarov
    04.05.2017 17:03

    Ставили отдельную железку, мониторили температуру, влажность и все такое, цепляли к заббиксу


  1. dimonw
    04.05.2017 20:20

    Спасибо, как то не задумывался о то что с микротика можно температуру снимать :)
    Добавил себе в бота телегам.

    :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}


    1. pr0l
      05.05.2017 06:05

      проще Заббикс научить слать в теллеграм сообщения, чем изгаляться.
      Мы настроили Заббикс слать все в теллеграм и еще тикеты в OTRS открывать. Все работает второй год, история по оборудованию смотрится с первого запроса.


  1. Pave1
    05.05.2017 09:49

    Жутчайший колхоз… Самопильное костыльное ПО… Зачем? Может систему мониторинга внедрить?
    Из вменяемых и условно дешевых систем контроля окружающей среды — есть отечественная вполне вменяемая и условно бюджетная система netping. К которой подключаются датчики температуры, влажности, протечки, дыма, наличия напряжения и т.д… С поддержка SNMP и своими средствами оповещения. Мне вполне понра.


  1. Noa69
    05.05.2017 11:25

    Слишком сложно у вас как-то все. Можно проще и по старинце, через 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 в систему мониторинга, если она у вас конечно есть.


  1. dude_01
    12.05.2017 13:31

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

    /tool e-mail
    set address=173.194.65.108 from=mikrotik@gmail.com password=\
    your_password starttls=yes user=your_account@gmail.com


    1. lmaxximl
      12.05.2017 13:34

      А в 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


    1. lmaxximl
      12.05.2017 13:39

      И тогда уже /tool e-mail send to=email@email.ru subject=Warning_Temperature body=«Warning!!! Room temperature