[Open source, Системное администрирование, PostgreSQL, IT-инфраструктура] Мониторинг 95+ метрик PostgreSQL с помощью плагина Zabbix Agent 2
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В прошлом году популярный сервис мониторинга Zabbix представил Agent 2, призванный сократить число TCP-подключений и обеспечить удобную расширяемость за счёт плагинов на Golang. Меня зовут Даша, и я один из разработчиков плагина мониторинга PostgreSQL для Zabbix Agent 2. В этой статье я расскажу об основных “фишках” использования Zabbix Agent 2 для мониторинга PostgreSQL, о принципе работы плагина, дам советы по его настройке, а также объясню на примере, как кастомизировать плагин.
Как появился плагин мониторинга PostgreSQL для Zabbix Agent 2?В 2019 году Zabbix анонсировал выпуск нового Zabbix Agent 2. Он написан с нуля на Golang. Для мониторинга каждого приложения требуется отдельный плагин. Мы в Postgres Professional решили, что это отличная возможность применить наш многолетний опыт использования Zabbix для мониторинга PostgeSQL, и написали модуль мониторинга для Agent 2. Как устроен мониторинг СУБД в Zabbix?Начнём с небольшого введения в схему работы мониторинга Zabbix для новичков.
Интересную нам сейчас структуру можно разбить на две составляющие:
- Zabbix Server, который хранит и собирает данные.
- Агенты, которые устанавливаются на наблюдаемых объектах и собирают данные.
Для мониторинга каждого приложения в Zabbix Server требуется шаблон - XML-файл. В нём указаны ключи метрик (уникальные ID) и параметры их обработки.Zabbix Agent 2 призван дать пользователю инструмент мониторинга “из коробки”, быстро и легко настраиваемый, а также с хорошей расширяемостью.Как же работает PostgreSQL плагин для Zabbix Agent 2?Есть основная функция, в которой по уникальному ключу вызываются обработчики для каждой метрики. Обработчик (handler) служит для сбора данных. Это файл, в котором указывается и выполняется SQL-запрос для получения одной или нескольких метрик. Результаты выполнения запроса записываются в переменную, которая относится к типу int, float или string. Если результат должен содержать значения сразу нескольких метрик, то он будет преобразован в JSON ещё на стадии получения запроса. Полученные результаты Zabbix Agent 2 периодически отдаёт Zabbix Server.Плагин и обработчики находятся вот в этой папке: /plugins/postgresКакими возможностями обладает модуль мониторинга PostgreSQL для Zabbix Agent 2?
- Поддержка постоянного подключения к PostgreSQL.
- Мониторинг нескольких экземпляров (instances) PostgreSQL одновременно.
- Опции контроля и проверки метрик в реальном времени через командную строку.
- Конфигурирование плагина через общий файл конфигурации агента.
- Сохранение состояния между проверками.
- Довольно простая кастомизация сбора существующих метрик.
- Возможность писать новые плагины под свои требования.
К плагину есть официальный шаблон, который можно скачать по ссылке.В нем есть базовые триггеры и комплексный экран, на котором отображается комбинация нескольких графиков. Всего плагин собирает более 95 метрик. Полный список всех метрик также можно найти по ссылке выше. В веб-интерфейсе Zabbix Server можно редактировать шаблон и его составляющие для своих нужд. Что именно можно настроить?
- Изменить интервал сбора метрики.
- Добавить триггер для метрики.
- Добавить макрос или отредактировать существующий.
Как установить и использовать PostgreSQL-плагин для Zabbix Agent 2?1. Создаем пользователя PostgreSQL для мониторинга:
CREATE USER 'zbx_monitor' IDENTIFIED BY '<password>';
GRANT EXECUTE ON FUNCTION pg_catalog.pg_ls_dir(text) TO zbx_monitor;
GRANT EXECUTE ON FUNCTION pg_catalog.pg_stat_file(text) TO zbx_monitor;
2. Редактируем pg_hba.conf, чтобы разрешить подключение от Zabbix Agent 2:# TYPE DATABASE USER ADDRESS METHOD
host all zbx_monitor 127.0.0.1 md5Больше информации о pg_hba.conf по ссылке.Теперь остаётся задать параметры подключения к PostgreSQL для Zabbix Agent 2. Это можно сделать двумя способами:
- использовать макросы для параметров подключения,
- создать сессию.
Первый способ немного проще. Его достаточно, если нужно настроить мониторинг одного экземпляра PostgreSQL: 1. В шаблоне редактируем макрос {$PG.URI} , в котором указывается путь к PostgreSQL в формате <protocol(host:port)>.2. Задаем макрос с именем пользователя и паролем ({$PG.USER} and {$PG.PASSWORD}). Так же можно указать макрос {$PG.DBNAME}. Этот параметр опционален для большинства метрик - если он не задан в ключе, то будет использовано имя базы, указанное в конфигурационном файле агента.В шаблоне эти макросы уже указаны в параметрах всех ключей. Обратите внимание, что порядок указания параметров в ключе фиксирован.
Второй способ позволяет задавать параметры подключения к нескольким экземплярам PostgreSQL:
- Задаём параметры подключения для сессии в конфигурационном файле zabbix_agent2.conf в секции плагина Postgres: Postgres.Sessions.<Session_name>.URI,Postgres.Sessions.<Session_name>.User,Postgres.Sessions.<Session_name>.Password. Здесь вместо <Session_name> нужно указать уникальное имя новой сессии.
- Создаём макрос с именем сессии в шаблоне {$PG.<Session_name>}.
- Указываем макрос как единственный параметр для метрик в шаблоне.
Рассмотрим, как использовать плагин для сбора дополнительных метрик на примере добавления метрики uptime. Для этого надо создать новый обработчик с запросом и добавить его ключ в основную функцию. 1. Создаем файл для получения новой метрики:zabbix/src/go/plugins/postgres/handler_uptime.goПодключаем пакет postgres и указываем ключ (ключи) метрик:
package postgres
const (
keyPostgresUptime = "pgsql.uptime"
)
2. Объявляем обработчик (handler) c запросом, а так же переменную uptime, куда будет записан результат:
func uptimeHandler(ctx context.Context, conn PostgresClient,
_ string, _ map[string]string, _ ...string) (interface{}, error)
{
var uptime float64
query := `SELECT date_part('epoch', now() - pg_postmaster_start_time());
3.Выполняем запрос, проверяем, возникла ли ошибка. Если все ОК, возвращаем переменную uptime с результатом.
row, err := conn.QueryRow(ctx, query)
if err != nil {
...
}
err = row.Scan(&uptime)
if err != nil {
...
}
return uptime, nil
4. Регистрируем ключ новой метрики:
var metrics = metric.MetricSet{
....,
keyPostgresUptime: metric.New("Returns uptime.",
[]*metric.Param{paramURI, paramUsername, paramPassword,paramDatabase}, false),
}
Собираем агент!Новый функционал В версии Zabbix 5.2 появилась возможность вычислять метрики, собирая результаты пользовательских запросо из отдельных SQL-файлов. При этом можно создавать даже динамические запросы. В этой версии также обновлена архитектура модуля и исправлены мелкие ошибки.Продемонстрируем, как добавлять кастомные метрики через SQL - файл на примере простого запроса с одним параметром:
- Создадим SQL-файл с запросом.
$touch custom1.sql
$echo “SELECT id FROM my_table WHERE id=$1;” > custom1.sql
Тут в $1 будет передан параметр при выполнении запроса.
- В zabbix_agent2.conf заполним параметр Plugins.Postgres.CustomQueriesPath, указав путь к директории с SQL-файлом. Plugins.Postgres.CustomQueriesPath=/path/to/the/file
- В шаблоне для ключа pgsql.query.custom укажем имя SQL-файла и добавим дополнительные параметры для запроса, т.е. тот, который заменит $1. Стоит отметить, что для названия SQL - файла и для параметров можно также создавать макросы в шаблоне.
Дополнительные материалыПрезентации Zabbix Online Meetup, который проходил 19 июняСтатья Вадима Ипатова - одного из разработчиков Zabbix Agent 2Шаблон для плагина мониторинга PostgreSQLZabbix Git для тех, кто хочет видеть больше реальных примеров и посмотреть на все SQL-запросы для получения метрик
Видео доклада на PGConf.Online 2021 "Обзор новой функциональности и настройка Zabbix Agent 2 для мониторинга PostgreSQL"Остались вопросы?Все вопросы можно задавать в комментариях.
===========
Источник:
habr.com
===========
Похожие новости:
- [Системное администрирование, Сетевые технологии, Сетевое оборудование] Настройка IGMP proxy на FortiWiFi 30E версия FortiOS 6.2.5
- [Системное администрирование, DevOps, Микросервисы, Kubernetes] Service Mesh Wars, прощаемся с Istio (перевод)
- [Open source, Программирование, Геоинформационные сервисы, Визуализация данных, Научно-популярное] Легенды и мифы геофизики
- [Системное администрирование, PostgreSQL, Администрирование баз данных] Что нового в плане мониторинга в PostgreSQL 14
- [Open source, Python, Визуализация данных] Как создавать интерактивные линейные графики на Pandas и Altair (перевод)
- [Настройка Linux, Системное администрирование, Nginx, *nix] Немного об использовании regex в map nginx
- [IT-инфраструктура, Учебный процесс в IT, Распределённые системы] Kafka, Lamoda и непреодолимое желание учиться
- [Информационная безопасность, Open source, GitHub, IT-компании] Microsoft представила SimuLand — тестовую лабораторию для моделирования кибератак
- [IT-инфраструктура, SaaS / S+S, Бизнес-модели, История IT, Периферия] Цифровая трансформация офисной печати от зарождения до современных технологий
- [Open source, Виртуализация, Карьера в IT-индустрии, Openshift] Quarkus и разработка еdge-систем IoT, шпаргалка по Kubernetes, а также электронная книга «Ansible for DevOps»
Теги для поиска: #_open_source, #_sistemnoe_administrirovanie (Системное администрирование), #_postgresql, #_itinfrastruktura (IT-инфраструктура), #_postgresql, #_zabbix, #_monitoring, #_opensource, #_blog_kompanii_postgres_professional (
Блог компании Postgres Professional
), #_open_source, #_sistemnoe_administrirovanie (
Системное администрирование
), #_postgresql, #_itinfrastruktura (
IT-инфраструктура
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 02:07
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В прошлом году популярный сервис мониторинга Zabbix представил Agent 2, призванный сократить число TCP-подключений и обеспечить удобную расширяемость за счёт плагинов на Golang. Меня зовут Даша, и я один из разработчиков плагина мониторинга PostgreSQL для Zabbix Agent 2. В этой статье я расскажу об основных “фишках” использования Zabbix Agent 2 для мониторинга PostgreSQL, о принципе работы плагина, дам советы по его настройке, а также объясню на примере, как кастомизировать плагин. Как появился плагин мониторинга PostgreSQL для Zabbix Agent 2?В 2019 году Zabbix анонсировал выпуск нового Zabbix Agent 2. Он написан с нуля на Golang. Для мониторинга каждого приложения требуется отдельный плагин. Мы в Postgres Professional решили, что это отличная возможность применить наш многолетний опыт использования Zabbix для мониторинга PostgeSQL, и написали модуль мониторинга для Agent 2. Как устроен мониторинг СУБД в Zabbix?Начнём с небольшого введения в схему работы мониторинга Zabbix для новичков. Интересную нам сейчас структуру можно разбить на две составляющие:
CREATE USER 'zbx_monitor' IDENTIFIED BY '<password>';
GRANT EXECUTE ON FUNCTION pg_catalog.pg_ls_dir(text) TO zbx_monitor; GRANT EXECUTE ON FUNCTION pg_catalog.pg_stat_file(text) TO zbx_monitor; host all zbx_monitor 127.0.0.1 md5Больше информации о pg_hba.conf по ссылке.Теперь остаётся задать параметры подключения к PostgreSQL для Zabbix Agent 2. Это можно сделать двумя способами:
Второй способ позволяет задавать параметры подключения к нескольким экземплярам PostgreSQL:
package postgres
const ( keyPostgresUptime = "pgsql.uptime" ) func uptimeHandler(ctx context.Context, conn PostgresClient,
_ string, _ map[string]string, _ ...string) (interface{}, error) { var uptime float64 query := `SELECT date_part('epoch', now() - pg_postmaster_start_time()); row, err := conn.QueryRow(ctx, query)
if err != nil { ... } err = row.Scan(&uptime) if err != nil { ... } return uptime, nil var metrics = metric.MetricSet{
...., keyPostgresUptime: metric.New("Returns uptime.", []*metric.Param{paramURI, paramUsername, paramPassword,paramDatabase}, false), }
Дополнительные материалыПрезентации Zabbix Online Meetup, который проходил 19 июняСтатья Вадима Ипатова - одного из разработчиков Zabbix Agent 2Шаблон для плагина мониторинга PostgreSQLZabbix Git для тех, кто хочет видеть больше реальных примеров и посмотреть на все SQL-запросы для получения метрик Видео доклада на PGConf.Online 2021 "Обзор новой функциональности и настройка Zabbix Agent 2 для мониторинга PostgreSQL"Остались вопросы?Все вопросы можно задавать в комментариях. =========== Источник: habr.com =========== Похожие новости:
Блог компании Postgres Professional ), #_open_source, #_sistemnoe_administrirovanie ( Системное администрирование ), #_postgresql, #_itinfrastruktura ( IT-инфраструктура ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 02:07
Часовой пояс: UTC + 5