pgBadger

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

pgBadger — быстрый анализатор логов PostgreSQL с открытым исходным кодом, написанный на Perl: он разбирает файлы логов PostgreSQL и генерирует подробные HTML-отчёты, охватывающие медленные запросы, ожидания блокировок, статистику соединений, частоту ошибок и общую активность базы данных. pgBadger работает с выводом встроенной системы журналирования PostgreSQL, поэтому настройка log_min_duration_statement в postgresql.conf для захвата медленных запросов является обязательным условием для получения содержательного анализа производительности. Инструмент поддерживает несколько форматов логов: stderr, csvlog и syslog, а также умеет инкрементально обрабатывать большие файлы логов, избегая повторной обработки исторических данных. Отчёты pgBadger включают нормализованную статистику запросов, аналогичную pg_stat_statements, что делает их бесценными для команд администраторов баз данных, которым необходимо выявлять наиболее затратные SQL-шаблоны без установки дополнительных расширений PostgreSQL. Регулярный анализ с помощью pgBadger в сочетании с проактивным мониторингом помогает администраторам PostgreSQL обнаруживать регрессии, оптимизировать индексы и поддерживать производительность приложений.

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

pgBadger строится на 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%) — пока юзер пожалуется, данные уже были.

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

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

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

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