Русский
Русский
English
Статистика
Реклама

Низкоуровневое обнаружение (LLD) в Zabbix через SQL-запросы



Привет, Хабр! В этой статье поделюсь полезным подходом мониторинга в Zabbix через обнаружение элементов данных в ответе на SQL-запрос. Этот тип мониторинга обычно используется в бизнес-мониторинге, когда собираются показатели производительности бизнес-процесса: количество пользователей, транзакций или выполняется контроль статуса операций. В целом, это универсальный подход, про который администраторы Zabbix иногда забывают. А он есть. Добро пожаловать под кат.

Что будем делать в этой статье:

  • Клонируем репозиторий pg_stat_monitor от Percona и соберём этот плагин из исходников;
  • Добавим плагин pg_stat_monitor в БД PostgreSQL, на которой работает Zabbix;
  • Создадим шаблон для выполнения SQL-запроса в pg_stat_monitor;
  • Создадим правило низкоуровневого обнаружения для разбора ответа от SQL-запрос;
  • Создадим зависимые прототипы элементов данных для мониторинга некоторых характеристик производительности БД.

На сервере предварительно уже установлен Zabbix 5.2, работающий на PostgreSQL 12.

Установка и настройка плагина pg_stat_monitor для PostgreSQL


Pg_stat_monitor плагин для сбора статистики от Percona, основанный на pg_stat_statements. Можно сказать, что pg_stat_monitor это pg_stat_statements на стероидах. Основной недостаток pg_stat_statements отсутствие агрегированной статистики (и гистограмм в т.ч.) по накопленным запросам и статистике по ним. Соответственно, pg_stat_monitor лишен такого недостатка. Объём статистики, которая может собираться, настраивается в конфигурации плагина. Работает плагин следующим образом:

  • собирается статистика и объединяется в корзину (агрегат);
  • корзина собирается и хранится заданный период времени;
  • когда время истекает, pg_stat_monitor сбрасывает всю накопленную статистику и начинает собирать её заново.

Т.к. все данные из корзины в итоге исчезнут, нужно успеть прочитать эти данные. Как раз их мы и будем читать при помощи Zabbix.

Исходный код плагина доступен в репозитории Percona на Github. Мы его оттуда клонируем, соберём на тестовом сервере и подключим к имеющемуся инстансу PostgreSQL.

Листинг установки плагина
# dnf -y install gcc git libpq-devel postgresql-server-devel # cd /tmp# git clone git://github.com/Percona/pg_stat_monitor.git# cd pg_stat_monitor# make USE_PGXS=1# make USE_PGXS=1 install# sudo -i -u postgres psql# postgres=# alter system set shared_preload_libraries=pg_stat_monitor;# postgres=# \q# systemctl restart postgresql# sudo -i -u postgres psql# postgres=# create extension pg_stat_monitor;# postgres=# \q


После установки можно убедиться, что всё работает и спросить у плагина его настройки:



Ещё можно спросить, что он вообще может показать:



Некоторые из данных со скриншота выше мы будет потом забирать в Zabbix.

Создание шаблона в Zabbix для работы с БД по ODBC


Теперь установим на сервер с БД драйвер ODBC:

# dnf -y install postgresql-odbc

И проверим как там называется драйвер:



Теперь можно перейти в Zabbix, добавить некоторые макросы:



И создать мастер-элемент данных, из которого потом будут разбирать всё необходимое зависимые элементы:



В результате получим вывод в формате JSON:



Создание LLD-правила и прототипов элементов данных


На следующем шаге добавим к шаблону правило дискаверинга:



Добавим LLD-макрос для создания новых объектов по полю queryid:



Создаём один из прототипов элементов данных:



И шаги препроцессинга:



В итоге мы настроили три прототипа данных для разбора полей с текстом запроса, максимальным временем выполнения и количеством вызовов:



В результате всех выполненных настроек получим следующую картину:



Некоторые из запросов окрашены в серый, потому что queryid с ними более не обнаруживаются. Можно настроить минимальное время хранения таких объектов и удалять их сразу после отправки оповещения о длительном SQL-запросе.

Заключение


Мы рассмотрели общую концепцию настройки низкоуровнего обнаружения через SQL-запросы. Примерно таким образом можно автоматизировать мониторинг специализированных метрик из баз данных. А собирая все необходимые данные в представления, можно за один запрос извлекать максимум требуемой информации. Подробнее о наших услугах относительно Zabbix вы можете узнать на специальной странице.

А ещё можно почитать:

Zabbix под замком: включаем опции безопасности компонентов Zabbix для доступа изнутри и снаружи

Добавляем CMDB и географическую карту к Zabbix

Структурированная система мониторинга на бесплатных решениях

Мониторинг принтеров в Zabbix

Как сократить объем дискового пространства, занимаемого БД Zabbix

Как снизить количество шумовых событий в Zabbix
Источник: habr.com
К списку статей
Опубликовано: 16.11.2020 14:12:10
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании gals software

Postgresql

It-инфраструктура

Администрирование баз данных

Софт

Галс софтвэр

Gals software

Zabbix мониторинг

Мониторинг postgresql

Pg_stat_statements

Pg_stat_monitor

Lld

Низкоуровневое обнаружение zabbix

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru