Мониторинг и расширения

Тема дорожной карты · PostgreSQL

PostgreSQL поставляется с богатым набором встроенных представлений мониторинга и расширений, раскрывающих статистику активности базы данных в реальном времени и накопленную статистику, что обеспечивает проактивное администрирование и настройку производительности. Представление pg_stat_activity показывает выполняемые в данный момент запросы с их состоянием, событиями ожидания и длительностью, тогда как pg_stat_user_tables и pg_stat_user_indexes отслеживают использование таблиц и индексов во времени. Расширение pg_stat_statements, загружаемое через shared_preload_libraries, агрегирует статистику выполнения для каждого отдельного шаблона запроса и незаменимо для выявления медленных запросов и оптимизации рабочих нагрузок PostgreSQL. Внешние инструменты мониторинга — pgBadger, Prometheus с postgres_exporter и дашборды Grafana — дополняют встроенные представления, предоставляя возможности оповещения, анализа тенденций и исторического анализа. Сочетание внутренней статистики PostgreSQL с внешними инструментами мониторинга даёт администраторам баз данных полное наблюдение за задержкой репликации, конкуренцией за блокировки, активностью autovacuum и насыщением пула соединений.

Как это работает

Мониторинг и расширения строится на pg_stat_statements (топ-запросы по total/avg, calls), pg_stat_user_tables (sequential vs index scans, dead tuples), pg_stat_activity (текущие соединения, запросы, lock waits), pg_stat_replication (lag реплик). Внешние: prometheus-postgres-exporter, pganalyze (коммерческий), pgwatch2. Расширения: pg_stat_kcache (per-query I/O), pg_buffercache (содержимое кеша), auto_explain (логирование плана медленных запросов).

Когда применять

Включите pg_stat_statements + auto_explain с первого дня — стоят почти ничего, находят медленные запросы, о которых вы не знали. Добавьте prometheus-postgres-exporter и дашборды: connections, lock waits, replication lag, cache hit ratio, dead tuples, возраст транзакций. Alerts на горячие условия (lock wait > 30s, replication lag > 60s, cache hit < 95%) — пока юзер пожалуется, данные уже были.

Типичные ошибки

Ловушки Мониторинг и расширения: pg_stat_statements не загружен (нельзя ответить "что медленно?" без него); высокий cache-hit интерпретируется как "всё ок" (может быть 99%, пока один запрос трэшит кеш — смотрите ещё I/O); игнор idle in transaction соединений (тихий производитель bloat); нет алертов на тренд использования диска (узнаёте о disk-full в 3:00). Мониторьте тренды, не только снимки.

Связанные понятия

Полезные ресурсы