Перейти к содержанию

Примечания к выпускам pgBadger 11.x

Полные примечания исходного проекта к серии выпусков 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 за патч.