Это многостраничная версия текущего раздела для печати. .
Документация pgBadger 13.2
- 1: Загрузка и установка
- 2: Справочник командной строки
- 3: Настройка журналирования PostgreSQL
- 4: Параллельная обработка
- 5: Инкрементальные отчёты
- 6: Форматы вывода
- 7: Примеры отчётов
- 8: История выпусков
- 9: Поддержка и участие в разработке
- 10: Лицензия и благодарности

pgBadger — быстрый автономный анализатор журналов PostgreSQL, написанный на Perl. Он читает журналы PostgreSQL или PgBouncer и формирует подробные результаты в HTML, текстовом, двоичном, JSON-формате либо в виде необработанного CSV. HTML-отчёты автономны, интерактивны, поддерживают масштабирование, и для их просмотра нужен только веб-браузер.
Зачем нужен pgBadger
pgBadger рассчитан на большие журналы и повседневную эксплуатацию:
- одна программа на Perl, не требующая обязательных модулей за пределами базовой поставки Perl;
- автоматическое определение форматов ввода
stderr,syslog,csvlog,jsonlog, RDS, Cloud SQL, logplex, Redshift и PgBouncer; - непосредственное чтение локальных файлов, стандартного ввода, удалённых файлов по SSH, а также URL с HTTP, FTP или SFTP;
- поддержка сжатых входных данных gzip, bzip2, lz4, xz, zip и zstd;
- параллельный разбор одного большого файла или множества небольших файлов;
- ежедневные, еженедельные и создаваемые по запросу ежемесячные инкрементальные отчёты;
- фильтрация по времени, базе данных, пользователю, клиенту, приложению, процессу, сеансу и шаблону запроса.
Что содержат отчёты
Набор отчётов PostgreSQL охватывает:
- общую активность и статистику запросов;
- медленные, частые, наиболее затратные по времени, ожидающие и отменённые запросы;
- временные файлы, контрольные точки, блокировки, сеансы и соединения;
- активность autovacuum и autoanalyze по таблицам;
- ошибки и события по уровню важности и классу;
- распределения по базе данных, пользователю, клиенту, приложению и типу оператора.
Для входных данных PgBouncer дополнительно отображаются пропускная способность, средняя длительность запросов, число одновременных сеансов, распределения соединений и сеансов, использование резервного пула, а также отчёты о частых ошибках и событиях.
Структура документации
Читайте руководство в следующем порядке или сразу переходите к нужной задаче через боковую панель:
- Загрузите и установите pgBadger и его необязательные модули.
- Ознакомьтесь с полным справочником командной строки .
- Настройте журналирование PostgreSQL с префиксом, пригодным для разбора.
- Выберите подходящий режим параллельной обработки .
- Безопасно создавайте инкрементальные отчёты .
- Выберите формат вывода и изучите локальные примеры .
- Следите за историей выпусков , обращайтесь за поддержкой и изучите лицензию .
Ссылки на исходный проект
1 - Загрузка и установка
Выбор канала распространения
| Канал | Для чего использовать | Где находится |
|---|---|---|
| Официальный выпуск | Архивы исходного кода и примечания к выпуску | Выпуски GitHub |
| Пакет RPM | Дистрибутивы Linux на базе RPM | Репозиторий PostgreSQL Yum |
| Пакет Debian/Ubuntu | Дистрибутивы Linux на базе APT | Репозиторий PostgreSQL Apt |
| Разрабатываемый исходный код | Текущий код, ещё не вошедший в выпуск | darold/pgbadger |
Снимок документации на этом сайте основан на дереве исходного кода версии 13.2. Перед загрузкой всегда проверяйте страницу выпусков: локальный снимок намеренно зафиксирован, тогда как исходный проект продолжает выпускать новые версии.
Требования
Для создания HTML-отчётов нужны только:
- современная поставка Perl;
- веб-браузер для отображения встроенных диаграмм JavaScript.
Для необязательных возможностей требуются следующие зависимости:
| Возможность | Зависимость |
|---|---|
| Разбор CSV-журналов PostgreSQL | Text::CSV_XS |
| Запись вывода JSON | JSON::XS |
Чтение входных файлов .gz, .bz2, .lz4, .xz, .zip или .zst | соответствующая утилита zcat, bzcat, lz4cat, xz, unzip или zstdcat |
Установите поддержку JSON в Debian или Ubuntu:
В системе на базе RPM:
Параметр --zcat позволяет переопределить путь к программе распаковки. Если указать одну пользовательскую команду, смешивать разные форматы сжатия в одном запуске будет нельзя.
Установка из официального архива
Загрузите архив выпуска, затем соберите и установите его стандартными средствами Perl:
Стандартная схема site устанавливает программу как /usr/local/bin/pgbadger, а страницу руководства — как /usr/local/share/man/man1/pgbadger.1.
Для установки в стиле системного дистрибутива под /usr создайте Makefile следующим образом:
Исходный проект также поддерживает схему INSTALLDIRS=perl. Перед установкой в управляемую систему проверьте сгенерированные пути.
Установка разрабатываемой версии
Разрабатываемый код может содержать изменения, ещё не описанные в примечаниях к выпуску. Для воспроизводимой сборки производственного пакета предпочтительнее архив с тегом версии.
Проверка установки
Далее перейдите к справочнику командной строки и настройке журналирования PostgreSQL .
2 - Справочник командной строки
На этой странице сохранён справочник команд, сгенерированный из зафиксированной версии исходного кода. Имена параметров и текст справки приведены дословно, чтобы их можно было непосредственно сопоставить с выводом pgbadger --help.
Использование и параметры
Использование: pgbadger [options] logfile […]
Аргументы:
Параметры:
pgBadger может разбирать удалённый файл журнала через SSH-соединение без пароля. Укажите IP-адрес или имя узла с помощью -r либо –remote-host. Для полного управления SSH-соединением предусмотрены дополнительные параметры.
Файл журнала для разбора также можно указать с помощью URI. Поддерживаются протоколы http[s] и [s]ftp. Для загрузки файла используется команда curl, а разбор выполняется во время загрузки. Также поддерживается протокол ssh: он использует команду ssh так же, как удалённый узел. См. примеры ниже.
Коды возврата:
Примеры:
Для удалённого файла журнала используйте запись URI:
Можно одновременно разбирать локальный журнал PostgreSQL и удалённый файл журнала pgbouncer:
Еженедельный отчёт об ошибках с помощью задания cron:
Создание отчёта каждую неделю в инкрементальном режиме:
Предполагается, что файл журнала и HTML-отчёт также ротируются еженедельно.
Ещё лучше использовать автоматически создаваемые инкрементальные отчёты:
Команда создаст отчёт за каждый день и каждую неделю.
В инкрементальном режиме также можно задать число недель, которые следует хранить в отчётах:
Если pg_dump ежедневно работает по полчаса в 23:00 и 13:00, можно следующим образом исключить эти периоды из отчёта pgBadger:
Так операторы COPY, создаваемые pg_dump, не окажутся в верхней части списка самых медленных запросов. Эту проблему можно решить проще с помощью –exclude-appname “pg_dump”.
Вывод journalctl также можно разбирать как обычный файл журнала:
или, что менее эффективно, вызвать его на удалённом узле:
В командной строке не нужно указывать файл журнала, но при наличии других журналов PostgreSQL для разбора их можно добавить обычным способом.
Чтобы впоследствии пересобрать все инкрементальные HTML-отчёты, выполните:
При этом обновятся и все файлы ресурсов (JS и CSS). Укажите -E или –explode, если отчёты изначально создавались с этим параметром.
pgBadger также поддерживает журналы Heroku PostgreSQL в формате logplex:
Журнал Heroku PostgreSQL будет передаваться в pgbadger через стандартный ввод.
pgBadger может автоматически определять журналы RDS и CloudWatch PostgreSQL в формате rds:
Каждый журнал CloudSQL Postgresql представляет собой довольно обычный журнал PostgreSQL, заключённый в формат JSON. pgBadger определяет его автоматически, но при необходимости принудительно задайте формат `jsonlog`:
То же относится и к расширению jsonlog: формат JSON отличается, но pgBadger умеет разбирать оба варианта.
pgBadger также поддерживает журналы, создаваемые оператором CloudNativePG Postgres для Kubernetes:
Чтобы создать накопительный отчёт за месяц, используйте команду:
Она добавит в календарное представление инкрементальных отчётов ссылку с названием месяца для просмотра отчёта за май 2019 года. Укажите -E или –explode, если отчёты создавались с этим параметром.
3 - Настройка журналирования 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 изучите несколько реальных записей журнала, прежде чем запускать большой анализ. Убедитесь, что отметка времени, идентификатор процесса/сеанса, пользователь, база данных, приложение и клиент соответствуют выбранному формату.
4 - Параллельная обработка
pgBadger поддерживает два взаимодополняющих режима многопроцессной обработки. Выбирайте режим по структуре входных данных, а не просто по числу процессоров.
| Параметр | Единица параллельной обработки | Лучше всего подходит для | Основное ограничение |
|---|---|---|---|
-j N / --jobs N | части одного файла журнала | один большой журнал с произвольным доступом | на границах частей небольшое число запросов может быть продублировано или пропущено |
-J N / --Jobs N | целые файлы журналов | множество независимых журналов | полезно только при достаточном числе файлов для постоянной загрузки рабочих процессов |
Разделение одного большого файла с -j
Алгоритм исходного проекта делит каждый файл на N диапазонов байтов, создаёт по одному процессу синтаксического анализа на диапазон, записывает временную двоичную статистику, а затем объединяет её в итоговый отчёт.
Поскольку записи журнала и многострочные операторы не совпадают точно с границами диапазонов байтов, примерно до N запросов на файл могут быть усечены, пропущены или — что происходит чаще — учтены дважды на границах частей. Используйте этот режим для сводного анализа очень больших файлов, но не в процессах, где требуется точный экспертный подсчёт каждой записи.
Обработка множества файлов с -J
Каждый рабочий процесс получает целый файл, поэтому в этом режиме отсутствует проблема границ частей. Он наиболее полезен при сотнях небольших файлов и достаточной мощности процессора и подсистемы ввода-вывода. Документация исходного проекта также разрешает использовать -J для независимых сжатых файлов; разделение одного файла с -j требует несжатых входных данных с произвольным доступом.
Эталонные измерения исходного проекта
В руководстве исходного проекта приведены следующие результаты для узла с 8 процессорами. Рассматривайте их как сравнение двух алгоритмов, а не как прогноз для современного оборудования.
Один файл размером 9,5 ГБ:
| Параметр | 1 CPU | 2 CPU | 4 CPU | 8 CPU |
|---|---|---|---|---|
-j | 1h41m18 | 50m25 | 25m39 | 15m58 |
-J | 1h41m18 | 54m28 | 41m16 | 34m45 |
Двести файлов по 10 МБ, всего 2 ГБ:
| Параметр | 1 CPU | 2 CPU | 4 CPU | 8 CPU |
|---|---|---|---|---|
-j | 20m15 | 9m56 | 5m20 | 4m20 |
-J | 20m15 | 9m49 | 5m00 | 2m40 |
Практическое правило: используйте -j для нескольких больших файлов, а -J — для множества небольших. Если входные данные и платформа позволяют, оба режима можно сочетать, но такую комбинацию следует измерить: пропускная способность хранилища может стать ограничением разбора журналов раньше, чем процессор.
Ограничения и временные файлы
-jнедоступен для сжатого ввода или CSV и использует создание дочерних процессов, поэтому этот режим не работает в Windows.- Путь удалённого ввода исходного проекта не поддерживает разбор удалённых CSV.
- При параллельном анализе в выбранном временном каталоге (по умолчанию — системном) создаются файлы с именами вида
tmp_pgbadgerXXXX.bin. - Не удаляйте эти файлы во время работы pgBadger. С помощью
--tempdirразместите их в хранилище достаточного объёма. - Начните с умеренного числа рабочих процессов и следите за загрузкой процессора, скоростью чтения, использованием временного пространства и затраченным временем.
5 - Инкрементальные отчёты
Инкрементальный режим сохраняет разобранную статистику в двоичном виде, а затем строит по одному HTML-отчёту на день, накопительный отчёт на неделю и связывающий их календарный индекс. Он предназначен для регулярной обработки ротируемых журналов без повторного учёта одних и тех же записей.
Создание ежедневных и еженедельных отчётов
Запускайте pgBadger после ежедневной ротации журнала и укажите постоянный каталог вывода:
Параметр -I включает инкрементальный режим, а -O выбирает каталог для двоичного состояния, календарного индекса и сгенерированных отчётов. pgBadger самостоятельно ведёт инкрементальное состояние в этом каталоге, поэтому --last-parsed не нужен, если только вы намеренно не хотите хранить файл состояния в другом месте.
Чтобы выводить HTML в отдельный каталог, сохраняя двоичное состояние в исходном каталоге, используйте:
Считайте двоичные файлы исходными данными для будущих пересборок. Создавайте их резервные копии или сохраняйте исходные журналы, если возможность повторного создания отчётов важна.
Срок хранения
Оставляйте только выбранное число недель:
Каталоги старых недель и дней удаляются автоматически. Прежде чем применять политику к единственной истории отчётов, проверьте её на непроизводственной копии.
Раздельная запись общих ресурсов
По умолчанию HTML-отчёты включают JavaScript и CSS внутрь файла. В каталоге с большим числом инкрементальных отчётов параметр -X / --extra-files записывает общие ресурсы отдельно и уменьшает дублирование в выводе:
Все отчёты и каталог ресурсов соответствующей версии необходимо перемещать вместе.
Пересборка существующих отчётов
После обновления pgBadger или исправления генератора отчётов пересоберите HTML из сохранённых двоичных данных:
Если исходные отчёты создавались отдельно по базам данных, снова укажите -E / --explode.
Используйте длинный параметр
--rebuild. В текущем справочнике команд-Rозначает--retention; если принять-Rза сокращение для пересборки, будет применён неверный параметр.
Добавление месячного отчёта
Ежедневные и еженедельные отчёты создаются автоматически. Месячное агрегирование запускается явно, поскольку для большой истории оно может быть ресурсоёмким:
Созданный месяц добавляется в календарный индекс. Повторный запуск команды пересобирает отчёт за этот месяц из доступных двоичных данных. Для истории по отдельным базам данных снова укажите -E:
Полный справочник команд также описывает --day-report YYYY-MM-DD, --no-week, --noreport, --start-monday и --iso-week-number для более специализированных расписаний.
Откройте включённый пример инкрементального отчёта , чтобы без подключения к сети изучить календарь, ссылки на недели и иерархию ежедневных отчётов.
6 - Форматы вывода
pgBadger выбирает формат вывода по расширению имени файла либо по параметру -x / --extension. Укажите -o / --outfile несколько раз, чтобы создать несколько форматов из одного результата разбора.
| Формат | Обычное расширение | Оптимальное применение |
|---|---|---|
| HTML | .html | интерактивный, удобный для чтения отчёт с диаграммами |
| Текст | .txt | просмотр в терминале и простое архивирование |
| Двоичный | .bin | объединяемая промежуточная статистика и пересборка отчётов |
| JSON | .json | интеграция с другим ПО; требует JSON::XS |
| Необработанный CSV | выбранный файл вывода | построчное извлечение с --dump-raw-csv |
HTML и текст
По умолчанию результат записывается в out.html:
Обычно HTML включает сценарии, стили, шрифты и данные отчёта, необходимые для автономного просмотра. Параметр -X / --extra-files выносит общие JavaScript и CSS из инкрементальных отчётов; храните эти ресурсы рядом с деревом HTML.
Чтобы явно создать текстовый файл:
Укажите - вместо имени выходного файла, чтобы записать поддерживаемый формат в стандартный вывод.
Двоичные промежуточные данные
Двоичный вывод отделяет разбор от представления. Создавайте почасовые приращения из одного растущего суточного журнала:
Объедините один или несколько двоичных файлов в новый отчёт:
Если сервер создаёт отдельный файл журнала каждый час, формируйте по одному двоичному файлу на каждую ротацию, а затем при необходимости пересобирайте накопительный HTML:
Храните вместе только двоичные файлы совместимых версий pgBadger. Перед обновлением каталога долгоживущих отчётов проверьте в примечаниях к выпуску совместимость инкрементального формата.
JSON
Вывод JSON предназначен для программных потребителей, например конвейеров мониторинга и отчётности:
Сначала установите JSON::XS. Если размер файла и время создания вторичны, добавьте --prettify-json для удобства чтения.
Необработанный и ориентированный на запросы экспорт
Справочник команд также описывает специализированные способы экспорта:
--dump-raw-csvразбирает журнал и записывает построчный CSV без построения отчёта;--csv-separatorменяет разделитель необработанного CSV;--dump-all-queriesвыводит каждый запрос после подстановки параметров привязки;--normalized-onlyзаписывает нормализованные запросы;--query-numberingнумерует текстовый вывод, ориентированный на запросы.
Эти режимы могут включать SQL приложения, идентификаторы, пользователей, адреса клиентов или литеральные значения. Проверяйте результат перед передачей другим и используйте --anonymize, если для предполагаемого анализа литералы не нужны.
7 - Примеры отчётов
Примеры были созданы pgBadger 11.8 в мае 2022 года. Исходные примеры хранятся на этом сайте, поэтому навигация, диаграммы, стили и сценарии отчётов доступны без обращения к серверу исходного проекта.
| Пример | Что он демонстрирует | Локальная копия |
|---|---|---|
| Полный отчёт | Активность PostgreSQL вместе со статистикой PgBouncer | Открыть полный отчёт |
| Инкрементальный отчёт | Календарный индекс, еженедельное агрегирование и ежедневные страницы | Открыть индекс инкрементальных отчётов |
| Ошибки и события | Отчёт, ограниченный ошибками и эксплуатационными событиями | Открыть отчёт об ошибках |
Полный отчёт
Полный отчёт — автономный HTML-документ. С помощью верхней панели навигации можно изучить общую статистику, запросы, сеансы, соединения, временные файлы, контрольные точки, активность autovacuum, блокировки и диаграммы, относящиеся к PgBouncer.
Данные предназначены для демонстрации и не являются актуальным эталоном производительности. Значения, версии PostgreSQL и встроенный интерфейс pgBadger соответствуют дате создания отчёта.
Инкрементальная иерархия
В инкрементальном примере сохранена полная структура ссылок:
Верхний индекс содержит ссылки на два еженедельных и семь ежедневных отчётов. Все относительные ссылки сохранены, поэтому перенос одного только index.html нарушит работу примера; переносите всё дерево каталогов целиком.
Безопасность и конфиденциальность
Реальные отчёты могут раскрывать текст SQL, значения параметров, имена баз данных и пользователей, названия приложений, адреса клиентов, сведения об ошибках и характер рабочей нагрузки. Перед публикацией отчёта:
- используйте
--anonymize, если литеральные значения не нужны; - применяйте фильтры включения и исключения до создания отчёта;
- проверяйте окончательный HTML или экспортированные данные, а не только командную строку;
- защищайте местоположение отчёта так же тщательно, как эксплуатационные журналы.
8 - История выпусков
Официальный сайт публикует новости о выпусках прямо на главной странице. Эта страница заканчивается версией 12.4 и по ошибке повторяет версии 11.1–11.3 с противоречащими друг другу датами. В этой редакции канонической записью служит зафиксированный ChangeLog исходного проекта: удалены только эти повторные представления и добавлены последующие выпуски 13.x. Записи приведены полностью и в каждой серии упорядочены от новых к старым.
| Серия | Включённые версии | Первый и последний выпуск | Страница |
|---|---|---|---|
| 13.x | 13.0–13.2 | 2024-12-08 – 2025-12-29 | Читать о 13.x |
| 12.x | 12.0–12.4 | 2022-09-13 – 2023-12-25 | Читать о 12.x |
| 11.x | 11.0–11.8 | 2019-06-25 – 2022-04-08 | Читать о 11.x |
| 10.x | 10.0–10.3 | 2018-09-09 – 2019-02-14 | Читать о 10.x |
| 9.x | 9.0–9.2 | 2016-09-02 – 2017-07-27 | Читать о 9.x |
Архивы и дополнительные файлы доступны в разделе выпусков GitHub . Даты выпусков в этом разделе относятся к истории исходного проекта, а не ко времени загрузки данного снимка документации.
8.1 - Примечания к выпускам pgBadger 13.x
Здесь полностью сохранена история изменений pgBadger 13.x из исходного проекта, от новых версий к старым.
v13.2 · 2025-12-29
Это выпуск pgBadger с исправлениями проблем и патчами, предложенные пользователями после предыдущего выпуска.
- Исправлена нормализация, некорректно обрабатывавшая сбалансированные строки в одинарных кавычках с экранированными кавычками внутри. Спасибо Bertrand Bourgier за сообщение.
- Исправлены требования к заполнителям в документации.
- Исправлен случай, когда примеры строк журнала с ошибками не попадали в отчёт. Спасибо john doe за сообщение.
- Исправлена возможная проблема приоритета между ! и %s. Спасибо Luca Santarelli и Philipp Trulson за сообщение.
- Код pgFormatter обновлён до версии 5.9.
- Добавлено действие GitHub CI для тестирования при отправке коммитов.
- Исправлен разбор заполнителя %r в log_line_prefix. Спасибо nike7o0 за сообщение.
- Исправлено предупреждение о неинициализированном значении. Спасибо Ales Zeleny за сообщение.
- Документация по параметрам SSH для разбора журналов Postgres дополнена примерами. Спасибо Ulrich Konrad за патч.
- Добавлена команда –ssh-sudo для запуска команд по SSH через sudo. Спасибо Andrew Jackson за патч.
- Исправлена возможная проблема приоритета между ! и строковым eq. Спасибо Adrien Nayrat за сообщение.
- Исправлен разбор статистики pgbouncer. Спасибо mrgtt за сообщение.
v13.1 · 2025-03-16
Это выпуск pgBadger с исправлениями проблем, о которых пользователи сообщили после предыдущего выпуска, и добавляет новые возможности:
- Добавлен новый отчёт о пропускной способности vacuum с диаграммой vacuum по таблицам, потребляющим больше всего процессорного времени. В таблице показано время ввода-вывода для чтения и записи по каждой таблице, а также затраченное на таблицу процессорное время. Спасибо Ales Zeleny за запрос функции. Этот патч также добавляет замороженные страницы и кортежи в отчёт Vacuums per Table.
- Добавлен параметр –no-fork, полностью отключающий создание дочерних процессов при отладке. Спасибо Ales Zeleny за запрос функции.
- В необработанный вывод CSV добавлены миллисекунды. Спасибо Henrietta Dombrovskaya за запрос функции.
- При обработке нескольких файлов в примеры отчётов добавлено имя файла журнала. Спасибо Adrien Nayrat за запрос функции.
Полный список изменений и благодарностей:
- Исправлен разбор параметров привязки. Спасибо Thomas Kotzian за патч.
- Фильтр запросов применяется к многострочным запросам. Спасибо Benjamin Jacobs за патч.
- Обновлён результат теста с учётом изменений в хранении имени файла журнала.
- Исправлено различие уровней сообщений ERROR и LOG в выводе JSON. Спасибо Philippe Viegas за сообщение.
- Удалён импорт неэкспортируемого метода tmpdir из File::Temp. Спасибо kmoradha за сообщение.
v13.0 · 2024-12-08
Это основной выпуск pgBadger, исправляющий проблемы, о которых пользователи сообщили после предыдущего выпуска, и добавляющий новые возможности:
- Добавлены два новых параметра для переопределения границ гистограмм запросов и сеансов. –histogram-query VAL : use custom inbound for query times histogram. Default inbound in milliseconds: 0,1,5,10,25,50,100,500,1000,10000 –histogram-session VAL : use custom inbound for session times histogram. Default inbound in milliseconds: 0,500,1000,30000,60000,600000,1800000,3600000,28800000 Спасибо JosefMachytkaNetApp за запрос функции.
- Добавлена поддержка плана auto_explain для журналов форматов csv и json. Спасибо zxwsbg и Alexander Rumyantsev за сообщение.
- В события добавлены три ранее не учитывавшихся сообщения LOG: unexpected EOF, incomplete startup packet и detected deadlock while waiting for. Спасибо dottle за сообщение.
Проблемы обратной совместимости:
- Изменён способ хранения событий уровня LOG, отображаемых в отчётах Events. Некоторые из них по-прежнему отображались и учитывались как ошибки, а не как записи уровня LOG. Теперь они хранятся и отображаются как EVENTLOG, что отличает их от запросов. Это изменение нарушает обратную совместимость при использовании pgbadger в инкрементальном режиме: смешанное поведение будет наблюдаться только в течение недели обновления. Спасибо Matti Linnanvuori за сообщение.
Исправления ошибок:
- Исправлено отсутствие запросов, приводящих к наибольшему числу отмен из-за statement_timeout.
- Обновлены регрессионные тесты.
- Исправлено форматирование плана explain, извлечённого из журнала формата csv.
- Исправлено отсутствие данных autovacuum из jsonlog в отчётах Average Autovacuum Duration, Tuples removed per table и почасовых vacuum в отчёте об активности autovacuum. Спасибо Ales Zeleny за патч.
- Исправлена непривязанная строка, которая не сопоставлялась с затратными по времени запросами привязки. Спасибо Henrietta Dombrovskaya за сообщение. Исправлено использование неинициализированного значения при сопоставлении с шаблоном. Спасибо Junior Dias за патч.
- Параметр –csv-separator применяется к необработанному экспорту CSV. Разделитель по умолчанию — точка с запятой (;). Спасибо Henrietta Dombrovskaya за запрос функции.
- В необработанном выводе csv пустые параметры и имя приложения больше не заключаются в двойные кавычки.
- Запросы, содержащие точку с запятой, заключаются в двойные кавычки в необработанном выводе csv. Спасибо Henrietta Dombrovskaya за сообщение.
8.2 - Примечания к выпускам pgBadger 12.x
Здесь полностью сохранена история изменений pgBadger 12.x из исходного проекта, от новых версий к старым.
v12.4 · 2023-12-25
Это выпуск pgBadger с исправлениями проблем, о которых пользователи сообщили после предыдущего выпуска.
- Исправлен отчёт pgbouncer для версии 1.21. Спасибо Ales Zeleny за патч.
- Число параллельных процессов Perl больше не может превышать число файлов. Спасибо maliangzhu за сообщение.
- Исправлен регрессионный тест, не работавший с версии 12.3. Спасибо ieshin за сообщение.
- Исправлены случаи, когда записи LOG учитывались как записи уровня ERROR. Спасибо Matti Linnanvuori за сообщение.
v12.3 · 2023-11-27
Это выпуск pgBadger с исправлениями проблем, о которых пользователи сообщили после предыдущего выпуска. Он также добавляет новые возможности:
- Добавлен параметр –include-pid, позволяющий включать в отчёт только события, связанные с PID сеанса (%p). Его можно указывать несколько раз. Спасибо Henrietta Dombrovskaya за запрос функции.
- Добавлен параметр –include-session, позволяющий включать в отчёт только события, связанные с идентификатором сеанса (%c). Его можно указывать несколько раз. Спасибо Henrietta Dombrovskaya за запрос функции.
- Добавлен параметр –dump-raw-csv, который только разбирает журнал и выводит сведения в формате CSV. Дальнейшая обработка не выполняется, отчёт не создаётся. Спасибо Henrietta Dombrovskaya за запрос функции.
Полный список изменений и благодарностей:
- pgFormatter обновлён до версии 5.5.
- Исправлена конечная дата разбора в формате jsonlog. Спасибо jw1u1 за сообщение.
- Исправлена опечатка в «Sessions per application». Спасибо fairyfar за патч.
- Исправлена ошибка диаграммы «INSERT/UPDATE/DELETE Traffic». Спасибо fairyfar за патч.
- Исправлен разбор непривязанных строк с запросами привязки. Спасибо youxq за сообщение.
- Исправлен отчёт Analyze per table для новых версий PG. Спасибо Jean-Christophe Arnu за патч.
- Исправлен анализатор записей syslog, когда отметка времени syslog содержит миллисекунды. Спасибо Pavel Rabel за сообщение.
v12.2 · 2023-08-20
Это выпуск pgBadger с исправлениями проблем, о которых пользователи сообщили после предыдущего выпуска. Он также добавляет две возможности:
- Добавлена поддержка максимальной, средней и минимальной длительности autovacuum. Спасибо Francisco Reinolds за патч.
- Добавлена поддержка среднего времени ожидания pgbouncer. Спасибо Francisco Reinolds за патч.
Полный список изменений и благодарностей:
- Исправлен повреждённый вывод HTML, когда имя приложения содержит <…>. Спасибо Fabio Geiss за сообщение.
- Исправлено неверное сопоставление непривязанных строк при применении фильтра по базе данных. Спасибо jcasanov за сообщение.
- Исправлен разбор префикса logplex.
- Исправлено обнаружение непривязанных строк logplex.
- Исправлен разбор строки
system usage: CPU: ...отautovacuum. Спасибо Francisco Reinolds за патч. - При выводе в stdout каталог вывода больше не добавляется в начало пути.
- Унифицирована подпись Average Query Duration. Спасибо Francisco Reinolds за патч.
- Обновлена документация по новым параметрам pgbadger. Спасибо Francisco Reinolds за патч.
- Исправлен случай, когда разбор не прерывался, хотя ни один файловый дескриптор открыть не удалось. Спасибо vp за сообщение.
- В справку добавлены сведения об обязательных заполнителях журнала %p/%t. Спасибо Christophe Courtois за патч.
- Исправлен параметр –retention. Спасибо Bertrand Bourgier за патч.
- Восстановлена удалённая коммитом 0e5c7d5 очистка каталога вывода при заданном каталоге вывода HTML. Спасибо Bertrand Bourgier за сообщение.
- Исправлено расширение вывода, когда каталог назначения содержит символ, требующий экранирования в регулярном выражении. Спасибо Bertrand Bourgier за патч.
- Для порта Windows вызовы POSIX::strftime("%s", ….) заменены вызовом localtime. Спасибо Bertrand Bourgier за патч.
- Исправлена очистка каталога вывода HTML. Спасибо Bertrand Bourgier за патч.
- Для URL explain по умолчанию используется https. Спасибо Philipp Trulson за патч.
v12.1 · 2023-03-20
Это выпуск pgBadger с исправлениями проблем, о которых пользователи сообщили за предыдущие шесть месяцев.
Полный список изменений и благодарностей:
- Исправлен разбор многострочных параметров. Спасибо Bekir Niyaz за сообщение.
- Исправлен сбой нормализации запроса с ::tsrange. Спасибо Philippe Griboval за сообщение.
- В отчёт событий добавлены точка согласованности и начало логического декодирования для записей журнала слота.
- Поддержан дополнительный формат «ns + часовой пояс» в отметке времени. Спасибо Ronan Dunklau за сообщение.
- Исправлено распознавание %m при использовании записи с T. Спасибо Ronan Dunklau за сообщение.
- Добавлен разбор журналов, создаваемых CloudNativePG. Спасибо codrut panea за патч.
- Исправлен неиспользуемый параметр –outdir при создании отчёта. Спасибо Frederic Guiet за сообщение.
- README обновлён последними изменениями документации. Спасибо Manisankar за сообщение.
- Исправлена опечатка в примерах pgbadger. Спасибо Shinichi Hashiba за патч.
v12.0 · 2022-09-13
Этот основной выпуск pgBadger исправляет проблемы, о которых пользователи сообщили за предыдущие пять месяцев. Как обычно, добавлены новые возможности и улучшения:
- Удалена поддержка вывода Tsung.
- Повышена производительность pgbadger при подстановке сотен параметров привязки.
- Удалён параметр -n | –nohighlight, который не используется после обновления до pgFormatter 4.
- Для отправки плана auto_explain на explain.depesz.com используется метод POST, что позволяет избежать ограничения длины параметров GET.
- Параметры –exclude-query и –include-query применяются к трассировкам bind/parse.
- В документацию добавлена ссылка на примеры отчётов pgBadger.
Полный список изменений и благодарностей:
- Исправлен сбой месячных отчётов с сообщением «log file … must exists». Спасибо Jaume Sabater за сообщение.
- Исправлено отладочное сообщение о начале разбора pgbouncer при вводе из stdin. Спасибо aleszeleny за сообщение.
- Удалена поддержка вывода Tsung.
- Значительно повышена производительность pgbadger при подстановке параметров привязки: при сотнях параметров pgbadger мог работать бесконечно. Спасибо Monty Mobile за сообщение.
- Исправлена документация о кодах возврата pgBadger и неверные коды возврата в нескольких местах. Спасибо Jaume Sabater за сообщение.
- Исправлено несколько опечаток. Спасибо David Gilman за патч.
- Удалён параметр -n | –nohighlight, который не используется после обновления до pgFormatter 4. Спасибо Elena Indrupskaya за сообщение.
- Внесено множество исправлений в документацию pgbadger. Спасибо Elena Indrupskay из Postgres Pro за патч.
- Параметры –log-timezone и –timezone теперь поддерживают получасовой сдвиг: значение может быть целым, например 2, или дробным, например 2.5. Спасибо Mujjamil-K за запрос функции.
- Для –exclude-app и –exclude-client разрешены регулярные выражения. Спасибо rdnkrkmz за запрос функции.
- Разрешено использование –explain-url с предыдущим коммитом и восстановлено ограничение на текстовый формат explain.
- Для отправки плана auto_explain на explain.depesz.com используется метод POST, что позволяет избежать ограничения длины параметров GET. Спасибо hvisage за сообщение.
- Параметры –exclude-query и –include-query применяются к трассировкам bind/parse. Спасибо Alec Lazarescu за сообщение.
- Исправлен разбор статистики autovacuum из журналов RDS. Спасибо David Gilman за сообщение.
- Исправлена передача формата журнала при разборе удалённого журнала. Спасибо spookypeanut за сообщение.
- В документацию добавлена ссылка на примеры отчётов pgBadger.
- Исправлены отчёты Session per user. Спасибо vitalca за сообщение.
- Исправлен разбор jsonlog из PG15.
- Исправлен текстовый отчёт об ошибках/событиях. Спасибо Michael Banck за патч.
- Исправлена опечатка в регулярном выражении normalize_error(). Спасибо Michael Banck за патч.
8.3 - Примечания к выпускам pgBadger 11.x
Здесь полностью сохранена история изменений pgBadger 11.x из исходного проекта, от новых версий к старым.
v11.8 · 2022-04-08
Этот выпуск pgBadger исправляет проблемы, о которых пользователи сообщили за предыдущие три месяца, и в особенности две ошибки обнаружения новых записей журнала в инкрементальном режиме.
- Исправлено обнаружение новых записей журнала по отметке времени, когда в log_line_prefix использовались миллисекунды (%m) или эпоха (%n).
- Исправлено обнаружение новых записей в локальном файле без использования многопроцессной обработки.
Полный список изменений и благодарностей:
- Полностью пересмотрено и упрощено обнаружение изменений файла журнала.
- Сообщения “could not (receive|send) data (from|to) client” включены в отчёты Events. Спасибо Adrien Nayrat за сообщение.
- Исправлена ошибка разбора, когда имя подготовленного запроса содержит символ ‘:’. Спасибо aleszeleny за сообщение.
- Исправлено обнаружение новых записей журнала по отметке времени с миллисекундами (%m) или эпохой (%n). Спасибо aleszeleny за сообщение.
- Исправлено обнаружение новых записей в локальном файле без многопроцессной обработки. Спасибо aleszeleny за сообщение.
- Исправлено обнаружение новых записей в удалённых файлах по SSH. Спасибо Luca Ferrari за сообщение.
- Устранён мусор в имени пользователя в отчёте “Connections per user”. Спасибо caseyandgina за сообщение.
- Исправлена команда SSH при использовании URI: ранее параметры SSH отсутствовали. Спасибо Luca Ferrari за сообщение.
- Добавлена обработка заполнителя queryid %Q. Спасибо Adrien Nayrat за патч.
- Исправлена опечатка в сообщении об ошибке. Спасибо Luca Ferrari за патч.
- Сообщение “server process was terminated by signal” включено в отчёт Events. Спасибо Avi Vallarapu за сообщение.
- В документации исправлено имя файла в команде еженедельного инкрементального отчёта. Спасибо Theophile Helleboid за патч.
- В t/04_advanced.t исправлен тест syslog. Спасибо Christoph Berg за патч.
v11.7 · 2022-01-23
Этот выпуск pgBadger исправляет проблемы, о которых пользователи сообщили за предыдущие пять месяцев, и содержит ряд улучшений:
- Добавлен параметр –no-progressbar, скрывающий индикатор выполнения, но сохраняющий остальной вывод.
- Добавлен параметр –day-report для пересборки HTML-отчёта за указанный день. Он аналогичен –month-report, но работает только для одного дня. Требуются каталоги инкрементального вывода и все необходимые файлы двоичных данных. Значение — дата в формате YYYY-MM-DD.
- Улучшен разбор журналов Heroku logplex и cloudsql json.
Полный список изменений и благодарностей:
- Обновлены руководство для участников и Makefile.PL, что улучшает согласованность, ясность и зависимости. Спасибо diffuse за патч.
- Исправлено использование файла последнего разбора (–last-parsed) в двоичном режиме. Спасибо wibrt за сообщение.
- Добавлен регрессионный тест использования –last-parsed и исправлен тест отчёта только о временных файлах.
- Исправлен заголовок диаграммы сеансов по узлам. Спасибо Norbert Bede за сообщение.
- Исправлен номер недели при расчёте еженедельных отчётов с включёнными –iso-week-number и –incremental. Спасибо hansgv за сообщение.
- Добавлен –no-progressbar, скрывающий индикатор выполнения и сохраняющий остальной вывод. Спасибо seidlmic за запрос функции.
- Ограничен чрезмерный вывод строк неизвестного формата в режиме отладки для многострочного jsonlog.
- Исправлен разбор однострочного журнала cloudsql json. Спасибо Thomas Leclaire за сообщение.
- Исправлена сводка временных файлов при одном лишь log_temp_files.
- Отладочное сообщение с -v теперь выводится даже при -q или –quiet.
- Исправлено автоматическое распознавание файла jsonlog.
- Исправлен разбор файла журнала cloudsql. Спасибо Luc Lamarle за сообщение.
- Исправлено извлечение PID в parse_json_input. Спасибо Francois Scala за патч.
- Добавлен параметр –day-report со значением даты в формате YYYY-MM-DD для пересборки HTML-отчёта за указанный день. Спасибо Thomas Leclaire за запрос функции.
- Исправлен счётчик запросов в индикаторе выполнения. Спасибо Guillaume Lelarge за сообщение.
- Исправлены неполные запросы в отчётах самых затратных bind и prepare.
- Исправлена нормализация идентификатора объекта: в некоторых случаях числа заменялись на ?.
- Исправлены неформатированные нормализованные запросы с комментарием в начале.
- Исправлена многострочность формата stderr при использовании –dbname. Спасибо Guillaume Lelarge за сообщение.
- Исправлено отсутствие отчётов в инкрементальном режиме с –dbname. Спасибо Dudley Perkins за сообщение.
- Несовместимый двоичный файл больше не вызывает аварийное завершение: pgBadger переходит к следующему файлу. Спасибо Thomas Leclaire за предложение.
- Анализатор pgbadger адаптирован к изменению формата Heroku logplex. Спасибо François Pietka за сообщение.
v11.6 · 2021-09-04
Этот выпуск pgBadger исправляет проблемы, о которых пользователи сообщили за предыдущие семь месяцев, и содержит ряд улучшений:
- Добавлено распознавание нового в PG14 Query Id из log_line_prefix. Спасибо Florent Jardin за сообщение.
- Добавлены расширенные регрессионные тесты с исключением БД и функцией explode. Спасибо MigOps Inc за патч.
- При использовании –explode создание отчётов выполняется несколькими процессами. Спасибо MigOps Inc за патч и Thomas Leclaire за запрос функции.
- В инкрементальный режим добавлен –iso-week-number: календарные недели начинаются с понедельника и соответствуют нумерации ISO 8601 от 01 до 53, где неделя 1 — первая неделя, содержащая не менее 4 дней нового года. Спасибо Alex Muntada за запрос функции.
- Добавлен параметр командной строки –keep-comments, сохраняющий комментарии в нормализованных запросах. Он полезен для различения одинаковых нормализованных запросов. Спасибо Stefan Corneliu Petrea за запрос функции.
- Пропускаются строки INFO, добавленные в журнал PostgreSQL сторонним ПО. Спасибо David Piscitelli за сообщение.
- Добавлена совместимость с журналом PostgresPro, где после длительности оператора указаны число строк и размер в байтах. Спасибо panatamann за сообщение.
- Разбирается время с T, что позволяет использовать отметки времени journalctl. Спасибо Graham Christensen за патч.
- Улучшен порт для Windows. Спасибо Bertrand Bourgier за патчи.
Важное примечание:
- Ожидается, что в следующем основном выпуске –iso-week-number станет режимом по умолчанию, а –start-monday будет удалён, поскольку неделя всегда будет начинаться с понедельника. Ради упрощения кода будет удалена возможность начинать еженедельные отчёты с воскресенья.
Полный список изменений и благодарностей:
- Устранено дублирование предупреждения: “database … must be vacuumed within … transactions”. Спасибо Christophe Courtois за сообщение.
- Исправлено использование неинициализированной переменной. Спасибо phiresky за сообщение.
- Улучшено распознавание query id: он может быть отрицательным и считываться из csvlog.
- Исправлен случай, когда последний файл в инкрементальном режиме всегда разбирался повторно. Спасибо Thomas Leclaire за сообщение.
- Регулярное выражение формата syslog теперь поддерживает индикатор строки сеанса как из одного целого числа, так и из двух чисел через дефис. Спасибо Timothy Alexander за патч.
- Параметр –exclude-db исправлен так, чтобы соответствующий отчёт всё равно создавался для журнала json. Спасибо MigOps Inc за патч и Thomas Leclaire за сообщение.
- Добавлен регрессионный тест для ошибочной версии Storable.
- Исправлено неинициализированное значение в итераторе подстановки при создании еженедельного отчёта в инкрементальном режиме. Спасибо Thomas Leclaire, Michael Vitale, Sumeet Shukla и Stefan Corneliu Petrea за сообщение.
- Добавлен параметр ‘g’ для замены всех параметров привязки. Спасибо Nicolas Lutic и Sebastien Lardiere за патч.
- Улучшена документация. Спасибо Stefan Petrea за патч.
- Исправлен расчёт часового пояса времени изменения журнала. Спасибо Stefan Petrea за патч.
- Исправлена фильтрация журнала по начальному/конечному времени.
- Исправлено неверное сопоставление непривязанных строк многострочных запросов с фильтром по базе данных. Спасибо Abhishek Mehta за сообщение.
- Исправлены отчёты инкрементального режима, когда параметр –dbname частично игнорировался с параметром “explode” (-E). Спасибо lrevest за сообщение.
- Обновлены ресурсы JavaScript.
- Исправлено отображение меню перед переходом в компактный режим при уменьшении экрана. Спасибо Guillaume Lelarge за сообщение.
- Исправлена поддержка многострочных значений параметров привязки в журнале.
- К предыдущему патчу применено то же исправление, что и в pgFormatter.
- Исправлен ещё один случай неинициализированного значения в итераторе подстановки из кода pgFormatter. Спасибо Christophe Courtois за сообщение.
- Исправлена нормализация запросов. Спасибо Jeffrey Beale за патч.
- При использовании –dump-all-queries все операторы завершаются точкой с запятой. Спасибо Christian за сообщение.
- Исправлены опечатка и инициализация типа EOL при нескольких файлах журналов.
- Добавлено автоматическое определение типа EOL для исправления смещения LAST_PARSED при двухбайтовом EOL в Windows. Спасибо Bertrand Bourgier за патч.
- Исправлен перенос get_day_of_week() на Windows, где strftime %u не поддерживается. Спасибо Bertrand Bourgier за патч.
- Исправлен порт для Windows: утилита Perl pl2bat.bat создавала повреждённый pgbadger.bat из-за способа чтения DATA в pgbadger. Спасибо Bertrand Bourgier за патч.
- Исправлен фильтр начального/конечного времени и добавлен регрессионный тест фильтров отметок времени. Спасибо Alexis Lahouze и plmayekar за сообщение.
- Исправлено использование неинициализированного значения при сопоставлении с шаблоном, появившееся после обновления pgFormatter. Спасибо arlt за сообщение.
v11.5 · 2021-02-18
Этот выпуск pgBadger исправляет проблемы, о которых пользователи сообщили за предыдущие три месяца, и содержит ряд улучшений:
- Добавлен отчёт о времени простоя сеансов, рассчитанном по формуле: “total sessions time - total queries time / number of sessions Для достоверного значения должны быть включены log_connection и log_disconnection, а log_min_duration_statement = 0, чтобы журналировались все запросы. Это помогает оценить потерянное время простоя и понять, полезен ли режим транзакций в пулере. Отчёт находится на вкладке “Sessions” раздела “Global Stats” и на вкладке “Sessions” почасовых отчётов “General Activity”.
- Добавлена анонимизация числовых значений с заменой на 4 случайные цифры.
- Обновлён форматировщик SQL на базе pgFormatter 5.0.
Полный список изменений и благодарностей:
- Исправлен разбор многострочного оператора cloudsql. Спасибо Jon Young за сообщение.
- Добавлен регрессионный тест анонимизации.
- Исправлена анонимизация, нарушенная усечением maxlength. Спасибо artl за сообщение.
- Добавлена анонимизация параметров в отчётах о затратных prepare и bind. Спасибо arlt за сообщение.
- Добавлена поддержка микросекунд в префиксе строки журнала logplex. Спасибо Ross Gardiner за сообщение.
- Добавлен отчёт о времени простоя сеансов. Спасибо Guillaume Lelarge за запрос функции.
- Завершён патч поддержки многострочности в формате jsonlog.
v11.4 · 2020-11-24
Этот выпуск pgBadger исправляет проблемы, о которых пользователи сообщили за предыдущие четыре месяца, улучшает поддержку сведений журнала PostgreSQL 13 и добавляет новые возможности:
- В отчёт “Vacuums per table” добавлены полные сведения autovacuum: использование буферов (попадания, промахи, загрязнения), пропуски из-за закрепления, пропуски замороженных страниц и использование WAL (записи, полные образы страниц, байты). В отчёт “Tuples removed per table” добавлены оставшиеся кортежи, ещё не удаляемые кортежи и оставшиеся страницы. Эти сведения доступны только на вкладке “Table”.
- Добавлен новый отчёт о распределении причин запуска контрольных точек.
- Добавлено определение имени приложения из трассировок разрешённого соединения.
Полный список изменений и благодарностей:
- Исправлена опечатка в сообщении об ошибке. Спасибо Vidar Tyldum за патч.
- Исправлена ошибка порта Windows “can not load incompatible binary data”. Спасибо Eric Brawner за сообщение.
- Исправлена опечатка в параметре –html-outdir в справке и документации pgbadger. Спасибо Vidar Tyldum за патч.
- Исправлено автоматическое распознавание формата jsonlog/cloudsql. Спасибо Jon Young за сообщение.
- Исправлен разбор журнала CSV из PG v13. Спасибо Kanwei Li за сообщение и Kaarel Moppel за патч.
- Исправлена сортировка запросов в отчёте о запросах, создающих больше всего временных файлов. Спасибо Sebastien Lardiere за сообщение.
- В режиме отладки добавлена запись версии pgbadger.
v11.3 · 2020-07-26
Этот выпуск pgBadger исправляет несколько проблем, о которых пользователи сообщили за предыдущие четыре месяца. Он также добавляет новые возможности и параметры командной строки:
- Добавлено автоматическое распознавание отметки времени UTC, чтобы не применять часовой пояс к диаграммам.
- Добавлена поддержка формата журнала GCP CloudSQL json.
- Добавлен параметр –dump-all-queries: pgBadger выводит все запросы в текстовый файл без создания отчёта — только полный список операторов, найденных в журнале PostgreSQL. Параметры привязки вставляются в запросы на соответствующие позиции.
- Добавлен параметр -Q | –query-numbering для нумерации запросов в выводе при использовании –dump-all-queries или –normalized-only.
- Добавлен параметр командной строки –tempdir для выбора каталога временных файлов. Он полезен в системах, где запись в /tmp запрещена.
- Добавлен параметр командной строки –ssh-port для задания порта SSH, отличного от 22. В записи URI порт SSH указывается в форме: ssh://192.168.1.100:2222//var/log/postgresql-11.log
Полный список изменений и благодарностей:
- Исправлены инкрементальные отчёты для формата журнала jsonlog/cloudsql. Спасибо Ryan DeShone за сообщение.
- Добавлено автоматическое распознавание отметки времени UTC, чтобы не применять к диаграммам автоматически определённый часовой пояс. Для времени UTC JavaScript применит локальный часовой пояс. Спасибо Brett Stauner за сообщение.
- Исправлен инкрементальный разбор журналов journalctl, который не работал со второго запуска. Спасибо Paweł Koziol за патч.
- Исправлен путь к файлу ресурсов при использовании -X и -E. Спасибо Ryan DeShone за сообщение.
- Исправлен отчёт General Activity о запросах чтения/записи. Спасибо alexandre-sk5 за сообщение.
- Добавлено отладочное сообщение, когда параллельный режим не используется.
- Исправлена логика elsif при определении размера файла и лишний пробел, добавлявшийся в команду journalctl с параметром –since. Спасибо Pawel Koziol за патч.
- Исправлена ошибка “not a valid file descriptor”. Спасибо Pawel Koziol за сообщение.
- Исправлен инкрементальный режим с файлами RDS. Спасибо Ildefonso Camargo, nodje и John Walsh за сообщение.
- Добавлен параметр -Q | –query-numbering для нумерации запросов в выводе с –dump-all-queries или –normalized-only. Это облегчает извлечение многострочных запросов из файла вывода внешним сценарием. Спасибо Shantanu Oak за запрос функции.
- Исправлен разбор журналов cloudsql json при включённом log_min_duration_statement. Спасибо alexandre-sk5 за сообщение.
- Исправлен неверный ключ хеша пользователей в журнале RDS. Спасибо vosmax за сообщение.
- Исправлена ошибка изменения несоздаваемого значения массива. Спасибо John Walsh и Mark Fletcher за сообщение.
- Добавлена поддержка формата журнала GCP CloudSQL json; формат журнала (-f) — jsonlog. Спасибо Thomas Poindessous за запрос функции.
- Добавлен параметр –dump-all-queries: pgBadger выводит все запросы в текстовый файл без создания отчёта — полный список операторов из журнала PostgreSQL. Параметры привязки вставляются на соответствующие позиции. Уникальные запросы не сортируются, записываются все запросы. Спасибо Shantanu Oak за запрос функции.
- Добавлена документация параметра –dump-all-queries.
- Исправлен отчёт vacuum для новой версии PG. Спасибо Alexey Timanovsky за сообщение.
- Добавлен параметр командной строки –no-process-info, запрещающий менять заголовок процесса для идентификации pgbadger, поскольку некоторые системы этого не допускают. Спасибо Akshay2378 за сообщение.
- Добавлен параметр командной строки –tempdir для выбора каталога временных файлов. Значение по умолчанию: File::Spec->tmpdir() || ‘/tmp’ Это полезно в системах, где запись в /tmp запрещена. Спасибо Akshay2378 за сообщение.
- Исправлены неподдерживаемые имена сжатых файлов с пробелами и/или скобками. Спасибо Alexey Timanovsky за сообщение.
- Добавлен параметр командной строки –ssh-port для задания порта SSH, отличного от 22. В записи URI порт SSH указывается в форме: ssh://192.168.1.100:2222//var/log/postgresql-11.log Спасибо Augusto Murri за запрос функции.
v11.2 · 2020-03-11
Этот выпуск pgBadger исправляет несколько проблем, о которых пользователи сообщили за предыдущие шесть месяцев. Он также добавляет новые возможности:
Добавлены поддержка и автоматическое распознавание формата журнала AWS Redshift.
Добавлена поддержка нового формата журнала pgbouncer 1.11.
Добавлена обработка форматов сжатия zstd и lz4.
В инкрементальном режиме построение статистики полностью отделено от построения HTML-отчёта без необходимости читать файл журнала. Например, pgbadger можно запускать каждый час следующим образом:
pgbadger -I -O "/out-dir/data" --noreport /var/log/postgresql*.logКоманда только создаёт двоичные файлы данных в “/out-dir/data”. Затем, например, каждую ночь можно создавать отчёты за прошедший день в отдельном каталоге
/out-dir/reports:pgbadger -I -l "/out-dir/data/LAST_PARSED" -H "/out-dir/reports" /out-dir/data/2020/02/19/*.binДля этого нужно указать путь к сведениям о последнем разборе, путь для записи HTML-отчётов и файл двоичных данных за день.
Также добавлены новые параметры командной строки:
Добавлен параметр командной строки –explain-url для переопределения URL графического инструмента explain. URL по умолчанию:
http://explain.depesz.com/?is_public=0&is_anon=0&plan=Это позволяет использовать локальную установку PgExplain или другой инструмент. pgBadger добавит экранированный план в текстовом формате в конец URL.
Добавлен параметр –no-week, запрещающий pgbadger строить еженедельные отчёты в инкрементальном режиме. Он полезен, если это занимает слишком много времени и ресурсов.
Добавлен параметр командной строки –command для задания команды, которую pgBadger выполнит, чтобы получить записи журнала через стандартный ввод. pgBadger откроет канал к команде и разберёт созданные ею записи журнала. Например:
pgbadger -f stderr –command ‘cat /var/log/postgresql.log’
Это равнозначно запуску pgbadger с непосредственной передачей файла журнала в качестве аргумента. Параметр полезен, если файл журнала требуется менять на лету либо записи извлекаются программой или создаются из базы данных. Например:
pgbadger -f csv –command ‘psql dbname -c “COPY jrn_log TO STDOUT (FORMAT CSV)”’
Добавлен параметр командной строки –noexplain, запрещающий pgBadger разбирать и отображать план explain, записанный в журнал расширением auto_explain. Он полезен для PostgreSQL версии ниже 9.0, где наличие плана explain в журнале приводит к повреждённым отчётам pgBadger.
Обратная совместимость:
- По умолчанию pgBadger усекает запросы до 100000 символов. Это условное значение можно изменить параметром –maxlength. Ранее запросы не усекались, что могло приводить к чрезмерному расходу ресурсов. Ограничение размера по умолчанию безопаснее и в большинстве случаев не приводит к усечению. Однако запросы длиннее 25000 символов форматироваться не будут.
Полный список изменений и благодарностей:
- Исправлен неработавший параметр –exclude-client. Спасибо John Walsh за сообщение.
- Добавлен регрессионный тест разбора журнала RDS и –exclude-client.
- Исправлен индикатор выполнения для журнала pgbouncer. Для журналов pgbouncer подпись “queries” заменена на “stats”.
- Добавлен параметр командной строки –explain-url для переопределения URL графического инструмента explain. Спасибо Christophe Courtois за запрос функции.
- Добавлена поддержка нового формата журнала pgbouncer 1.11. Спасибо Dan Aksenov за сообщение.
- Добавлена обработка форматов сжатия zstd и lz4. Спасибо Adrien Nayrat за патч.
- Добавлены поддержка и автоматическое распознавание формата журнала AWS Redshift. Спасибо Bhuvanesh за запрос функции.
- Обновлена документация формата журнала Redshift.
- Добавлен параметр –no-week, запрещающий pgbadger строить еженедельные отчёты в инкрементальном режиме. Спасибо cleverKermit17 за запрос функции.
- Исправлено сопоставление пути файла с шаблоном, нарушавшее работу pgBadger в Windows.
- Исправлена задача #554 о кириллице и других кодированных параметрах операторов, которые неверно отображались в HTML-отчёте даже с пользовательской кодировкой. Регрессия появилась после исправления известной ошибки Perl “Wide character in print”. Тот патч отменён, а для возврата такого поведения добавлен параметр –wide-char. Добавьте его в команду pgbadger, если видите сообщение “Wide character in print”. Добавлен регрессионный тест с кириллицей и французской кодировкой. Спасибо 4815162342lost и yethee за сообщение.
- В документации указано, что lc_messages = ’en_US.UTF-8’ также допустимо. Спасибо nodje за сообщение.
- Обновлена документация –maxlength: размер усечения по умолчанию теперь равен 100000 вместо отсутствия усечения. Спасибо nodje за сообщение.
- Исправлен расчёт срока хранения на границе года. Спасибо Fabio Pereira за патч.
- Исправлен разбор формата журнала rds. Спасибо Kadaffy Talavera за сообщение.
- При отсутствии новых записей журнала в инкрементальном режиме пустой индексный файл больше не создаётся. Спасибо Kadaffy Talavera за сообщение.
- Обновлена устаревшая документация. Спасибо Eric Hanson за патч.
- Параметр командной строки исправлен с -no-explain на -noexplain. Спасибо Indrek Toom за патч.
- Если totalsize определить невозможно, используется размер файла по умолчанию. Спасибо Adrien Nayrat за патч.
- Исправлены даты в примерах. Спасибо Greg Clough за патч.
- В оставшемся тесте используется регулярное выражение расширений сжатых файлов, а расширение .bin выделено в отдельное условие.
- Добавлена обработка форматов сжатия zstd и lz4. Спасибо Adrien Nayrat за патч.
- Исправлен оставшийся вызов SIGUSR2 в Windows. Спасибо inrap за сообщение.
- Исправлен индикатор выполнения для файла журнала неопределённого размера.
- Добавлен параметр командной строки –command для задания команды, которую pgBadger выполнит, чтобы получить записи журнала через стандартный ввод. Спасибо Justin Pryzby за запрос функции.
- Добавлен параметр командной строки –noexplain, запрещающий pgBadger разбирать и отображать план explain, записанный в журнал расширением auto_explain. Это полезно для PostgreSQL версии ниже 9.0, где наличие плана explain в журнале приводит к повреждённым отчётам pgBadger. Спасибо Massimo Sala за запрос функции.
- Исправлен разбор журнала RDS, когда префикс задан в командной строке. Спасибо Bing Zhao за сообщение.
- Исправлен инкрементальный режим с форматом журнала rds. Спасибо Bing Zhao за сообщение.
- Исправлен ещё один возможный сбой разбора журнала rds. Спасибо James van Lommel и Simon Dobner за сообщение.
- Исправлена классификация операторов и добавлен регрессионный тест. Спасибо alexanderlaw за сообщение.
- Исправлена анонимизация одиночных символов в предложении IN. Спасибо Massimo Sala за сообщение.
- Исправлен разбор строк журнала RDS без сведений о клиенте/пользователе/БД. Спасибо Konrad за сообщение.
v11.1 · 2019-09-16
Этот выпуск pgBadger исправляет несколько проблем, о которых пользователи сообщили за три месяца. Он также добавляет новые возможности и отчёты:
- Добавлен отчёт о первых N запросах, занимающих больше всего времени на этапе prepare или parse.
- Добавлен отчёт о первых N запросах, занимающих больше всего времени на этапе bind.
- Добавлен отчёт о длительности этапов prepare/bind/execute запросов. Он отображается на новой вкладке “Duration” отчёта Global Stats. Пример: Total query duration: 6m16s Prepare/parse total duration: 45s564ms Bind total duration: 4m46s Execute total duration: 44s71m Также исправлен прежний показатель “Total query duration”, который отражал только суммарную длительность execute.
- Добавлена автоматически распознаваемая поддержка форматов журналов RDS и CloudWatch. Если pgbadger не может определить формат автоматически, используйте -f rds.
- Добавлен параметр конфигурации –month-report для построения ежемесячных инкрементальных отчётов.
- Восстановлена поддержка операционной системы Windows.
Также исправлены ошибки и улучшены возможности.
- В README.md добавлена автоматически создаваемая Markdown-документация с помощью pod2markdown. Если команда отсутствует, файл просто не создаётся. Спасибо Derek Yang за патч.
- Действие WITH преобразуется в CTE; исправлена регрессия прошлого выпуска.
- Исправлена поддержка операционной системы Windows.
- Добавлена поддержка форматов журналов RDS и CloudWatch; если pgbadger не определяет формат автоматически, используйте -f rds. Спасибо peruuparkar за запрос функции.
- Исправлен параметр -f | –format: при сбое автоматического определения формата он применялся не ко всем файлам из списка параметров, а брался из первого разобранного файла. Спасибо Levente Birta за сообщение.
- В исходном файле документации ссылка на pgBadger v7.x заменена на v11. Спасибо Will Buckner за патч.
- Ограничена высота отображения самых частых запросов, чтобы огромные запросы не занимали всю страницу. Спасибо ilias ilisepe1 за патч.
- Исправлен выход запросов и подробностей за границы в Slowest individual queries.
- Исправлены URI SSH для файлов, каталогов и подстановочных знаков. Спасибо tbussmann за патч.
- Исправлены примеры URI в документации. Спасибо tbussmann за патч.
- При использовании –rebuild скрывается сообщение о файле вывода по умолчанию.
- В вывод usage() добавлена дополнительная новая строка, чтобы документация POD не повреждалась при сборке.
- В документацию повторно добавлено описание –exclude-client. Спасибо Christoph Berg за сообщение.
v11.0 · 2019-06-25
Этот выпуск pgBadger добавляет несколько важных возможностей и исправляет проблемы, о которых пользователи сообщили за предыдущие четыре месяца. Новые возможности:
Запросы, относящиеся к курсорам (DECLARE,CLOSE,FETCH,MOVE), объединены в новый тип запросов CURSOR.
Добавлен список запросов bind, создающих больше всего временных файлов. Требуется включить log_connection и log_disconnection.
Добавлен параметр командной строки –exclude-client для исключения записей журнала с указанным IP-адресом клиента. Его можно указывать несколько раз.
В фильтрах –begin и –end разрешено указывать только время.
Добавлен параметр -H, –html-dir для выбора отдельного пути записи HTML- отчётов в инкрементальном режиме. Двоичные файлы остаются в каталоге, заданном параметром -O, –outdir.
Добавлен параметр -E | –explode для разделения основного отчёта на один отчёт для каждой базы данных. Общие сведения, не относящиеся к конкретной базе, добавляются в отчёт базы postgres.
В инкрементальный режим добавлены отчёты по отдельным базам данных. Для каждой базы создаётся подкаталог со своими инкрементальными отчётами.
Добавлена поддержка формата PostgreSQL logplex от Heroku. Журнал можно разобрать командой:
heroku logs -p postgres | pgbadger -f logplex -o heroku.html -
Если запрос превышает 10 КБ, сначала все постоянные строковые параметры ограничиваются 30 символами, а затем запрос усекается до 10 КБ. Это не позволяет pgbadger тратить чрезмерное время или зависать на очень длинных запросах, например при вставке bytea. Предел 10 КБ настраивается параметром командной строки –maxlength. Запрос нормализуется или усекается до maxlength лишь после этой первой попытки уменьшить размер.
Новый выпуск нарушает обратную совместимость со старыми двоичными файлами и файлами JSON. Поэтому инкрементальный режим не сможет читать старые двоичные файлы. Если вы хотите обновить pgBadger и сохранить старые отчёты, выполняйте обновление в начале новой недели, иначе еженедельный отчёт будет повреждён. pgBadger выведет предупреждение и пропустит старый двоичный файл.
Также исправлены ошибки и улучшены возможности.
- Добавлено предупреждение о версии, несовместимый двоичный файл пропускается.
- Форматировщик кода обновлён до pgFormatter 4.0.
- Исправлено зависание pgbadger в Windows. Спасибо JMLessard за сообщение.
- Сценарий tools/pgbadger_tools обновлён для совместимости с новым двоичным форматом файлов pgBadger v11.
- Добавлен список запросов bind, создающих больше всего временных файлов. Сбор возможен, только если в postgresql.conf включены log_connection и log_disconnection. Спасибо Ildefonso Camargo за запрос функции.
- Исправлено автоматическое определение часового пояса. Спасибо massimosala за исправление.
- Удалены оставшиеся диаграммы при использовании –nograph.
- При использовании –normalized-only принудительно применяется расширение .txt.
- Исправлен отчёт auto vacuum/analyze для формата logplex. Спасибо Konrad zichul за сообщение.
- Исправлено использование индикатора выполнения в Windows. Спасибо JMLessard за сообщение.
- Для хранения времени журнала используется
$prefix_vars{'t_time'}. Спасибо Luca Ferrari за патч. - Из справки и документации вызовов pgbadger удалена команда perl. Спасибо Luca Ferrari за патч.
- В begin и end можно использовать время без даты. Спасибо Luca Ferrari за патч.
- В README внесены небольшие орфографические и грамматические исправления. Спасибо ofni yratilim за патч.
- Исправлены удалённые пути с SSH. Спасибо Luca Ferrari за патч.
- Регрессионный тест обновлён для новой структуры, появившейся с отчётами по БД.
- Исправлены дробные секунды во всех параметрах begin и end. Спасибо Luca Ferrari за патч.
- Исправлен URL документации. Спасибо Kara Mansel за сообщение.
- Исправлен разбор auto_explain. Добавлены сведения о том, что параметр -U можно указывать несколько раз. Спасибо Douglas J Hunley за сообщение.
- Внесено множество улучшений в HTML/CSS отчётов. Спасибо Pierre Giraud за патчи.
- Обновлён файл ресурсов.
- Добавлен регрессионный тест формата logplex.
- Добавлена поддержка формата PostgreSQL logplex от Heroku. Такие журналы можно разбирать следующим образом: heroku logs -p postgres | pgbadger -f logplex -o heroku.html - или, если вывод уже сохранён в файл: pgbadger heroku.log Формат logplex определяется автоматически, как и другие поддерживаемые форматы. pgBadger понимает следующий стандартный log_line_prefix: database = %d connection_source = %r sql_error_code = %e или сокращённый вариант: sql_error_code = %e Сообщите о других стандартных log_line_prefix. Префикс всегда можно задать параметром pgbadger -p | –prefix: pgbadger –p ‘base = %d source = %r sql_state = %e’ heroku.log например. Спасибо Anthony Sosso за запрос функции.
- Исправлена справка pgbadger по использованию URI.
- Исправлена подстановка в URI SSH, нарушенная предыдущим патчем. Спасибо Tobias Bussmann за сообщение.
- Разрешены URI с пробелом в пути к файлу журнала. Спасибо Tobias Bussmann за сообщение.
- Исправлены примеры URI в документации. Спасибо Tobias Bussmann за патч.
- t/02_basics.t больше не завершается ошибкой, если тест syslog длится более 10 секунд. Спасибо Christoph Berg за патч.
8.4 - Примечания к выпускам pgBadger 10.x
Здесь полностью сохранена история изменений pgBadger 10.x из исходного проекта, от новых версий к старым.
v10.3 · 2019-02-14
Это выпуск pgBadger с исправлениями нескольких проблем автоматического определения формата журнала и ещё одну ошибку разбора журнала pgBouncer, о которых сообщили пользователи. Также добавлена новая возможность:
Параметр -o | --outfile теперь можно указывать несколько раз, чтобы одной
командой вывести результат в нескольких форматах. Например:
pgbadger -o out.html -o out.json /log/pgsql-11.log
создаст два отчёта в форматах HTML и JSON и сохранит их в соответствующих
файлах.
Также исправлены ошибки и улучшены возможности.
- Исправлены статистические отчёты с фильтром по базе данных, пользователю, клиенту или приложению: некоторые запросы не попадали в отчёт.
- Исправлено автоматическое распознавание стандартного префикса строки журнала pg>=10.
- Исправлено автоматическое распознавание файла журнала с «нестандартным» префиксом. Если –prefix содержит %t, %m или %n и %p либо %c, выбирается формат stderr. Спасибо Alex Danvy за сообщение.
- Удалён лишний пробел в конце строки.
- Добавлен минимальный тест анализатора syslog.
- Исправлен вызов autodetect_format().
- При использовании maxlength оператор усекается. Спасибо Thibaud Madelaine за патч.
- Добавлен тест нескольких форматов вывода.
- Параметр -o | –outfile теперь можно указывать несколько раз, чтобы одной командой вывести результат в нескольких форматах. Например: pgbadger -o out.txt -o out.html -o - -x json /log/pgsql-11.log Здесь pgbadger создаст два отчёта в текстовом формате и HTML, сохранит их в соответствующих файлах и выведет отчёт JSON в стандартный вывод. Спасибо Nikolay за запрос функции.
- Определение формата вывода и назначение имени выходного файла перенесены в отдельную функцию set_output_extension().
- Исправлена ещё одна ошибка разбора журнала pgBouncer. Спасибо Douglas J. Hunley за сообщение.
v10.2 · 2018-12-27
Это выпуск pgBadger с исправлениями проблем, о которых пользователи сообщили за предыдущие три месяца. Также добавлены новые возможности:
- Добавлена поддержка формата журнала Stats из pgbouncer 1.8.
- Добавлена автоматическая корректировка часового пояса диаграмм JavaScript.
Добавлены новые параметры командной строки:
Добавлен параметр –exclude-db для построения отчёта обо всём, кроме указанной базы данных.
Добавлена загрузка удалённого файла журнала PostgreSQL по HTTP или FTP. Журнал разбирается во время загрузки командой curl и не сохраняется на диск. При удалённом разборе по SSH файл журнала PostgreSQL можно указать аргументом URI командной строки.
ssh://localhost/postgresql-10-main.log http://localhost/postgresql-10-main.log.gz ftp://localhost/postgresql-10-main.logДля протоколов HTTP и FTP формат журнала нужно указать в конце URI:
http://localhost/postgresql-10-main.log:stderrМожно указать несколько URI файлов журналов для разбора. Это полезно, когда журнал pgbouncer находится на удалённом узле, а журналы PostgreSQL — на локальном.
С протоколом SSH также можно использовать подстановочные знаки, как в удалённом режиме, например: ssh://localhost/postgresql-10-main.log*
Старый синтаксис разбора удалённого журнала с параметром -r по-прежнему работает, но устарел и может быть удалён в будущих версиях.
Также исправлены ошибки и улучшены возможности.
- Скорректировано завершение индикатора выполнения для файлов с оценочным размером (сжатых bz2 и удалённых сжатых файлов).
- Обновлён год в уведомлении об авторских правах.
- Добавлены сведения о записи URI для разбора удалённых журналов.
- По завершении разбора удалённого сжатого файла индикатор принудительно достигает 100%.
- Из запросов в отчётах о временных файлах извлекаются сведения о вызовах функций PL/pgSQL и добавляются в блок подробностей.
- Исправлен индикатор выполнения для файлов csv.
- Исправлено чтение двоичного файла как входного файла вместо журнала.
- HTML-вывод запросов кодируется в UTF8 во избежание сообщения “Wide character in print”. Спасибо Colin ’t Hart за сообщение.
- Для пикового расстояния добавлена пара ключ/значение Checkpoints distance.
- Исправлены разбор pgbouncer и отчёты о пропускной способности запросов. Спасибо Levente Birta за сообщение.
- Для формата ввода исправлено использование csvlog вместо csv.
- Добавлена поддержка формата журнала Stats из pgbouncer 1.8. Спасибо Levente Birta за сообщение.
- Добавлено предупреждение об отключении параллельной обработки с csvlog. Спасибо cstdenis за сообщение.
- В справку по -j и -J добавлены сведения о принудительном одном процессе для формата csvlog. Спасибо cstdenis за сообщение.
- Исправлена ошибка неизвестного формата строки в многострочном журнале при инкрементальном анализе по SSH. Спасибо Wooyoung Cho за сообщение.
- В команду curl добавлен параметр -k (–insecure) для загрузки журналов с сервера с самоподписанным сертификатом.
- Добавлена автоматическая корректировка часового пояса диаграмм JavaScript. Спасибо Massimino Sala за запрос функции.
- Добавлена загрузка файла журнала по HTTP средствами pgBadger, например: /usr/bin/pgbadger http://www.mydom.com/postgresql-10.log
- Файл разбирается во время загрузки командой curl.
- Исправлена документация. Спасибо 0xflotus за патч.
- После дополнительной очистки кода повторно применено исправление отсутствующей подстановки параметров привязки. Спасибо Bernhard J. M. Grun за сообщение.
- Добавлен параметр –exclude-db для отчёта обо всём, кроме указанной базы данных. Параметр можно указывать несколько раз.
v10.1 · 2018-09-12
Это выпуск pgBadger с исправлениями отчётов в инкрементальном режиме и многопроцессную обработку с параметром -j. Разбор журнала из стандартного ввода также был нарушен. Если вы используете v10.0, обновитесь сейчас.
- Добавлен тест анализатора журнала pgbouncer.
- Немного повышена производительность.
- Исправлена ошибка недопустимого файлового дескриптора в строке 12314 pgbadger.
- Удалён нежелательный перевод строки в индикаторе выполнения при запуске.
- Файлы CircleCI удалены из проекта.
- Удалены зависимости bats и jq для набора тестов; их заменили Test::Simple и JSON::XS.
- Добавлено больше тестов, особенно для инкрементального режима и ввода из stdin, нарушенного в версии 10.0.
- Синхронизированы pgbadger, POD и README, исправлены синтаксические ошибки. Спасибо Christoph Berg за патч.
- Добавлена документация по установке модуля Perl JSON::XS из репозиториев apt и yum.
- Исправлен URI CSS в инкрементальном режиме. Спасибо Floris van Nee за сообщение.
- Исправлена критическая ошибка при поиске журнала в STDIN. Спасибо Jacek Szpot за сообщение.
- Исправлено использование SED при сборке в OSX. Спасибо Steve Newson за патч.
- Исправлено недопустимое деление на ноль в инкрементальном режиме. Спасибо aleszeleny за сообщение.
- SQL::Beautify заменён версией 3.1 pgFormatter::Beautify.
v10.0 · 2018-09-09
Это основной выпуск pgBadger, добавляющий новые возможности и исправляющий все проблемы, о которых пользователи сообщили после предыдущего выпуска.
- Добавлена поддержка формата файла журнала pgbouncer syslog.
- Добавлена поддержка всех форматов auto_explain (text, xml, json и yaml).
- Добавлена поддержка заполнителя %q в log_line_prefix.
- Добавлен формат jsonlog расширения Michael Paquier; pgbadger сможет разобрать такой журнал с -f jsonlog.
- Форматировщик SQL заменён версией 3.0 pgFormatter.
Добавлены новые параметры командной строки:
- Добавлен параметр –prettify-json для форматирования вывода JSON.
- Добавлен параметр –log-timezone +/-XX, задающий число часов смещения часового пояса от GMT для корректировки даты/времени из журнала перед разбором. Если часовой пояс клиента отличается, возможно, всё равно потребуется скорректировать часовой пояс диаграммы с помощью -Z.
- Добавлен параметр –include-time, позволяющий выбрать нужные интервалы вместо исключения всех ненужных интервалов через –exclude-time.
Проект pgBadger и авторские права переданы от Dalibo автору и официальному сопровождающему проекта. Обновите ссылки:
- Сайт: http://pgbadger.darold.net/
- Исходный код: https://github.com/darold/pgbadger
Я хочу поблагодарить замечательную команду Dalibo за многолетний вклад в pgBadger, особенно Damien Clochard и Jean-paul Argudo за помощь в продвижении pgBadger.
- Исправлено отсутствие расстояния и оценки контрольных точек в инкрементальном режиме. Спасибо aleszeleny за сообщение.
- Исправлен заголовок отчёта одновременных сеансов pgbouncer. Спасибо Jehan Guillaume De Rorthais за сообщение.
- Добавлена поддержка формата журнала pgbouncer syslog. Спасибо djester за запрос функции.
- Исправлена ошибка при пустом удалённом журнале. Спасибо Parasit Hendersson за сообщение.
- Исправлен тест двоичного формата. Двоичный файл нужно генерировать, поскольку он зависит от платформы. Спасибо Michal Nowak за сообщение.
- Исправлен случай создания пустого плана explain.
- Исправлен разбор автоматически распознанного стандартного формата с префиксом в командной строке.
- Из Makefile.PL удалена зависимость от команды git.
- Обновлена документация изменений параметров и удаления части [%l-1] из обязательного префикса.
- Исправлен разбор системного использования vacuum/analyze в PostgreSQL 10. Спасибо Achilleas Mantzios за патч.
- Исправлена таблица Temporary File Activity.
- Удалена зависимость от git при установке.
- Добавлен параметр –log-timezone +/-XX, задающий число часов смещения от GMT для корректировки даты/времени из журнала перед разбором. Он затрудняет поиск по дате/времени, поскольку время будет отличаться от записанного в журнале. Если часовой пояс клиента отличается, возможно, всё равно придётся корректировать часовой пояс диаграмм с помощью -Z. Спасибо xdexter за запрос функции и Julien Tachoire за патч.
- Добавлена поддержка формата вывода auto_explain json. Спасибо dmius за сообщение.
- Исправлены анализатор auto_explain и двойной учёт запросов. Спасибо zam6ak за сообщение.
- Регулярное выражение контрольных точек адаптировано к сообщениям журнала PostgreSQL 10. Спасибо Edmund Horner за патч.
- В описание -f | –format добавлены сведения о формате jsonlog.
- Исправлена нормализация запросов, чтобы не создавать дубликаты запросов bind. Значения теперь нормализуются в один ?, а не в 0 для чисел и две одинарные кавычки для строк. Спасибо vadv за сообщение.
- Исправлен подсчёт уровней журнала. Спасибо Jean-Christophe Arnu за сообщение.
- pgbadger приведён в большее соответствие с проверкой голых имён подпрограмм B::Lint.
- Устранены замечания perlcritic.
- Добавлен параметр –prettify-json для форматирования вывода JSON. По умолчанию весь вывод занимает одну строку.
- Исправлен отчёт распределения Events.
- Исправлена ошибка –prefix при нескольких %% в log_line_prefix. Спасибо svb007 за сообщение.
- Добавлен параметр –log-timezone +/-XX, задающий число часов смещения от GMT для корректировки даты/времени из журнала перед разбором. Он затрудняет поиск по дате/времени, поскольку время будет отличаться от записанного в журнале. Если часовой пояс клиента отличается, возможно, всё равно придётся корректировать диаграммы с помощью -Z. Спасибо xdexter за запрос функции.
- INDEXES удалено из списка ключевых слов, а BUFFERS добавлено.
- Исправлена нормализация запросов с курсорами.
- Удалены Dockerfile и документация docker run. pgBadger поставляется как один сценарий Perl без зависимостей и работает на любой платформе. Запускать pgbadger в Docker не имеет смысла: если вы не хотите ничего устанавливать, просто скопируйте файл pgbadger в нужное место и запустите его.
- Исправлена повреждённая сетка при отсутствии активности временных файлов. Спасибо Pierre Giraud за патч.
- В документацию добавлено предупреждение о log_min_duration_statement в сравнении с log_duration + log_statement. Спасибо Julien Tachoire за патч.
- Смещение часового пояса применяется к столбчатым диаграммам. Спасибо Julien Tachoire за патч.
- При ошибке для того же PID удаляются текущие сведения о временном файле. Спасибо Julien Tachoire за патч.
- В примерах последовательно используется app= и поддерживается appname=. В некоторых примерах префикса использовалось appname=, но код не распознавал этот токен. Теперь во всех примерах используется app=, а appname= добавлен в анализатор префикса. Спасибо Christoph Berg за патч.
- Исправлено длинное имя параметра -J: должно быть –Jobs вместо –job_per_file. Спасибо Chad Trabant за сообщение и Etienne Bersac за патч.
- Файлы blib игнорируются. Спасибо Etienne Bersac за патч.
- Добавлены тесты согласованности. Спасибо damien clochard за патч.
- Документация обновлена: stderr не является значением -f по умолчанию. Спасибо Christophe Courtois за патч.
- POD и README всегда обновляются. Спасибо Etienne Bersac за патч.
- Добавлены регрессионные тесты. Спасибо Etienne Bersac за патч.
- Добавлена конфигурация editorconfig. Спасибо Etienne Bersac за патч.
- Временные файлы vi удалены из gitignore. Спасибо Etienne Bersac за патч.
- Добавлен параметр –include-time, позволяющий выбрать нужные интервалы, вместо исключения всех ненужных. Это удобно для просмотра одного-двух дней из недельных журналов: несколько –exclude-time заменяются одним –include-time. Спасибо Wesley Bowman за патч.
- Проверяется синтаксис POD. Спасибо Etienne Bersac за патч.
- Для документирования тестов добавлен HACKING. Спасибо Etienne Bersac за патч.
- Удалён устаревший параметр –bar-graph. Спасибо Etienne Bersac за патч.
- Удалён вводящий в заблуждение .perltidyrc. Файл датирован 2012 годом, а код pgbadger далёк от соответствия ему; унифицированный diff perltidy занимает 10 тысяч строк. Спасибо Etienne Bersac за патч.
- Исправлено использование неинициализированного значения при форматировании SQL. Спасибо John Krugger и Jean-paul Argudo за сообщения.
8.5 - Примечания к выпускам pgBadger 9.x
Здесь полностью сохранена история изменений pgBadger 9.x из исходного проекта, от новых версий к старым.
v9.2 · 2017-07-27
Этот выпуск pgBadger с исправлениями добавляет несколько новых возможностей.
- Добавлен отчёт о расстоянии и оценке контрольных точек.
- В форматировщик кода SQL добавлена поддержка ключевых слов AWS Redshift.
- В удалённый режим добавлено автоматическое определение формата журнала, позволяющее удалённо разбирать журнал pgbouncer вместе с журналом PostgreSQL.
Также исправлены ошибки и улучшены возможности.
- Исправлены отчёты с гистограммой, не отображавшей данные выше последнего диапазона.
- Исправлен разбор journalctl без шаблона номера строки журнала ([%l-n]). Спасибо Christian Schmitt за сообщение.
- Добавлен отчёт о расстоянии и оценке контрольных точек. Спасибо jjsantam за запрос функции.
- Дополнено описание действий сценария обновления файлов CSS и JavaScript tools/updt_embedded_rsc.pl.
- Если все файлы журналов пусты, предупреждение не выводится, код завершения — 0.
- В build_log_line_prefix_regex() исправлено отсутствие %n при поиске в %regex_map. Спасибо ghosthound за патч.
- Уровень ошибки “FATAL: cannot use CSV” изменён на WARNING. Спасибо kong1man за сообщение.
- Исправлено предупреждение об использовании неинициализированного значения. Спасибо Payal за сообщение.
- Permission denied добавлено в нормализацию ошибок.
- pgbadger обновлён до последнего коммита pgFormatter 5bdc018.
- Добавлена поддержка ключевых слов AWS Redshift. Спасибо cavanaug за запрос функции.
- Исправлено отсутствие запроса в отчёте о временных файлах, если запрос был отменён. Спасибо Fabrizio de Royes Mello за сообщение.
- Запрос с параметрами привязки нормализуется с заменой на ?.
- Добавлена проверка, предотвращающая конечное время раньше начального. Спасибо Christophe Courtois за патч.
- Исправлено множество опечаток и грамматических ошибок. Название ‘pgBadger’ используется для программы, но не двоичного файла; применяются официальные написания PgBouncer, GitHub и CSS. Файл POD синхронизирован с README. Спасибо Euler Taveira за патч.
- Исправлено меню: при –disable-type проверка top_cancelled_info и закрытие списка должны находиться внутри проверки disable_type. Заодно выровнена проверка disable_lock. Спасибо Euler Taveira за патч.
- Исправлено использование неинициализированного значения. Спасибо johnkrugger за сообщение.
- Удалена попытка читать удалённый файл журнала при автоматическом определении формата. Спасибо clomdd за сообщение.
- В удалённый режим добавлено автоматическое определение формата для разбора журнала pgbouncer вместе с журналом PostgreSQL.
- Исправлено неверное увеличение числа сеансов после проверки строки журнала. Спасибо Achilleas Mantzios за сообщение.
- Незначительно переформатировано описание pgBadger.
- Удалены повторяющиеся сведения из документации. Спасибо cscatolini за патч.
v9.1 · 2017-01-24
Этот выпуск pgBadger с исправлениями добавляет несколько новых возможностей.
- Добавлен отчёт о распределении классов ошибок, когда SQLState доступен в log_line_prefix (см. заполнитель %e).
- Форматировщик SQL обновлён до кода pgFormatter v1.6.
- Улучшена нормализация сообщений об ошибках.
- Добавлен параметр –normalized-only для создания текстового файла со всеми найденными в журнале нормализованными запросами и их количеством.
- Разрешено использовать %c (идентификатор сеанса) вместо %p (PID) как уникальный идентификатор сеанса.
- Сообщения об ожидании блокировок добавлены в отчёты событий.
- Добавлен параметр –start-monday, начинающий календарную неделю с понедельника, а не с воскресенья по умолчанию.
Также исправлены ошибки и улучшены возможности.
- Добавлен отчёт о распределении классов ошибок, когда SQLState доступен в префиксе строки журнала. Спасибо jacks33 за запрос функции.
- Исправлен глобальный инкрементальный индекс при изменении размера. Спасибо clomdd за сообщение.
- Заполнитель %i для тега команды в log_line_prefix теперь допускает пробел.
- Исправлены параметры –exclude-line и удаление устаревшего каталога при включённом хранении с –noreport.
- Исправлена опечатка в “vacuum activity table”. Спасибо Nicolas Gollet за патч.
- Исправлен отчёт autovacuum. Спасибо Nicolas Gollet за патч.
- Исправлены автор логотипа pgbadger — Damien Cazeils — и английский текст комментариев. Спасибо Thibaut Madelaine за патч.
- В параметр -f добавлены сведения о формате журнала pgbouncer. Спасибо clomdd за сообщение.
- В документацию добавлены сведения о –normalized-only.
- Исправлен повреждённый отчёт даты и времени из предыдущего патча.
- Исправлено сопоставление длительности и запроса при log_duration=on и log_statement=all. Спасибо Eric Jensen за сообщение.
- Исправлена нормализация сообщений о рекомендательных блокировках. Спасибо Thibaut Madelaine за сообщение.
- Исправлен отчёт вывода auto_explain. Спасибо fch77700 за сообщение.
- Устранено нежелательное автоматическое определение формата журнала по записи из stdin. Спасибо Jesus Adolfo Parra за сообщение.
- Открывающая круглая скобка добавлена в стоп-символы регулярного выражения поиска клиента БД в префиксе, чтобы поддержать строку клиента PostgreSQL с исходным портом. Спасибо Jon Nelson за патч.
- Исправлены орфографические ошибки. Спасибо Jon Nelson за патч.
- Разрешено использовать %c (идентификатор сеанса) вместо %p (PID) как уникальный идентификатор сеанса. Спасибо Jerryliuk за сообщение.
- pgbadger может разбирать стандартный log_line_prefix, вероятно используемый в 10.0: ‘%m [%p] '
- Восстановлена отсутствовавшая первая строка с вызовом интерпретатора.
- Исправлено отсутствие значений Avg в отчёте CSV. Спасибо Yosuke Tomita за сообщение.
- Исправлено сообщение об ошибке в методе autodetect_format().
- Добавлен –start-monday, начинающий календарную неделю с понедельника вместо воскресенья. Спасибо Joosep Mae за запрос функции.
- Исправлен параметр –histo-average. Спасибо Yves Martin за сообщение.
- Из документации удалена форма множественного числа –ssh-option. Спасибо mark-a-s за сообщение.
- Исправлен фильтр –exclude-time; переписан код пропуска нежелательных строк и обновления индикатора выполнения. Спасибо Michael Chesterton за сообщение.
- Исправлена поддержка заполнителя %r в префиксе вместо %h.
v9.0 · 2016-09-02
Этот основной выпуск pgBadger переносит интерфейс на Bootstrap 3 и обновляет версии всех файлов ресурсов (CSS и JavaScript). Также исправлены ошибки и улучшены возможности.
Возможно сохранение обратной совместимости со старыми инкрементальными отчётами.
Исходный код и лицензии файлов ресурсов теперь находятся в отдельном подкаталоге. Добавлен сценарий обновления их минифицированных версий, встроенных в сценарий pgbadger. Спасибо Christoph Berg за помощь и запрос функции.
Если включён log_connection, а log_line_prefix не содержит пользователя, базы данных и узла, предпринимается попытка определить их из строк соединения.
Расширены регулярные выражения для автоматического определения имени базы данных, пользователя, IP-адреса клиента и имени приложения. Теперь они такие:
db => qr/(?:db|database)=([^,]*)/; user => qr/(?:user|usr)=([^,]*)/; client => qr/(?:client|remote|ip|host)=([^,]*)/; appname => qr/(?:app|application)=([^,]*)/;Добавлена обратная совместимость инкрементального режима со старыми версиями pgbadger: для новых файлов CSS и JavaScript создаётся подкаталог, названный номером основной версии pgbadger.
Увеличен логотип pgbadger, который выглядел слишком маленьким с новым размером шрифта.
Нормализованы подробные сведения во всех отчётах.
Удалён повторяющийся значок копирования в отчёте блокировок.
Восстановлена отсутствовавшая диаграмма гистограммы времени сеансов. Спасибо Guillaume Lelarge за сообщение.
Добавлен файл LICENSE с лицензиями файлов ресурсов. Спасибо Christoph Berg за патч.
В библиотеку jqplot добавлен патч, устраняющий бесконечный цикл при попытке загрузить некоторые диаграммы. Спасибо Julien Tachoires за помощь в решении проблемы.
Сценарий tools/updt_embedded_rsc.pl применяет патч к файлу ресурсов resources/jquery.jqplot.js и не сообщает об ошибке, если патч уже применён.
Удалена последняя одиночная запятая в конце набора данных круговой диаграммы. Спасибо Julien Tachoires за сообщение.
Изменено отображение нормализованной ошибки.
Удалены неиспользуемые и автоматически создаваемые файлы.
Обновлены все файлы ресурсов (JS и CSS), создан каталог с исходным кодом библиотек JavaScript, используемых в pgbadger. Новый сценарий tools/updt_embedded_rsc.pl создаёт минифицированные версии этих файлов и встраивает их в pgbadger. Он также встраивает открытый шрифт TrueType FontAwesome.otf в файл fontawesome.css.
9 - Поддержка и участие в разработке
pgBadger развивается как открытый проект. Сообщения об ошибках, предложения функций, исправления документации и патчи принимаются через репозиторий исходного проекта на GitHub.
Ошибки и запросы функций
- Обновитесь до самой новой выпущенной версии и убедитесь, что проблема сохраняется.
- Поищите готовый ответ среди открытых задач и закрытых задач .
- Сведите проблему к минимальному безопасному фрагменту журнала и командной строке, на которых она всё ещё воспроизводится.
- Удалите учётные данные, конфиденциальный SQL, значения параметров, имена узлов, адреса и деловые данные.
- Создайте новую задачу , указав версию pgBadger, операционную систему, формат ввода, точные параметры, наблюдаемый и ожидаемый результаты.
При аварийном завершении или ошибке синтаксического анализатора приложите только минимальный очищенный набор строк журнала, необходимый для воспроизведения проблемной границы. Полный производственный журнал или сгенерированный отчёт почти никогда не следует публиковать в общедоступной задаче.
Отправка патча
Проект содержит файл .editorconfig, обеспечивающий единообразные отступы. Если изменение влияет на видимое пользователю поведение, синхронно обновляйте справку команд, POD и сгенерированную документацию Markdown.
В исходном проекте документация обновляется так:
doc/pgBadger.pod — основной развёрнутый источник. Команда pgbadger --help формирует краткую справку, а файлы README являются сгенерированными представлениями. Перед отправкой запроса на слияние запустите соответствующие тесты.
Коммерческая поддержка
Лицензия проекта pgBadger не предусматривает обязательств по сопровождению или поддержке. Для платной помощи с журналированием PostgreSQL, анализом производительности или автоматизацией отчётов обратитесь к каталогу профессиональных услуг PostgreSQL .
10 - Лицензия и благодарности
pgBadger — свободное программное обеспечение с открытым исходным кодом, распространяемое по лицензии PostgreSQL. Его можно бесплатно использовать, копировать, изменять и распространять при условии сохранения уведомлений об авторских правах и лицензии.
Лицензия PostgreSQL
Copyright (c) 2012-2026, Gilles Darold
Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.
IN NO EVENT SHALL Darold BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF Darold HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Darold SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN “AS IS” BASIS, AND Darold HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
Авторы и создатели дизайна
- pgBadger — оригинальная работа Gilles Darold.
- Логотип pgBadger — оригинальная работа Damien Cazeils.
- Дизайн pgBadger версии 4.x создан компанией «Art is code».
- Сайт создан Gilles Darold.
- Участники проекта упомянуты в разных частях исходного ChangeLog.
Встроенные ресурсы и ресурсы отчётов
В pgBadger встроена изменённая версия модуля Perl SQL::Beautify. Авторские права © 2009 Jonas Kramer; модуль опубликован по лицензии Artistic License 2.0.
Ресурсы сгенерированных отчётов сопровождаются собственными уведомлениями, в том числе:
| Компонент | Лицензия |
|---|---|
| bean.js, Bootstrap, jQuery, Underscore | MIT |
| jqPlot | MIT или GPL-2.0 по выбору пользователя |
| Шрифт Font Awesome | SIL Open Font License 1.1 |
| CSS Font Awesome | MIT |
Локальный снимок исходного кода сохраняет полный файл resources/LICENSE из исходного проекта. Включённые примеры отчётов являются историческими сгенерированными артефактами и сохраняют исходные встроенные уведомления и версии ресурсов.
Снимок документации
Эта редакция pig.center преобразует исходную документацию в страницы Hugo, добавляет навигацию и средства чтения на нескольких языках и сохраняет точный текст справки команд и ChangeLog там, где важна дословность. Исходная документация pgBadger остаётся под лицензией PostgreSQL; оригинальные названия проектов, сведения об авторстве и ссылки на исходный проект сохранены.