Мониторинг PostgreSQL с использованием Zabbix

    image
    Доклад Дарьи Вилковой для Zabbix Meetup Online


    Я хочу познакомить вас со средством мониторинга PostgreSQL и операционной системы, которое разрабатывается нашей компанией с использованием Zabbix.


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


    Мы создали активный агент — Mamonsu, который обеспечивал более гибкий мониторинг, чем на тот момент позволяли стандартные средства, и обеспечивал сбор метрик и их отправку на Zabbix Server. В нашей компании Mamonsu используется при проведении аудита.


    Mamonsu


    Mamonsu — активный агент (Zabbix Trapper) для мониторинга PostgreSQL и операционной системы. Mamonsu (написанный на Python) позволяет настроить параметры мониторинга PostgreSQL и операционной системы за пять минут.


    Mamonsu обладает дополнительными инструментами:


    • mamonsu tune — команда, редактирующая параметры настройки в конфигурационном файле PostgreSQL под машину на который установлен агент Mamonsu.
    • mamonsu report — команда, создающая ответы об операционной системе и PostgreSQL.

    Mamonsu устанавливается на сервер СУБД, собирает информацию, компонует ее в JSON, который отправляет для визуализации на Zabbix Server, где должен быть шаблон для его метрик.


    Monitoring_PostgreSQL_Darja_Vilkova-05


    Схема работы Mamonsu


    Возможности Mamonsu


    • Эффективная работа с PostgreSQL. Постоянное соединение с PostgreSQL — главное преимущество Mamonsu. При этом максимальное количество соединений равно максимальному количеству баз данных, к которым он подключается.
    • Расширяемость. Mamonsu полностью «плагинный» агент, и, благодаря фиксированной структуре каждого плагина и относительной простоте Python, можно легко научиться писать новые или редактировать стандартные плагины, т. е. параметры сбора метрик.
    • Широкий охват метрик для мониторинга для PostgreSQL в том числе метрик специфических расширений.
    • Быстрый запуск, доступность «из коробки».
    • Выгрузка шаблонов и конфигурационных файлов, а также загрузка на Zabbix Server.
    • Кроссплатформенность, что важно для наших заказчиков, которые пользуются различными дистрибутивами Linux, в том числе отечественными.
    • BSD-clause license.

    На данный момент мы предлагаем множество плагинов и в каждой следующей версии стараемся добавить что-то новое.


    • 14 плагинов для PostgreSQL,
    • 8 плагинов для OS Linux,
    • 4 плагина для OS Windows.

    Mamonsu собирает более 110 метрик PostgreSQL и операционных систем:


    • 70 метрик PostgreSQL,
    • 40 метрик OS Linux,
    • 8 метрик OS Windows.

    Основные метрики включают доступность СУБД, количество соединений, размер базы данных, чекпойнты, скорость чтения/записи, блокировки, количество процессов автовакуум и скорость генерации WAL. Полный список доступных метрик, а также подробное описание всех инструментов доступны в репозитории на сайте GitHub.


    Monitoring_PostgreSQL_Darja_Vilkova-10


    Список доступных метрик на сайте GitHub


    Запуск Mamonsu за 5 минут


    Для настройки мониторинг PostgreSQL и операционной системы с помощью Mamonsu можно за 5 минут, выполнив 5 простых действий.


    1. Установка Mamonsu. Mamonsu можно собрать из исходников или воспользоваться доступными пакетами.

    $ git clone ... && cd mamonsu && python setup.py


    build && python setup.py install


    1. Настройка соединений. Необходимо прописать параметры соединения c PostgreSQL и Zabbix Server в файле agent.conf.

    /etc/mamonsu/agent.conf


    1. Экспорт шаблона в Zabbix Server.

    $ mamonsu zabbix template export


    /usr/share/mamonsu/example.xml


    1. Добавление узла сети в Zabbix Server. Экспортированный шаблон будет автоматически подключен к новому узлу сети на Zabbix Server.

    $ mamonsu zabbix host create mamonsu-demo


    1. Запуск.

    $ service mamonsu start


    Направления развития Mamonsu


    В рамках развития Mamonsu мы планируем дорабатывать метрики и создавать новые плагины, например плагин мониторинга размера отдельных таблиц. Мы также планируем улучшать и создавать дополнительные инструменты, а также расширять возможности автонастройки через команду mamonsu tune.


    Модуль мониторинга PostgreSQL в составе Zabbix Agent 2


    Для соединения с PostgreSQL используется быстрый и популярный драйвер pgx (PG driver and toolkit for Go).


    Пока мы используем два интерфейса: Exporter, вызывающий обработчик по ключу, и Configurator Zabbix Agent 2, который считывает и проверяет параметры соединения с сервером, заданные в конфигурационном файле.


    Мы постарались оптимизировать работу СУБД, группируя метрики и используя обработчик (handler) для метрик и групп метрик, а также используя группы метрик в JSON как зависимые переменные (dependency items), и низкоуровневое обнаружение (discovery rules).


    Основные возможности


    • сохранение постоянного соединения с PostgreSQL между проверками;
    • поддержка гибких интервалов опроса;
    • совместимость с версиями PostgreSQL, начиная с 10, и Zabbix Server, начиная с версии 4.4;
    • возможность подключения и мониторинга нескольких инстансов PostgreSQL одновременно благодаря тому, что Zabbix Agent 2 позволяет создавать несколько сессий.

    Уровни параметров подключения к PostgreSQL


    Всего доступны три уровня параметров подключения к PostgreSQL, т. е. задач и настроек:


    • Global,
    • Sessions,
    • Macros.

    1. Параметры Global задаются на уровне агента, параметры Session и Macros определяют параметры подключения базе.


    2. Параметры подключения к PostgreSQL — Sessions задаются в файле zabbix_agent2.conf.



    Monitoring_PostgreSQL_Darja_Vilkova-18


    Параметры подключения к PostgreSQL — Sessions


    • После ключевого слова Sessions указывается уникальное имя сессии, которое должно быть указано в ключе (шаблоне).
    • Параметры URI и UserName обязательны для каждой сессии.
    • Если имя базы не задано, используется общее по умолчанию имя базы для всех сессий для PostgreSQL, которое также задается в конфигурационном файле.

    1. Параметры подключения к PostgreSQL — Macros задаются в ключе метрики в шаблоне (аналогично способу, использованному в Zabbix Agent 1), т. е. создаются в шаблоне и далее указываются как параметры в ключе. При этом последовательность макросов фиксирована, т. е., например, URI всегда указывается на первом месте.

    Monitoring_PostgreSQL_Darja_Vilkova-19


    Параметры подключения к PostgreSQL — Macros


    Модуль мониторинга PostgreSQL включает уже более 95 метрик, которые позволяют охватить довольно широкий объем параметров PostgreSQL, включая:


    • количество соединений,
    • объем баз данных,
    • архивация wal-файлов,
    • контрольные точки,
    • количество «раздувшихся» таблиц,
    • статус репликации,
    • отставание реплики.

    Метрики PostgreSQL не информативны без параметров операционной системы. Но Zabbix Agent 2 уже умеет собирать параметры операционной системы, поэтому для получения полной картины просто подключаем к узлу сети необходимые шаблоны.


    Обработчик (handler)


    Обработчик (handler) — основная единица модуля, в которой выполняется сам запрос и которая позволяет получать метрики.


    Чтобы получить простую метрику:


    1. Создаем файл для получения новой метрики:

    zabbix/src/go/plugins/postgres/handler_uptime.go


    1. Подключаем пакет и указываем уникальный ключ (ключи) метрик:

    Monitoring_PostgreSQL_Darja_Vilkova-23


    1. Создаем обработчик (handler) с запросом, т. е. инициируем переменную, в которой будет результат:

    Monitoring_PostgreSQL_Darja_Vilkova-24


    1. Выполняем запрос:

    Monitoring_PostgreSQL_Darja_Vilkova-25


    Необходимо проверить запрос на предмет ошибок, после чего результат будет подхвачен процессом Zabbix Agent 2.


    1. Регистрируем ключ новой метрики:

    Monitoring_PostgreSQL_Darja_Vilkova-26


    После регистрации метрики можно пересобирать агент с новой метрикой.


    Модуль доступен, начиная с Zabbix 5.0 на сайте https://www.zabbix.com/download. В этой версии Zabbix параметры задаются отдельно через host и port. В версии Zabbix 5.0.2, которая скоро выйдет, параметры подключения будут скомпонованы в один URI.


    Спасибо за внимание!


    Полезные ссылки


    GitHub Mamonsu


    Документация по Mamonsu


    Zabbix Git

    Zabbix
    Компания

    Похожие публикации

    Комментарии 2

      +1
      Кстати, в zabbix-agent2 5ой версии модуль для постреса идет из коробки
        0
        Все это классно, вот только:

        Agent 2 does not support daemonization.


        Пруф: www.zabbix.com/documentation/current/manual/concepts/agent2

        И возникает вопрос: А как же его использовать то? На Windows его нельзя установить в качестве службы, на Linux в бэкграунде конечно можно запустить, но это корявое решение если сам агент не поддерживает нормальную демононизацию.

        И статья явно готовилась сильно раньше, 5.0.2 уже как месяц вышел, но в статье релиз только ожидается — хоть бы актуализировали на момент публикации.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое