Существует множество проприетарных сервисов мониторинга БД, но есть отличная альтернатива с открытым исходным кодом — 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 этапов:
Создать PMM Server
Установить PMM Agent
Подключить PMM Agent к PMM Server
Подключить DB к PMM Agent
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:
Docker
Package manager
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)
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.
Veroncheg
кривая ссылка в разделе
Сами пробовали запускать?
Дальше не читал.
Krupnikas Автор
Спасибо, что нашли опечатки. Поправил.
Krupnikas Автор
Это ссылки заэскейпились при копировании из черновика
qant
О боже! Копипаст не работает! Это же нужно удалить какие-то символы из строки ВРУЧНУЮ!