Свою первую статью на Хабре интересно написать по материалу, основанному на личном опыте и действиях. Для этот как раз подходит раздел DIY или Сделай сам.

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

Задача:


Собрать бюджетную (с минимальными затратами) стабильную систему для простого удаленного мониторинга температуры в Серверной комнате.

В Серверной установлены два кондиционера (сплит-системы), две 19” стойки с оборудованием (коммутационное оборудование + сервера + ИБП).

image

Решение собиралось из имеющихся под рукой устройств (некоторым более 10 лет уже было) и бесплатного ПО.

Список оборудования и ПО:

  • цифровой USB-термометр MP707 (диапазон измеряемых температур, -55...+125);
  • 10-летний неттоп с МП MSI A9830IMS, Intel Atom N270 (1 Сore\1.60 GHz), 1GB ОЗУ, 80GB HDD;
  • ОС и ПО для неттопа: Linux Mint 17.1 Cinnamon 32-bit + ПО BMcontrol + служба SNMP + bash-script;
  • ПО для мониторинга: PRTG Network Monitor 17.1.28.1341 x64 на 100 сенсоров (бесплатное), установлено на внешнем ПК с Windows 7.

Устанавливаем в Серверной комнате датчик температуры (красным показано место установки):

image

Вот датчик закреплен на стойке:

image

Настройка Неттопа:

— устанавливаем Linux Mint, обновляем;

image

— подключаем к неттопу по USB-кабелю USB-термометр MP707;
— получаем id температурного датчика с помощью BMcontrol;
— проверяем работу датчика: «sudo /var/www/bmcontrol1 temp b0000002c6dded28»
— пишем простой скриптик на 10+ лет работы системы:

Скрипт
#!/bin/bash
count=0
sensor=`sudo /var/www/bmcontrol temp b0000002c6dded28`
while [ $count -lt 9000000 ]
do
(( count++ ))
echo $count
#echo $sensor
echo `sudo /var/www/bmcontrol1 temp b0000002c6dded28`
sudo /var/www/bmcontrol1 temp b0000002c6dded28 > /tmp/1.txt
sleep 60
done


— теперь у нас есть работающий и выдающий данные датчик, осталось передать эти данные в систему мониторинга – поднимаем службу SNMP и в конфиге snmpd.conf добавляем событие для передачи данных с датчика температуры, записанных в файл «extend .1.3.6.1.4.1.2021.51 ipmitemp /bin/cat /tmp/1.txt».

image

Настройка PRTG (это уже для данных с датчика)


(Главное, правильно интерпретировать данные с помощью регулярных выражений, путем экспериментов только получилось сделать как нужно эти настройки, внизу подсказка как они должны быть).

БАЗОВЫЕ НАСТРОЙКИ ДАТЧИКА Имя датчика SNMP Серверная Температура
Значение OID 1.3.6.1.4.1.2021.51.3.1.1.8.105.112.109.105.116.101.109.112
РАСШИРЕННАЯ ОБРАБОТКА
Интерпретировать результат как Строка (по умолчанию)
Извлекать числовое значение с помощью регулярного выражения
Регулярное выражение ([1-2][0-9].[0-9][0-9])


Теперь в ПО PRTG мы получаем данные по температуре из Серверной от датчика.

image

Не совсем простая система получилась, но очень дешевая (пришлось только датчик купить), да и как лабораторный вариант и потренироваться для настройки и понимания работы разных компонент – очень полезно.

В данный момент система работает более года (на этой неделе как раз проверил ее и перезапустил скрипт для профилактики) и далее будет еще развиваться, но это совсем другая история.

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


  1. Serge78rus
    16.07.2018 20:02

    В чем тайный смысл ограничения времени работы "$count -lt 9000000"?


    1. denis-19 Автор
      16.07.2018 20:07

      Ограничение должно быть.
      А насколько большое тут каждому свое.
      Мне такой цифры хватает, чтобы год не мучаться — работает или нет. Ну и с запасиком…


      1. Serge78rus
        16.07.2018 20:22

        Извините, если не точно сформулировал, но я и просил объяснить смысл ограничения, а не его конкретное значение.


        1. denis-19 Автор
          16.07.2018 20:41

          Структура цикла.
          habr.com/company/ruvds/blog/325928


          1. comargo
            16.07.2018 20:55
            +3

            while /bin/true
            do 
            echo "ok"
            sleep 5
            done


          1. Serge78rus
            17.07.2018 09:32

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


  1. ilgoo
    16.07.2018 20:09

    А с чем связано такой специфичный выбор ПО для мониторинга?
    Почему не выбрали опенсорсные аналоги (Zabbix, Nagios, Graphite, Prometheus, etc.)?


    1. scruff
      17.07.2018 12:52

      Скорее всего из-за простоты. Поставить PRTG, прикрутить десяток сенсоров, настроить алерты сможет даже студент за пару часов. Вопрос в другом — если мне не изменяет память, PRTG требует денег, если ставится больше 10 сенсоров.


      1. denis-19 Автор
        18.07.2018 08:31

        Там фри вариант — 100 сенсоров на 1 сервер пртг бесплатно.
        Этого количества хватает на много чего.


  1. denis-19 Автор
    16.07.2018 20:18
    -1

    PRTG удобен и прост при быстром развертывании для стендов и разного парка железа (от Циски до Аудиокодеса его гонял в больших объемах сенсоров).
    Да и есть бесплатные плюшки там хорошие.
    Заббикс как то не пошел — не удобен оказался для моего парка железа.


  1. Chupakabra303
    16.07.2018 20:19
    +6

    Неттоп, USB датчик температуры…
    "Специалист подобен флюсу, полнота его одностороння"


    1. pyur
      16.07.2018 21:56
      +3

      да. до этого поста я считал, что «дно» — это использование Raspberry PI для подобных задач. а оно эвон как ещё можно.


  1. jehy
    16.07.2018 20:34

    С ардуиной можно уложиться примерно в три доллара. И работать будет явно дольше — там нечему отказывать. Примеров датчиков температуры на хабре сотни.


    1. aik
      16.07.2018 21:32

      Ардуина+температурный датчик+езернет за три доллара?


      1. jehy
        16.07.2018 22:12
        +1

        Да, простите, ошибся в два раза — шесть при закупке в мелкую розницу. Так что лучше, конечно, нетбук.


        1. aik
          16.07.2018 22:21

          У меня что-то меньше десятки не получается на али. Без учета БП.
          А упомянутый usb-градусник баксов шесть стоит.

          И стоит ли в этом случае с ардуиной возиться? Нет, конечно, ставить отдельный компьютер для измерения температуры нет никакого смысла, но в большинстве серверных сервера и так имеются — и воткнуть в них градусник проще, чем ставить отдельную ардуину.


          1. jehy
            16.07.2018 22:50

            Dht11 стоит меньше доллара. Ардуина с Ethernet — пятёрку. Запитывается от USB.


  1. pyur
    16.07.2018 21:54
    +2

    Вы всё неправильно сделали!
    Надо было взять б/у сервер на али-экспресс, с двумя 12-ядерными процессорами и 64 гигами оперативы. и в НЕГО воткнуть USB-свисток термометр.


    1. rstepanov
      16.07.2018 22:29

      Я года полтора назад предлагал забрать сановские серваки разной степени навороченности, некоторые — бесплатно, некоторые — недорого. Отличный вариант получился бы, как раз в стиле «в гамаке и стоя»


  1. Iaroslav_Olegovich
    16.07.2018 22:02

    Когда-то давно делал подобное на некоем польском чудном устройстве под названием lan controller, со всеми SNMP, cacti и линуксами. Сейчас просто стоит sonoff sc и ок


  1. 200sx_Pilot
    16.07.2018 22:21
    +1

    То есть DS1820 в свободный ком-порт в серверной — это будет сложнее?


    1. rstepanov
      16.07.2018 22:30
      +1

      Это не diy ни разу.


  1. Charg
    16.07.2018 22:22
    +1

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


    1. aik
      16.07.2018 22:26

      Между кондиционерными блоками виднеется отдельная коробка, есть надежда, что там их мозги спрятаны.
      Хотя у меня в серверной бюджетный вариант — стоит два бытовых сплита, один на 21 градус поставлен, другой на 24. Периодически меняю местами (ручками) для распределения нагрузки.
      Если вдруг температура стала 24 — значит один из кондиционеров вырубился и надо слать письмо админам.


  1. side2k
    16.07.2018 23:16

    Есть отличные недорогие устройства — ESPMeteo, с внешними датчиками DHT11/22, замеряющими температуру/влажность. Устройства умеют подключаться к wifi и как отдавать данные по запросу tcp/http, так и самостоятельно отправлять их, например, на MQTT-сервер и/или на narodmon.ru (для которого есть «родная» софтина под андроид, например).
    Первую такую станцию я купил пару лет назад, и с тех пор купил ещё три — замеряют температуру/влажность как в разных частях дома, так и снаружи. Данные собираются Zabbix-ом на домашнем сервере и рисуют графики.
    В самом дешёвом варианте железяка с одним датчиком стоит 850 рублей. Это, конечно, дороже вашего USB датчика, но, на мой взгляд, в целом — копеечное решение.


    1. little-brother
      17.07.2018 01:09

      Да самому без особых проблем можно в 4$ уложиться.

      Имхо, статья про троллейбус.


    1. Barnaby
      17.07.2018 22:04

      Дорого же, девборда+датчик — меньше $6.
      Я собирал беспроводные, вышло не очень: $8.4 на комплектующие, большой, садится за 4-6 месяцев, dht22 сильно врет по влажности.
      Проще всего взять сяомный шлюз, датчики аквара по $10 и включить доступ по лан. Очень компактные, долго работают и адекватно измеряют влажность. Поддержка шлюза есть наверное в любом умном доме.


  1. alprk
    17.07.2018 09:18

    А мы вытащили по IPMI температуру с передней панели одного из серверов в Zabbix.


  1. foxb
    17.07.2018 10:15

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


    1. denis-19 Автор
      17.07.2018 10:17

      Смысл был именно сделать небольшое отдельное решение, которое можно перемещать и менять настройки при необходимости без вмешательства в текущие рабочие системы в инфраструктуре.


  1. scruff
    17.07.2018 12:44

    Не реклама! Пользую этот ru.aliexpress.com/item/USB-Sensor-Thermometer-Temperature-Measurement-Control-Alarm-Data-Logger-Tester/32777212557.html
    Настраивается в 2 минуты. Умеет рисовать графики и слать алерты на почту.


  1. scruff
    17.07.2018 12:57

    Мне одному показалось, что серверная совмещена то ли со складом, то ли с рабочими местами? Если так то, как вы там «выживаете»?


    1. denis-19 Автор
      17.07.2018 14:25

      Рабочих мест там нет (там иногда еще живут стулья и тумбочки незадействованные), стеллажи используются для хранения тестового оборудования.


  1. vviz
    17.07.2018 23:05

    Прошу прощения, но ведь серверные UPS содержат внешние датчики температуры и SNMP. Снять значения Zabbix'ом. Все же уже производителями UPS придумано и реализованно.


    1. denis-19 Автор
      18.07.2018 06:59

      У нас старые APC даже без карт.
      Тем более ИБП\сервера не все время стоят в стойке — их могут забрать на ремонт, поменять и прочее. И тогда опять заново настройки делать.
      Обычно внутренние датчики температуры из устройства не быстро реагируют на смену внешней температуры, да и погрешность там больше.
      Внешний же датчик можно размещать где удобно и он более точен по изменениям показаний в короткое время.
      Хотя это интересная тема — провести сравнение видов графиков температуры из сервера, маршрутизатора ибп и внешнего датчика при выключении кондиционеров.