Сегодня я расскажу о важной части системы мониторинга 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. Необходимо будет настроить шаблон, а внутри него — обнаружение. Все просто.

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

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

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

Вариант 2. Купи один материал

Заинтересовала информация, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для материалов, опубликованных более двух месяцев назад.


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

Check Also

Внутри x86-64 SystemV ABI. Как говорить с ядром Linux на его языке

Абстракция — основа программирования. Многие вещи мы используем, не задумываясь об их внут…