Если вы инженер в крупной компании, а особенно если ваша организация поставляет свои услуги в виде SaaS-решений, то вам так или иначе придется решать задачу мониторинга работы всех ваших баз PostgreSQL. На них часто бывает завязан функционал, важный для компании с точки зрения финансовых рисков, поэтому крайне желательно организовать не только мониторинг, но и получение уведомлений, когда что-то идет не по плану (или пойдет в ближайшем будущем). Рассмотрим несколько способов, как это можно сделать:
Самостоятельно, с использованием уже привычного стека Prometheus + Grafana (на котором можно будет строить мониторинг также и любых других ваших сервисов);
Подключить сторонние open-source специализированные решения для мониторинга PostgreSQL;
Использовать специализированные платные решения.
По каждому варианту поймем все плюсы и минусы, чтобы вы cмогли более уверенно выбрать свой путь.
«Все сам» на Prometheus + Grafana
На связке Prometheus и Grafana строят свои системы мониторинга большинство компаний. В Prometheus есть готовые экспортеры для разных систем (это основное преимущество), и систему можно быстро развивать и настраивать под практически любые нужды. У вас не будет зоопарка разных инструментов, все вполне последовательно и единообразно, и научившись настраивать описанные ниже конфигурации, вы сможете собирать мониторинг абсолютно любых систем и сервисов в своей организации.

Чтобы это настроить, нужно пройти несколько шагов:
1. Установка и настройка postgresql_exporter на сервере PostgreSQL
https://github.com/prometheus-community/postgres_exporter/
Это агент, который будет собирать метрики PostgreSQL и отдавать их в Prometheus с локального endpoint (Prometheus опрашивает этот адрес каждые n секунд и складывает в свою time series БД).
Порядок работы postgres_exporter (равно как и любых других экспортеров для Grafana):
Подключение к PG: postgres_exporter подключается к PostgreSQL через стандартное подключение (обычно TCP-соединение через порт 5432) и гоняет к нему стандантные SQL запросы за метриками. По правам он использует специально созданного pg-пользователя с правами на чтение информации о состоянии сервера (например, членство в роли pg_monitor);
Сбор метрик: postgres_exporter выполняет SQL-запросы к системным представлениям (например, pg_stat_database, pg_stat_activity, pg_stat_replication, pg_stat_bgwriter, и т.д.).
Собираемые метрики конвертируются в формат Prometheus. Здесь важно иметь в виду, что если в PostgreSQL не устанавливать ряд дополнительных расширений, то набор метрик будет весьма скудным. Для сбора расширенной информации по метрикам, например по раздуванию таблиц, работе индексов и др. надо будет добавлять расширения и дополнительно конфигурировать postgres_exporter. Из расширений, в частности, полезно будет поставить следующие:
pg_stat_statements - стандартное расширение для анализа производительности запросов и статистики;
pg_buffercache для анализа буферов PostgreSQL.
Установка дополнительных расширений может "отъедать" ресурсы самого PostgreSQL, за этим важно следить. К тому же, простая установка этих расширений не заставит postgres_exporter собирать все необходимое, в его конфигурации надо будет добавлять необходимые запросы, и это займет у вас время.
Экспорт метрик
Сервис postgres_exporter предоставляет HTTP-endpoint (/metrics), с которого Prometheus регулярно собирает метрики (scrape - т.н. скраппинг через каждые n секунд).
Похожим образом работают все другие виды экспортеров для prometheus. У него есть масса различных экспортеров для разных систем, в частности mysql_exporter, mongodb_exporter, redis_exporter и др.
Для сбора метрик самого хоста вам придется дополнительно установить и настроить node_exporter, который работает схожим образом
После установки postgres_exporter нужно настроить пользователя, под которым будет происходить сбор метрик мониторинга:
CREATE USER postgres_exporter WITH PASSWORD '****';
ALTER USER postgres_exporter SET SEARCH_PATH TO postgres_exporter,pg_catalog;
-- Права доступа для пользователя мониторинга:
GRANT CONNECT ON DATABASE <ваша бд> TO postgres_exporter;
GRANT pg_monitor TO postgres_exporter;
Далее необходимо настроить запуск postgres_exporter в виде сервиса.
2. Настройка запуска postgres_exporter в виде сервиса (systemd)
Создаем файл /etc/systemd/system/postgres_exporter.service:
[Unit]
Description=Prometheus PostgreSQL Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=postgres
Group=postgres
Type=simple
ExecStart=/usr/local/bin/postgres_exporter \
--web.listen-address=0.0.0.0:9187 \
--web.telemetry-path=/metrics \
--log.level=info \
--extend.query-path=/etc/postgres_exporter/queries.yaml \
DATA_SOURCE_NAME="postgresql://postgres_exporter:exporter_password@localhost:5432/postgres?sslmode=disable"
Restart=always
[Install]
WantedBy=multi-user.target
Запускаем и добавляем в автозагрузку:
systemctl daemon-reload
systemctl start postgres_exporter
systemctl enable postgres_exporter
Проверяем доступность метрик по адресу http://<IP_postgres_exporter>:9187/metrics
3. Установка и настройка Prometheus
Далее нам нужно установить Prometheus и добавить наш endpoint exporter'а в его конфигурацию /etc/prometheus/prometheus.yml
global:
scrape_interval: 20s
scrape_configs:
- job_name: 'postgres'
static_configs:
- targets: ['IP_postgres_exporter:9187']
Теперь запускаем Prometheus и добавляем его в автозагрузку:
systemctl restart prometheus
systemctl enable prometheus
Чтобы проверить, что метрики собираются, нужно зайти по адресу http://<IP_prometheus>:9090
4. Установка Grafana и подключение Prometheus как источника данных
На следующем этапе требуется установить Grafana и подключить наш Prometheus как источник данных. Для этого заходим в Grafana: http://<IP\_grafana>:3000, открываем раздел Configuration → Data sources → Add data source → Prometheus, и указываем URL нашего Prometheus — http://<IP_prometheus>:9090
5. Добавление в Grafana готовых дашбордов PostgreSQL
Есть готовые проверенные дашборды, лучше всего будет не изобретать велосипед и воспользоваться ими:
Postgres Overview https://grafana.com/grafana/dashboards/455-postgres-overview/

PostgreSQL Database https://grafana.com/grafana/dashboards/9628-postgresql-database/

Выбираем понравившийся и далее в Grafana выбираем: Dashboards → Import → вставь ID (9628 или 455) → выбери источник Prometheus.
К плюсам такого решения можно отнести:
Универсальность архитектуры мониторинга для любых ваших систем. Можно подключаться и мониторить практически все ваши системы в единой архитектуре;
Можно добавлять новые готовые дашборды или создавать свои;
Все бесплатно;
Де-факто промышленный стандарт.
Среди минусов:
Сложность настройки;
Отсутствует предиктивная аналитика: вы можете оценивать состояние системы только по состоянию "на сейчас";
Нет никаких средств управления, даже минимальных;
Нет встроенной аналитики по "тяжелым" запросам и нет профилировщика таких запросов.
То есть данное решение подходит только для базового мониторинга или для DBA, которые отлично знают, как и что следует добавить в стандартные метрики, чтобы собирать то, что нужно.
Еще нужно определить и настроить необходимые для вас триггеры и оповещения (alerting). Сделать это можно в Grafana ("Alert" → "Create alert rule"), указав запрос метрики, например:
avg(pg_stat_database_blks_hit / (pg_stat_database_blks_hit + pg_stat_database_blks_read))
Далее потребуется задать пороговое значение, длительность выдерживания условия, список получателей по email, Slack и т.д.
Также alerting можно настраивать и в Prometheus, однако визуально там сделать это не получится, придется прописывать все алерты в yaml-файлике и подключать ссылку на него в prometheus.yml. В общем, чтобы настроить все "по красоте", понадобится потратить довольно много времени и сил.
Готовые решения open-source
Кто не готов разбираться, настраивать все самостоятельно, и получить на выходе достаточно скудный функционал, могут попробовать open-source решения, разработанные именно для мониторинга PostgreSQL. Рассмотрим два самых популярных из них.
Percona Monitoring and Management (PMM)
https://www.percona.com/software/database-tools/percona-monitoring-and-management
Довольно продвинутое решение для мониторинга PostgreSQL (а еще MySQL и MongoDB) с базовыми возможностями аналитики запросов, готовыми дашбордами, рекомендациями и аннотациями. Подходит для production-сред с потребностью в централизованном мониторинге и диагностике.

С точки зрения архитектуры здесь используется клиент‑серверная модель:
PMM Client (устанавливается на каждом сервере с базой данных), включает pmm-agent (управляет процессами), экспортеры (например те самые postgres_exporter и node_exporter) для сбора метрик и vmagent для отправки данных;
PMM Server (центральный сервер мониторинга) хранит метрики в VictoriaMetrics, аналитические данные запросов — в ClickHouse, визуализация и дашборды делаются через Grafana с разработанными Percona шаблонами для нее (да-да, они как веб-интерфейс используют ту же Grafana). PMM Server включает базовые возможности аналитики тяжелых запросов (т.н. Query Analytics) и Percona Advisors (рекомендации по производительности и безопасности).

Какие возможности здесь предлагаются:
Шаблонные дашборды Grafana для PostgreSQL |
Включают все основные метрики: CPU, память, I/O, соединения, tuples, индексы, сетевой трафик, процессы и прочее (подробнее) |
Анализ SQL-запросов |
Можно анализировать медленные запросы, ресурсоёмкие, с деталями EXPLAIN и историей выполнения (подробнее) |
Аннотации (Annotations) |
Удобная возможность вручную отмечать события (деплой, сбой и другие) прямо на графиках для анализа причин возникновения проблем (подробнее) |
Percona Advisors |
Автоматический анализ конфигураций и рекомендации по безопасности и производительности (подробнее) |
Alerting и управление |
Настройка алертов, возможности создания бэкапов и восстановления (подробнее) |
Что имеем здесь с точки зрения плюсов:
готовые расширенные дашборды для PostgreSQL "из коробки";
Query Analytics и Advisors (то, чего нет в типовой связке Grafana + Prometheus);
масштабируемая архитектура;
гибкость установки через Docker, Helm и пр.
Среди минусов:
Больше компонентов, т.е. в целом сложнее мейнтейнить;
Менее универсально — только для трех разновидностей СУБД;
Сложнее будет "докрутить" своими метриками по сравнению со связкой Prometheus + Grafana.
pgAdmin 4
Это не совсем система мониторинга и анализа, скорее, веб-GUI для администрирования PostgreSQL (создание объектов, миграции, бэкапы, Query Tool), в котором есть базовые дашборды по состоянию сервера. Он подходит как удобная админка и точечный мониторинг «здесь-и-сейчас», но не является полноценной системой мониторинга/алертинга.
Архитектура pgAdmin4 — Python (Flask) + psycopg. Работает инструмент в двух режимах: desktop-приложение и сервер (веб-приложение). Данные для виджетов берутся "на лету" из стандартных pg_stat_* представлений и системных функций PostgreSQL. Метрики не накапливает, только опрашивает и показывает по запросу (on demand).

Возможности:
Дашборды |
«Живые» графики: CPU/IO wait (условная оценка по состоянию PostgreSQL, а не реальные хостовые, поскольку агентов нет), активные/idle сессии, число блокировок, tuples in/out, чекпоинты, WAL-активность. Данные берутся из |
Activity / Locks / Sessions |
Просмотр текущих запросов, планов, блокировок, ожиданий, отмена/terminate процессов |
Query Tool |
SQL редактор, EXPLAIN/EXPLAIN ANALYZE, автоформатирование, история запросов |
Maintenance |
VACUUM/REINDEX/ANALYZE/CLUSTER, бэкапы/восстановление (обёртки над |
Управление СУБД |
Роли/права, таблицы, индексы, партиции, расширения (в т.ч. |
Аутентификация/Роли в UI |
Учетки самого pgAdmin, группы, хранение подключений, поддержка SSO (LDAP/OAuth) |
Плюсы pgAdmin 4:
Работа без агентов: подключается напрямую к PostgreSQL; достаточно сетевого доступа и ролей;
Продвинутые админ-функции: Query Tool, EXPLAIN, бэкапы, управление объектами и ролями;
Простая установка: пакеты для Win/macOS/Linux, Docker-образ, Helm
Работает как десктоп и как веб-приложение.
Минусы:
Нет никаких хостовых метрик, т.е. аналитика не полная;
Это не система мониторинга — нет долговременного хранения метрик/серий, показывается только текущее/недавнее состояние без ретроспективной аналитики;
Нет алертинга, «предиктивной» аналитики, советников и готовых SLO/alerts;
Ограниченные дашборды по сравнению с PMM/Grafana; нельзя "докрутить" экспортеры/свои метрики, как в Prometheus.
В целом pgAdmin подходит для малых/средних инсталляций, где нет требований к ретроспективному мониторингу и алертингу, или же можно использовать его как дополнение к PMM/Prometheus-стеку, если вы настроены на "зоопарк".
Платные коммерческие решения
pganalyze
Позволяет проводить достаточно глубокую диагностику и оптимизацию подключенных СУБД. Основная цель — не просто показывать метрики, а автоматически собирать статистику и логи, находить проблемные запросы, давать рекомендации по индексам и обслуживанию (VACUUM/ANALYZE). Есть два варианта поставки:
SaaS (облачный сервис, в который отправляются данные);
Enterprise Server (self-hosted) — чтобы "поднять" у себя.
Для сбора метрик используется свой open-source агент (устанавливается рядом с базой и пересылает статистику в pganalyze).

Архитектура pganalyze:
Collector (open-source агент) — устанавливается на каждом хосте с PostgreSQL и собирает данные из системных views (pg_stat_statements, pg_stat_activity, pg_stat_bgwriter и др.), логов PostgreSQL (парсинг slow queries, ошибок, deadlocks) и настроек конфигурации, затем чере TLS передаёт всё это в сервис pganalyze;
pganalyze Backend (SaaS или self-hosted) — хранит метрики и логи, анализирует запросы, строит EXPLAIN-планы, выявляет узкие места, генерирует рекомендации: каких индексов не хватает, где нужен VACUUM, где проблема в конфигурации; поддерживает OpenTelemetry для интеграции с APM/Observability-системами;
Web UI (Dashboard) — доступ через браузер. Есть готовые панели: метрики нагрузки (CPU/IO/locks/sessions), разбивка по запросам и их планам, Index Advisor, Vacuum Advisor, Log Insights (ошибки, deadlocks, медленные запросы). Можно настраивать алерты, например, в Slack.

Возможности:
Дашборды |
Ряд стандартных графиков |
Профилирование производительности |
История выполнения запросов, EXPLAIN-планы, выявление «тяжёлых» и часто вызываемых SQL-запросов |
Аналитика индексов |
Автоматические рекомендации по созданию индексов, включая оценку выигрыша в производительности |
VACUUM/ANALYZE |
Советует, когда таблицы раздуваются и нужен VACUUM, либо когда неправильно настроены автовакуум-параметры |
Анализ по логам |
Парсинг логов PostgreSQL: ошибки, deadlocks, statement timeouts, медленные запросы |
Проверка конфигурации |
Автоматическая проверка конфигурации PostgreSQL и рекомендации по оптимизации настроек |
Уведомления и интеграции |
Уведомления в мессенджеры; интеграция с OpenTelemetry для других систем мониторинга |
Что у нас здесь по плюсам:
Хороший фокус на оптимизацию производительности: автоматические рекомендации по индексам, рекомендации по VACUUM, разбор запросов и логов;
Collector — open source, легко внедрить и проверить;
Поддержка как SaaS, так и self-hosted (кому-то может быть удобно в SaaS);
Богатая встроенная аналитика, которой нет у Prometheus + Grafana.
Минусы:
Ориентирован только на PostgreSQL (в отличие от Percona PMM, который покрывает ещё MySQL и MongoDB);
Нет такого широкого комьюнити, как у Grafana/Prometheus;
Проблемы с приобретением и поддержкой продукта в РФ.
В целом — достаточно продвинутое и богатое решение с массой функционала, которого нет у open-source вариантов.
Платформа Tantor
https://tantorlabs.ru/products/platform
Платформа для мониторинга и аналитики БД на основе PostgreSQL корпоративного уровня. Здесь изначально задана цель не просто отображать метрики, а комплексно управлять всем парком PostgreSQL, собирать и хранить метрики БД и хостов, анализировать запросы и конфигурацию, автоматизировать обслуживание, выдавать рекомендации и централизовать оповещения. Поддерживает мультитенантность (тенанты/воркспейсы), роли и гибкое разграничение доступа. Модель поставки: self-hosted (on-prem), планируется SaaS. Может быть развернута в отказоустойчивом и масштабируемом режиме.

Архитектура платформы Tantor:
Агенты (на серверах с PostgreSQL). Легковесные go-процессы, которые собирают метрики PostgreSQL из pg_stat_*, pg_stat_statements, событий/логов, сбор pg_store_plans и т.д., снимают хостовые метрики (CPU, RAM, диски, сеть), по командам выполняют операции обслуживания (VACUUM/ANALYZE, скрипты), применяют конфигурации и публикуют изменения метрик в шину сообщений NATS;
Шина сообщений (NATS). Асинхронный обмен данными: topics/streams: metrics (телеметрия), commands (управляющие задания), events (события), развязка источников/потребителей, буферизация и горизонтальное масштабирование;
Keeper (ingest/очереди метрик). Принимает и нормализует потоки метрик из NATS, агрегирует и записывает их в хранилище платформы;
Backend (REST/WebSocket API). Бизнес-логика: каталог инстансов, дашборды, политика доступа, алерты, задания, интеграции. Отдаёт данные UI и управляет агентами (через NATS);
pg_configurator (advice engine) — сервис рекомендаций по параметрам PostgreSQL, профилям нагрузки, VACUUM/AUTOVACUUM, настройкам памяти и I/O. Возвращает рекомендации и готовые патчи конфигурации;
OperDB (PostgreSQL, центральное хранилище). Хранит метрики, события, конфигурации, модели воркспейсов/ролей, историю рекомендаций и выполненных задач. Доступ — через PgBouncer;
Web UI (SPA) — панели мониторинга, профили запросов, журнал событий, конструктор алертов, каталог БД, работа с воркспейсами/пользователями и пр.
Интеграции. Мессенджеры (Telegram, Mattermost, e-mail): доставка алертов/уведомлений; Triafly BI: экспорт исторических данных мониторинга для долговременной аналитики и построения произвольной отчетности; SIEM: отправка событий/инцидентов по Syslog (внешние SOC/SIEM).

Возможности:
Дашборды и метрики |
Готовые панели и масса графиков по PostgreSQL и хосту: соединения, транзакции, hit-ratio, WAL/репликация, чекпоинты, блокировки; CPU/RAM/IO/FS/сеть. Агрегации и фильтры по воркспейсам/инстансам |
Профилирование запросов |
Вся история «тяжёлых» запросов, планы |
Рекомендации (pg_configurator) |
Советы по параметрам Postgres (shared_buffers/work_mem/автовакуум/IO), подсказки по VACUUM/ANALYZE и обслуживанию |
Управление конфигурацией |
Генерация патчей конфигурации, откат/применение через агентов, аудит изменений |
Операции обслуживания |
Удалённый запуск VACUUM/REINDEX/ANALYZE/скриптов, планировщик задач |
Мультитенантность |
Тенанты и воркспейсы: логическое разделение всех баз и прав доступа; удобное делегирование ответственности командам |
Роли и аудит |
Роли (viewer/админ воркспейса/админ тинанта/system-admin), аудит действий и изменений по каждому |
Алерты и политики |
Пороги/условия, подавление (silence), маршрутизация получателей по важности/тенанту, тестовые уведомления |
Интеграции |
Мессенджеры (Telegram/e-mail), Triafly BI (экспорт для расширенной аналитики), SIEM (syslog) |
API/автоматизация |
Полный REST API (Swagger/OpenAPI) для интеграций, инфраструктурного кода и self-service сценариев |
HA |
Поддержка кластерных развертываний всех компонентов системы |
Кластеры |
Управление PostgreSQL-кластерами (Patroni), мониторинг репликации и failover-событий |
Безопасность/Compliance |
Изоляция доступов, встроенная возможность анонимизации данных (перед выгрузками), журнал событий |
Бекапирование |
Интеграция с системами бекапирования Backman и RuBackup |
Плюсы:
Есть темная тема ?, как в Grafana;
Глубокая специализация именно под PostgreSQL: рекомендации по конфигурации, анализ планов, операции обслуживания и управление кластерами «из коробки»;
Единый стек: хранение, бизнес-логика и UI интегрированы; нет зависимости от внешних TSDB/Grafana/ClickHouse;
Полные метрики: БД и ОС через агентов; асинхронная шина NATS дает масштабируемость и устойчивость к сбоям;
Мультитенантность и RBAC: удобное разделение инфраструктуры по командам/проектам с прозрачным аудитом;
Интеграции: мессенджеры, Triafly BI (для долгой истории/отчетности), SIEM (syslog) — без «самоделок»;
Разработчик в РФ, соответственно, поддержка для корпоративных клиентов;
Встроенный продвинутый анализатор планов запросов Explain от Tensor https://explain.tensor.ru/ с подсказками, что исправлять в "проблемных" запросах или индексах.

Минусы:
Только PostgreSQL, но зато любые форки;
Требует агентов и несколько сервисов: установка/операционка существенно сложнее, чем у простых дашбордов Grafana;
Кастом-дашбордов нет: ориентирована на встроенные панели;
Гибкость ниже, чем у чистого Grafana-стека (зато меньше ручной настройки), но реализация кастомных дашбордов есть в планах.


В целом — это платформа уровня enterprise для эксплуатации PostgreSQL: централизует мониторинг, аналитику запросов и управление, снижает TTR за счёт рекомендаций с предиктивной аналитикой и автоматизации, и хорошо вписывается в корпоративный ландшафт через интеграции и роли. Пожалуй, наиболее продвинутое по функционалу решение среди всех.
Комментарии (6)
Stillgray
02.09.2025 06:03Странно, что в статье не упоминается PosgresPro Enterprize Manager, как одно из решений доступных на российском рынке. Которое к тому же бесплатно, для владельцев лицензии БД PostgresPro.
Tantorlabs Автор
02.09.2025 06:03Мы описали решения, которые используют российские компании, и которые мы можем подробно прокомментировать по опыту. Конечно, рынок шире, и в будущем можно будет охватить и другие продукты.
Stillgray
02.09.2025 06:03Могу, конечно ошибиться, но PPEM имеет большее количество установок в России, нежели Платформа, просто за счёт большего распространения PostgresPro.
Вот как раз тут то и интересно сравнить два российских конкурирующих продукта со сходным функционалом и областью применения.
pg_vadim
02.09.2025 06:03Это очень субъективно, на мой взгляд, оценивать установку СУБД и GUI. Платформа гораздо более зрелый продукт и на рынке(в тот числе международном) с 2020 года, тогда как PPEM с конца 2023 года.
nikulin_krd
А Zabbix чем плох? На мой вкус, Zabbix является чуть ли не одним из лучших мониторинговых решений
Tantorlabs Автор
Zabbix — хорошая штука, но наши клиенты делились опытом проблем с ним на больших оборотах. Он часто упирался в свою БД, и поддержка тысяч инстансов требовала много ручной работы. Связка Grafana + Prometheus показала себя более надежной и удобной в масштабировании. Похоже, в свежих версиях Zabbix улучшили HA, но еще совсем недавно этих улучшений не хватало.