Существует множество проприетарных сервисов мониторинга БД, но есть отличная альтернатива с открытым исходным кодом — Percona Monitoring and Management (PMM). Я подробно расскажу, как настроить мониторинг с его помощью.

У пакета Percona Monitoring and Management есть 3 основные фичи: мониторинг, алерты и query analytics.

Мониторинг

Сразу после настройки PMM можно использовать много дефолтных дашбордов (Интерфейс - Grafana). В этих стандартных дашбордах уже отображается информация:

  • О вашем сервере (на котором развёрнута бд)

    • CPU load

    • RAM usage

    • Network usage

    • Disk usage

    • Disk space forecast

    • Uptime

    • И т.д.

  • О вашей БД

    • Connections

    • Queries Per Second

    • Uptime

    • И т.д.

Эти дашборды уже достаточно информативны, но вы можете настроить их под себя.

Алерты

В PMM можно настроить уведомления, если что-то идёт не так. Например, если CPU load превышает 90% или прогноз времени до полного заполнения диска меньше недели.

Query analysis

Главная, на мой взгляд, функция PMM – это query analytics. PMM агрегирует запросы к БД и считает аналитику по ним. Так можно найти, какие запросы сильнее всего нагружают базу данных, оптимизировать их и сэкономить денег на инфраструктуре.

Как установить PMM – 5 шагов

PMM состоит из двух частей

  • Client (Agent)

  • Server

PMM Agent устанавливается на хост вашей БД. Он будет собирать телеметрию и отсылать на PMM Server.

Процесс настройки мониторинга БД с помощью PMM можно разделить на 5 этапов:

  1. Создать PMM Server

  2. Установить PMM Agent

  3. Подключить PMM Agent к PMM Server

  4. Подключить DB к PMM Agent

  5. Customise Dashboards and Alerts

1. Создаём PMM Server

В отличие от большинства cloud-based систем мониторинга, здесь об облаке (PMM Server) нужно позаботиться самому. Самый простой способ – это получить fully managed PMM Server на hosetedpmm.com.

Если вы хотите настроить PMM Server самостоятельно, вам потребуется сервер (VPS/VDS) соответствующий системным требованиям PMM. Он будет обрабатывать и хранить данные телеметрии, присланные агентами, поэтому нужен хост с 2 Гб RAM и диск из расчета 1 Гб на телеметрию с одной бд в неделю.

Когда вы подготовили хост, можно установить PMM Server. Для этого используйте easy-install script запустив команду:

wget -O https://www.percona.com/get/pmm | /bin/bash

Этот скрипт:

  • Установит Docker (если еще не установлен).

  • Остановит все запущенные PMM Server Docker контейнеры, если такие есть

  • Скачает и запустит Docker image PMM Server последней версии.

После установки PMM Server возможно потребуется настроить сеть. Если всё настроено корректно, вы сможете зайти в веб интерфейс PMM Server.

Используйте admin/admin чтобы войти. Вы попадёте на главный дашборд.

Как видите, тут уже отображается информация про хост, на котором развернут PMM Server и телеметрия его базы данных. Всё, PMM Server готов и работает.

2. Устанавливаем PMM Agent

PMM Agent нужно установить на хост с базой данных. Для этого потребуется ssh доступ и права администратора.

Есть несколько способов установить PMM Agent:

  1. Docker

  2. Package manager

  3. Binary package

Не все готовы устанавливать докер на машину с бд, а установку из Binary package сложно обновлять. Поэтому многие предпочитают вариант под номером 2 - установку из репозитория. Её и рассмотрим.

Для установки PMM агента нужно запустить несколько команд в терминале машины с бд. Они отличаются в зависимости от ОС:

  • Debian-based

    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    dpkg -i percona-release_latest.generic_all.deb
    apt update
    apt install -y pmm2-client
  • Red Hat-based

    yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
    yum install -y pmm2-client

В большинстве случаевв проблем на этом этапе не возникает. PMM Agent установлен. Теперь нужно подключить его к PMM серверу.

3. Подключаем PMM Agent к PMM Server

Для подключения агента к серверу используется команда с логином, паролем и ip вашего PMM Server.

pmm-admin config --server-insecure-tls --server-url=https://*username*:*password*@*X.X.X.X*:443

Флаг --server-insecure-tls можно убрать, если добавить SSL сертификаты в PMM Server. Это может быть не просто, но очень важно для безопасности. Если вы сделали сервер на hostedpmm.com, там этой проблемы нет - сертификаты уже внутри.

После подключения PMM Agent к PMM Server, вы уже сможете видеть метрики машины, на которой работает ваша бд.

Но в метриках самой БД мы пока видим N/A. Чтобы увидеть здесь телеметрию из базы данных, нужно подключить к ней PMM Agent.

4. Подключаем БД к PMM Agent

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

Например для MySQL с именем пользователя pmm и паролем pass

CREATE USER 'pmm'@'localhost' IDENTIFIED BY 'pass' WITH MAX_USER_CONNECTIONS 10;
GRANT SELECT, PROCESS, REPLICATION CLIENT, RELOAD, BACKUP_ADMIN ON *.* TO 'pmm'@'localhost';

После этого через UI PMM Server нужно добавить service MySQL, используя логин и пароль этого юзера.

После этого метрики вашей бд должны начать собираться. Базовая настройка завершена.

5. Настраиваем дашборды и алерты

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

Также можно добавить алерты на случай, если что-то пойдёт не так.

Всё готово! Open source мониторинг БД настроен. Это мощный бесплатный инструмент, с помощью которого можно улучшить доступность сервиса, оптимизировать приложения и сэкономить на инфраструктуре.

Если будете настраивать PMM для себя, попробуйте воспользоваться hostedpmm.com - это мой проект. Выглядит так:

Там 1 месяц бесплатно для всех - можно попробовать потыкать, понять подходит вам или нет. А если напишите мне (sergei.krupnik@hostedpmm.com), что вы с Хабра, я начислю вам ещё бонус в $200.

Спасибо, что дочитали. Успехов!

Комментарии (5)


  1. Veroncheg
    21.10.2022 15:05

    1. Создаём PMM Server

    кривая ссылка в разделе

    wget <https://repo.percona.com/apt/percona-release_latest.generic_all.deb>

    yum install -y <https://repo.percona.com/yum/percona-release-latest.noarch.rpm>

    Сами пробовали запускать?

    Дальше не читал.


    1. Krupnikas Автор
      21.10.2022 15:06
      +1

      Спасибо, что нашли опечатки. Поправил.


      1. Krupnikas Автор
        21.10.2022 15:09

        Это ссылки заэскейпились при копировании из черновика


    1. qant
      22.10.2022 13:10
      +2

      О боже! Копипаст не работает! Это же нужно удалить какие-то символы из строки ВРУЧНУЮ!


  1. a_nikitin
    23.10.2022 16:55

    Это, конечно, всё хорошо, но на самом сайте перконы есть вот такое замечание:
    https://docs.percona.com/percona-monitoring-and-management/setting-up/client/postgresql.html
    While we recommend use of the newer pg_stat_monitor extension, be aware it is currently in beta phase and unsupported.