Настройка журналирования PostgreSQL
pgBadger может отобразить только те сведения, которые PostgreSQL записывает в журнал. Начните с префикса, пригодного для разбора, и продуманной политики журналирования операторов, а затем добавьте эксплуатационные события, которые требуется анализировать.
Минимальное журналирование запросов
Чтобы включить текст и длительность запросов, включите журналирование операторов по длительности:
Значение 0 записывает каждый завершённый оператор. На загруженном сервере выберите более высокий порог в миллисекундах, чтобы контролировать объём журнала. Прежде чем включать низкий порог в производственной среде, измерьте накладные расходы и рост хранилища.
Если нужны только длительность и число запросов, но не их текст, используйте:
Если нужны отчёты о самых медленных запросах и суммарном времени запросов, предпочтителен log_min_duration_statement.
Обязательные поля префикса
Пользовательский log_line_prefix должен включать оба следующих элемента:
- поле времени:
%t,%mили%n; - поле процесса или сеанса:
%pили%c.
Минимальный префикс stderr:
Более информативный префикс записывает пользователя, базу данных, приложение и клиента:
Эквивалентный префикс для назначения syslog не содержит поля времени и процесса, которые уже предоставляет syslog:
Также поддерживается другой порядок ключей:
Если pgBadger не распознаёт ваш префикс, передайте его точное значение через --prefix. Не упрощайте и не перепечатывайте его иначе, чем в postgresql.conf.
Рекомендуемые параметры событий
Включите те классы событий, которые должны появиться в отчёте:
Эти параметры могут значительно увеличить объём журнала. В частности, log_temp_files = 0 и log_autovacuum_min_duration = 0 записывают каждое подходящее событие; скорректируйте их в соответствии с рабочей нагрузкой и доступным объёмом хранения.
Серверные сообщения должны быть на английском языке
Синтаксический анализатор распознаёт сообщения сервера PostgreSQL на английском языке. Используйте один из вариантов:
или:
Локали наподобие fr_FR.UTF-8 не поддерживаются анализатором исходного проекта.
Не допускайте конфликтующих параметров операторов
Не включайте одновременно log_min_duration_statement, log_duration и log_statement = 'all'. Одно выполнение может попасть в журнал несколько раз, что завышает счётчики pgBadger и сильно увеличивает объём журнала.
| Цель | Рекомендуемый параметр |
|---|---|
| Текст запроса и время выполнения | log_min_duration_statement = 0 или выбранный порог |
| Только длительность и количество | log_min_duration_statement = -1, log_duration = on |
| Расширенный аудит операторов | Рассматривайте log_statement как отдельную политику журналирования; не сочетайте все три параметра для статистики pgBadger |
После перезагрузки конфигурации PostgreSQL изучите несколько реальных записей журнала, прежде чем запускать большой анализ. Убедитесь, что отметка времени, идентификатор процесса/сеанса, пользователь, база данных, приложение и клиент соответствуют выбранному формату.