- Цель всех нелепых телодвижений, описанных в статье, одна — облегчение мониторинга серверов и приложений.
- Этот смелый трюк можно повторить дома и на работе, даже неподготовленным спортсменам.
- Надеюсь, что этот текст пригодится не только адептам Nagios, но и светозарным джедаям Zabbix и неофитам других конфессий мониторинга.
- Здесь не будет продемонстрировано приемов высшего пилотажа в использовании паяльной станции, осциллографа и виртуозного владения Ruby/Fortran/etc. Все описанное примитивно, до отвращения, но дешево и сердито. А самое главное — оно работает.
Вероятно, многие из тех, кого спиннер сансары принес в область системного администрирования и сопровождения серверов в товарных количествах, задумывались об облегчении своей нелегкой ноши и не раз фантазировали, как бы сделать так, чтобы было как в песне: «вкалывают роботы, счастлив человек». Поделюсь своим рецептом обретения самадхи.
Основных способов слежения за системой мониторинга немного. Самые распространенные это чтение электрических писем и подглядывание за веб-интерфейсом. Этот функционал, как правило, доступен в любой системе мониторинга. Про отправку смс и прочую эзотерику пока говорить не будем. Но есть одно но. Электронные письма и веб-интерфейс не всегда удобны. И на них не всегда есть время и силы. В ситуации, когда отсутствует выделенный специалист (или даже целый отдел) мониторинга, нужно средство сигнализации:
- Не отвлекающее от выполнения других задач.
- Привлекающее внимание в случае появления проблем.
- Дешевое и сердитое.
Начальные условия задачи таковы:
- Используется Nagios.
- Все сервера находятся в ДЦ, далеко от офиса отдела сопровождения. Обычная ситуация.
- Корпоративные политики запрещают использование сетевых 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. Не буду приводить скриншоты, там все просто и прозрачно. Не хочется лишать читателей удовольствия немного усилить кровоснабжение своего неокортекса. Это приятно.
Теперь, когда у вас в руках перехваченные коды “
Надеюсь, вы добрались до этого этапа без жертв и разрушений. Осталось упаковать все в корпус и настроить Nagios и агента. В качестве корпуса использовал старую мышку. Все отлично поместилось, выглядит стильно, модно, молодежно. Главное, не забыть просверлить отверстие для светодиода по ГОСТ’у.
Теперь несколько слов об алгоритме сигнализации. Так как лампочка одна, а одномоментно разные сервисы могут находиться в разных состояниях, значит лампочек на всех может не хватить. Следовательно, надо отображать самое худшее состояние в текущий момент времени. Самое время вернуться к результатам запроса статуса через livestatus. Получив строку чисел, смотрим на самое первое число. Если оно не равно 0, включаем красный цвет и завершаем обработку результатов запроса. Все остальные статусы нам уже не интересны, т.к. каналов для их отображения нет. Если первое число равно 0, смотрим следующее число и т.д. Если все полученные значения равны 0, значит все сервисы находятся в статусе OK и можно смело включать зеленый цвет.
Количество сервисов в статусе OK не запрашивается и не анализируется. Помимо отображения статуса сервисов, в алгоритме реализовано некое подобие “сердцебиения”. Это нужно для понимания того, что вся цепочка работает и исправна. Перед любым переключением лампы, на одну секунду включается фиолетовый цвет, а уже затем соответствующий (красный, желтый, оранжевый или зеленый). После включения нужного цвета, посылается три раза код понижения яркости, чтобы уменьшить яркость лампы до минимума. В данной лампе всего 4 градации яркости, а лампа после переключения всегда включает максимум.
Вот и весь несложный алгоритм работы лампочки. Плюс ко всему на ночь лампа выключается, а утром включается.
Для тех кому понравился рецепт, выложил скрипты и куски конфигов на гитхаб.
Там все очень просто. Если все делать внимательно и аккуратно, то вы обязательно прокатитесь на квадриге. Желаю удачи.
Комментарии (2)
Duremar007 Автор
12.04.2018 10:46Лампочка Philips мне тоже нравится. Но ценник на нее совершенно негуманный. И придется заводить еще один сетевой интерфейс. Что противоречит условиям задачи. У кого нет таких ограничений, то вполне рабочий вариант, если закрыть глаза на цену. Эта китайская лампочка тащит службу уже второй год. К концу первого года сломался USB-COM адаптер за 100 р. Замена адаптера не очень хлопотное и затратное занятие. Можно держать кучку адаптеров, декодеров и лампочек про запас. Не так накладно. В случае лампочки Philips уже не все так весело со складскими запасами.
Насчет дополнительного количества градаций цветов не согласен. Не стоит вводить цвета, не существующие в используемой системе мониторинга. Эти лишние сущности усложнят мониторинг.
По поводу постоянно красной лампы согласен. Есть такой недостаток. Когда не удается быстро решить проблему, приходится косить лиловым глазом на страничку мониторинга, уровень комфорта понижается.
Но в больших организациях не стоит валить все в одну кучу. В том смысле, что не надо мониторить все-все аспекты одним инстансом системы мониторинга. Лучше использовать несколько инстансов и агрегировать статусы с них. Сетевики пусть занимаются сетями, DBA базами и т.д.
Если лампа всегда красная, то имеет смысл, вероятно, подкорректировать пороги срабатывания триггера. Вообщем всегда красная лампа повод подумать над тем, что не так в датском королевстве.
alex005
Спасибо за статью, но мне кажется, что нужно ориентироваться не на один сервис. В большой сети мониторинга (там, где мониторится буквально все) лампочка всегда будет красной, если ориентироваться на самое худшее состояние, т.к. постоянно что-либо находится в аварийном состоянии. Лучше сделать некоторую агрегацию общего состояния и ввести больше градаций цветов, используя например лампочку Philips Hue White And Color Ambiance. Для этого даже не нужно ничего городить, т.к. у лампочки есть простой api, который можно просто дергать curl.