Существует множество проприетарных сервисов мониторинга БД, но есть отличная альтернатива с открытым исходным кодом — 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)ServerPMM Agent устанавливается на хост вашей БД. Он будет собирать телеметрию и отсылать на PMM Server.Процесс настройки мониторинга БД с помощью PMM можно разделить на 5 этапов:Создать PMM ServerУстановить PMM AgentПодключить PMM Agent к PMM ServerПодключить DB к PMM AgentCustomise Dashboards and Alerts1. Создаём 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 AgentPMM Agent нужно установить на хост с базой данных. Для этого потребуется ssh доступ и права администратора.Есть несколько способов установить PMM Agent:DockerPackage managerBinary packageНе все готовы устанавливать докер на машину с бд, а установку из Binary package сложно обновлять. Поэтому многие предпочитают вариант под номером 2 - установку из репозитория. Её и рассмотрим.Для установки PMM агента нужно запустить несколько команд в терминале машины с бд. Они отличаются в зависимости от ОС.Debian-basedwget <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-clientRed Hat-basedyum 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 и паролем passCREATE 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), что вы с vc.ru, я начислю вам ещё бонус в $200.Спасибо, что дочитали. Успехов!