Сегодня я расскажу о важной части системы мониторинга Zabbix — низкоуровневом обнаружении, или Low Level Discovery. Статья познакомит тебя с базовыми сведениями об этой интересной функции и поможет автоматизировать твою систему мониторинга и вывести ее на новый уровень.

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

Не секрет, что правильно настроенный мониторинг в 99 случаях из 100 позволяет избежать крупной аварии в информационной системе. Авария может быть любого типа: от простых пятисотых ошибок на фронтенде до ужасающих отставаний репликации на серверах баз данных и до еще более ужасного выхода железа из строя. Во всех этих случаях нас спасает система мониторинга. Как показывает практика, грамотно настроенный мониторинг творит чудеса, бережет нервы и греет душу.

На начальном этапе развития системы все просто. Есть от двух до десяти серверов, и все настройки можно проставить вручную. А как быть, когда система постепенно, но неумолимо растет? Когда серверов уже не десять, а пятьдесят или сто? Справиться как раз и помогает механизм Low Level Discovery.

Низкоуровневое обнаружение (я буду сокращать до LLD) дает возможность автоматизировать создание метрик (элементов данных), хостов, триггеров и графиков для разных объектов в системе мониторинга. Как пример можно привести мониторинг файловых систем и разделов в Linux — низкоуровневое обнаружение уже идет в поставке Zabbix для этой ОС. Делать тут ничего не надо, достаточно завести нужные хосты в группу, и все.

Мониторинг сетевых интерфейсов в Zabbix — это тоже низкоуровневые обнаружения. Кстати, можно настроить автоматическое удаление объектов из мониторинга по результатам проводимых обнаружений. И администратор может определить собственные типы обнаружения — достаточно описать их в виде файла JSON.

Но вернемся к обещанной истории из практики. Работал со мной один коллега, начинающий администратор. Ему дали задачу: завести под мониторинг около 270 объектов в Zabbix и настроить по ним триггеры. Казалось бы, все просто. В тот же день спрашиваю его: «Ну как, успел завести, сколько осталось? Готовы ли триггеры?» В ответ слышу: «Сегодня заведу метрики! А завтра сделаю триггеры!»

Задачу при этом нужно было закрыть в тот же день и отчитаться перед начальством. Как оказалось, коллега делал эти объекты вручную по одному. Сказать, что я опешил, — ничего не сказать. Спросил его про LLD, и выяснилось, что он даже не знал о существовании такой вещи. После небольшого экскурса мы закрыли задачу за час вместо двух дней ручной работы.

А теперь я повторю этот экскурс для читателей «Хакера».

 

Низкоуровневые обнаружения в теории

LLD появилась в Zabbix где-то с версии 2.0. Эта техника применяется не только для автообнаружения на хостах, LLD еще очень хорошо разгружает работу сервера Zabbix. В случае активной проверки сервер Zabbix сам отправляет запрос на хост, чтобы получить метрику. Обычно запрос ставится в очередь наряду со всеми остальными запросами и обрабатывается в порядке очереди, но, если метрик много, сервер будет серьезно загружен. В случае с LLD в режиме проверки хост zabbix-trapper сам отправляет серверу список метрик, а спустя небольшое время — и сами метрики со значениями. То есть нагрузка выходит минимальная. Сервер сам решает, что принимать, а что нет, исходя из настроек.

Реализация технологии LLD на хосте следующая: используется связка «приложение — скрипт — сендер Zabbix — сервер Zabbix». Давай пройдемся по всем этапам, чтобы было понятнее.

  1. Инициализация скрипта.
  2. Запрос от скрипта к приложению на получение метрик.
  3. Обработка запроса от скрипта приложением.
  4. Ответ скрипту от приложения с передачей данных.
  5. Формирование скриптом JSON LLD для передачи имен метрик на сервер Zabbix.
  6. Выдача JSON при вызове скрипта.
  7. Обработка полученных от приложения данных путем формирования метрик и их значений (к примеру, с записью в файл).
  8. Вызов сендера Zabbix скриптом и инициализация отправки метрик на сервер.
  9. Сендер передает запрос на сервер Zabbix. Режим проверки на сервере zabbix-trapper.
  10. Сервер Zabbix считывает метрики и отправляет ответ для сендера.
  11. Сендер получает ответ от сервера и логирует его на экран или в файл.

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

Схема взаимодействия компонентов Zabbix LLD
Схема взаимодействия компонентов Zabbix LLD

В остальных вопросах ты можешь смело обращаться к документации Zabbix. Русскоязычная документация лежит в открытом доступе.

INFO

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

 

Как это выглядит на практике

Что можно мониторить с помощью LLD? Да все что угодно! Главное — чтобы на хосте было большое количество объектов. Также желательно, чтобы объекты имели структуру. Хороший пример — мониторинг количества сообщений в очередях на сервере RabbitMQ. Общее количество очередей на сервере может быть больше ста штук. А из структуры объектов нам понадобятся только имя очереди на сервере и количество сообщений за последнюю минуту.

Итак, ставим себе задачу.

  1. Собирать количество сообщений в очереди AMQP на сервере.
  2. В том случае, если в очереди скопилось больше пяти сообщений за пять минут, вывести триггер предупреждения. Если свыше 100 за 30 минут, то триггер повышается до статуса чрезвычайного.

INFO

В этом примере сервер и хост Zabbix развернуты на системе Linux CentOS 7.2. Версия хоста и сервера — 3.4. Ты можешь использовать любой другой дистрибутив операционной системы на свое усмотрение. Версию Zabbix советую использовать выше 2.0.

Переходим к настройке LLD на сервере Zabbix. Необходимо будет настроить шаблон, а внутри него — обнаружение. Все просто.

Продолжение доступно только подписчикам

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

Подпишись на «Хакер» по выгодной цене!

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Оставить мнение

Check Also

Ghidra vs IDA Pro. На что способен бесплатный тулкит для реверса, созданный в АНБ

В марте 2019 года Агентство национальной безопасности США (NSA) опубликовало инструментари…