Pull to refresh

Nagios-светофор из китайских кубиков

Reading time6 min
Views5.8K
UPD. Небольшое обновление по итогам 4 лет эксплуатации. За это время сломалась одна лампа и один конвертер USB-COM. Конвертер был просто заменен на другой, без малейшей попытки починить. Лампочка же была успешно отремонтирована, так как оказалась на удивление ремонтопригодна и легко разбиралась. Пришлось заменить один вспухший конденсатор.
На этом все. Продолжаю наблюдение.

Как водится, для начала маленький “письменный отмаз от ответственности”.

  • Цель всех нелепых телодвижений, описанных в статье, одна — облегчение мониторинга серверов и приложений.
  • Этот смелый трюк можно повторить дома и на работе, даже неподготовленным спортсменам.
  • Надеюсь, что этот текст пригодится не только адептам Nagios, но и светозарным джедаям Zabbix и неофитам других конфессий мониторинга.
  • Здесь не будет продемонстрировано приемов высшего пилотажа в использовании паяльной станции, осциллографа и виртуозного владения Ruby/Fortran/etc. Все описанное примитивно, до отвращения, но дешево и сердито. А самое главное — оно работает.

Вероятно, многие из тех, кого спиннер сансары принес в область системного администрирования и сопровождения серверов в товарных количествах, задумывались об облегчении своей нелегкой ноши и не раз фантазировали, как бы сделать так, чтобы было как в песне: «вкалывают роботы, счастлив человек». Поделюсь своим рецептом обретения самадхи.

Основных способов слежения за системой мониторинга немного. Самые распространенные это чтение электрических писем и подглядывание за веб-интерфейсом. Этот функционал, как правило, доступен в любой системе мониторинга. Про отправку смс и прочую эзотерику пока говорить не будем. Но есть одно но. Электронные письма и веб-интерфейс не всегда удобны. И на них не всегда есть время и силы. В ситуации, когда отсутствует выделенный специалист (или даже целый отдел) мониторинга, нужно средство сигнализации:

  1. Не отвлекающее от выполнения других задач.
  2. Привлекающее внимание в случае появления проблем.
  3. Дешевое и сердитое.

Начальные условия задачи таковы:

  1. Используется Nagios.
  2. Все сервера находятся в ДЦ, далеко от офиса отдела сопровождения. Обычная ситуация.
  3. Корпоративные политики запрещают использование сетевых USB устройств (и дисков, к слову). Это значит, что не получится использовать готовые WiFi и BT контроллеры различных светодиодных гирлянд и прочих радостей умного дома и интернета вещей. Остается старый добрый последовательный порт. Или USB-COM адаптер. Это замечательное устройство не запрещено доменными политиками.

Таким образом вырисовывается следующая конфигурация. На сервере Nagios скрипт проверяет статус и по сети отправляет команду на включение лампочки, находящейся в отделе сопровождения.

Условия задачи поставлены, приступаем к решению.

Для начала определим способ получения статуса мониторинга. В Nagios это делается благодаря компоненте livestatus. Настройка и установка описаны тут. После установки можно получить статус мониторинга в реальном времени простейшим скриптом. Вполне информативен такой запрос:

GET services
Stats: state = 2
Stats: state = 1
Stats: state = 3
Separators: 10 32 44 124

На выходе получаем три числа в одной строке, разделенные пробелом. Это количество сервисов находящихся в состоянии CRITICAL, WARNING и UNKNOWN соответственно. На этом вопрос обработки статусов мониторинга пока оставим в стороне, вернемся к этому позднее. Получение статусов с вашей любимой системы мониторинга оставляю на ваше усмотрение.

Переходим к самой вкусной части нашего приключения, к железкам и проводам.

Теперь необходимо выбрать канал передачи и способ индикации состояния мониторинга. После недолгих раздумий и поисков, выбор пал на комплект из лампочки с инфракрасным управлением, инфракрасного декодера и адаптера USB-COM. Этот комплект подключается к рабочей станции на которой развернут клиент Nagios (nsclient++).

Итак, все ингредиенты перечислены, осталось взболтать но не смешивать.

Начнем с лампочки.

Лампочка с пультом

Лампочка (как и все остальные компоненты) была куплена на али. Ищите по ключевым словам “IR RGB LED bulb”. Очень мощная не нужна, достаточно 3-5 ватт. Это важно, потому что лампа весь день находится в прямой видимости, и слишком яркая будет мешать и слепить.

И еще важно, чтобы она управлялась по протоколу NEC. Так как готовый декодер поддерживает только этот протокол. Заодно не забудьте прикупить любой настольный или напольный плафон для лампы, если его у вас нет. Лампочку достаточно просто вкрутить в плафон и включить в сеть 220В.

Следующий компонент — модуль инфракрасного декодера (в сборе с USB-COM адаптером).

Декодер

В китайских закромах можно отыскать по словам “ir decoder”. Для этого прекрасного модуля даже имеется схема и комплект документации, доступный по ссылке.

В качестве адаптера USB-COM подойдет любой Prolific/Silicon Labs/FTDI/CH340/etc. Ищется на али по заклинанию “serial converter usb ttl”. На всякий случай напомню, что как минимум два бренда из перечисленных(FTDI и Prolific), замечены в неравной борьбе с пользователями своих продуктов. Это выражается в неработоспособности свежих драйверов с пиратскими адаптерами из Китая. Приходится принудительно откатываться на предыдущие версии драйверов. Подробнее останавливаться на этом не буду, в сети много информации.

Дальнейшее повествование подразумевает, что вы закончили сеанс тантрического уединения с адаптером USB-COM и в вашей системе появился дополнительный COM порт. Теперь подключаем к адаптеру декодер (предварительно отключив адаптер от USB порта!) Для этого достаточно соединить 8 штырьков 4-мя проводками (ни в коем случае не наоборот!). Примерно так:
decoder usb-com
5v 5v
tx rx
rx tx
gnd gnd

Пришло время, затаив дыхание, подключить нашу конструкцию к USB порту. Если белый дым не покинул изделие, можно проверять работоспособность всей цепочки. Необходимо убедиться, что IR сигнал принимается и отправляется, а также записать все коды от пульта управления лампочкой. Для этого прекрасно подходит программа RealTerm. Не буду приводить скриншоты, там все просто и прозрачно. Не хочется лишать читателей удовольствия немного усилить кровоснабжение своего неокортекса. Это приятно.

Теперь, когда у вас в руках перехваченные коды “Энигмы” пульта, осталось проверить срабатывание лампы от декодера. В той же программе RealTerm отправляете полученные коды и наблюдаете срабатывание лампы. В отправке кодов есть небольшой нюанс. Если вам лень читать документацию на адаптер, дам подсказку. По умолчанию, после включения, декодер работает с адаптером на скорости 9600. Для отправки нескольких байт этого более чем достаточно. Но имеется возможность увеличить скорость обмена с адаптером по RS232. Кроме того, перед отправкой кода в декодер, сначала необходимо отправить префикс A1 F1. К примеру, при захвате кода красной кнопки, RealTerm выдал 00 FF 09. Чтобы этот код добрался до лампы через декодер, нужно отправить последовательность A1 F1 00 FF 09. Все коды, естественно, шестнадцатеричные.

Надеюсь, вы добрались до этого этапа без жертв и разрушений. Осталось упаковать все в корпус и настроить Nagios и агента. В качестве корпуса использовал старую мышку. Все отлично поместилось, выглядит стильно, модно, молодежно. Главное, не забыть просверлить отверстие для светодиода по ГОСТ’у.

Теперь несколько слов об алгоритме сигнализации. Так как лампочка одна, а одномоментно разные сервисы могут находиться в разных состояниях, значит лампочек на всех может не хватить. Следовательно, надо отображать самое худшее состояние в текущий момент времени. Самое время вернуться к результатам запроса статуса через livestatus. Получив строку чисел, смотрим на самое первое число. Если оно не равно 0, включаем красный цвет и завершаем обработку результатов запроса. Все остальные статусы нам уже не интересны, т.к. каналов для их отображения нет. Если первое число равно 0, смотрим следующее число и т.д. Если все полученные значения равны 0, значит все сервисы находятся в статусе OK и можно смело включать зеленый цвет.

image

Количество сервисов в статусе OK не запрашивается и не анализируется. Помимо отображения статуса сервисов, в алгоритме реализовано некое подобие “сердцебиения”. Это нужно для понимания того, что вся цепочка работает и исправна. Перед любым переключением лампы, на одну секунду включается фиолетовый цвет, а уже затем соответствующий (красный, желтый, оранжевый или зеленый). После включения нужного цвета, посылается три раза код понижения яркости, чтобы уменьшить яркость лампы до минимума. В данной лампе всего 4 градации яркости, а лампа после переключения всегда включает максимум.

Вот и весь несложный алгоритм работы лампочки. Плюс ко всему на ночь лампа выключается, а утром включается.

Для тех кому понравился рецепт, выложил скрипты и куски конфигов на гитхаб.

Там все очень просто. Если все делать внимательно и аккуратно, то вы обязательно прокатитесь на квадриге. Желаю удачи.
Tags:
Hubs:
Total votes 13: ↑13 and ↓0+13
Comments2

Articles