pgbadger
pgbadger — инструмент для быстрого анализа журналов Postgres Pro с созданием подробных отчётов и графиков
Синтаксис
pgbadger
[параметр_подключения
...] [параметр
...] [файл_журнала
...]
Описание
pgbadger — это анализатор журналов Postgres Pro/PostgreSQL, который быстро строит подробные отчёты, обрабатывая файлы журналов сервера. pgbadger поставляется вместе с Postgres Pro как отдельный скрипт на языке Perl.
В качестве файла_журнала
можно передать отдельный файл, список файлов, или команду, выдающую список файлов. Если передать «-», содержимое журнала будет считываться из стандартного ввода.
Анализатор запросов pgbadger может обрабатывать огромные файлы журналов и сжатые файлы. Он может автоматически определять формат файла журнала (syslog, stderr, csvlog или jsonlog), если файл достаточно большой. Поддерживаемые форматы сжатия: gzip, bzip2, lz4, xz, zip и zstd. Для формата xz у вас должна быть установлена версия xz выше 5.05, которая поддерживает параметр --robot
. Чтобы pgbadger определял размер несжатого файла для формата lz4, файл должен быть сжат с использованием параметра --content-size
.
pgbadger поддерживает любой формат префиксов строк журнала, который можно задать в параметре log_line_prefix в файле конфигурации postgresql.conf
, при условии, что указаны как минимум %t
и %p
.
Также могут быть проанализированы файлы журналов pgbouncer.
Для ускорения разбора журнала можно использовать режимы многопоточной обработки: выделять несколько ядер для нескольких файлов журнала или несколько ядер для одного файла. Эти режимы также можно сочетать.
pgbadger также может анализировать удалённые файлы журналов, получаемые через SSH-соединение без пароля. Этот режим может использоваться со сжатыми файлами и даже поддерживает многопоточность с выделением нескольких ядер на файл.
Примеры отчётов можно найти на странице https://pgbadger.darold.net/#reports.
Ограничения #
pgbadger в настоящее время имеет следующие ограничения:
Многопоточная обработка не поддерживается при чтении сжатых файлов журналов и CSV-файлов, а также в Windows.
Файлы журналов формата CSV не могут быть обработаны удалённо.
Журналы csvlog не могут быть переданы из стандартного ввода.
Подготовка и настройка #
pgbadger поставляется вместе с Postgres Pro Standard в виде отдельного пакета pgbadger
(подробные инструкции по установке приведены в Главе 16). Установив pgbadger, настройте его, как описано далее.
Подготовка для обработки определённых форматов журнала (необязательно)
Если вы планируете анализировать файлы журналов CSV, установите Perl-модуль Text::CSV_XS
.
Подготовка для экспорта статистики (необязательно)
Если вы хотите экспортировать статистику в формате JSON, установите Perl-модуль JSON::XS
:
Чтобы установить этот дополнительный модуль:
В системах на базе Debian запустите:
sudo apt-get install libjson-xs-perl
В RPM-системе запустите:
sudo yum install perl-JSON-XS
Подготовка для обработки сжатых файлов журнала (необязательно)
По умолчанию pgbadger автоматически определяет формат сжатого файла журнала по расширению файла и соответствующим образом использует утилиты распаковки:
zcat для
gz
bzcat для
bz2
lz4cat для
lz4
zstdcat для
zst
unzip или xz для
zip
илиxz
Если необходимая утилита находится вне каталогов, указанных в PATH
, задайте путь к ней в параметре командной строки --zcat
. Например:
--zcat="/usr/local/bin/gunzip -c" или --zcat="/usr/local/bin/bzip2 -dc" --zcat="C:\tools\unzip -p"
Примечание
Благодаря автоопределению формата сжатых файлов вы можете использовать разные форматы журналов gz, bz2, lz4, xz, zip и zstd. Однако если вы зададите своё значение --zcat
, обрабатывать сжатые файлы разных форматов не получится.
Настройка сервера Postgres Pro
Установите определённые параметры конфигурации в файле postgresql.conf
:
Настройте журналирование SQL-запросов.
Чтобы включить журналирование SQL-запросов и получать в статистике запросов собственно текст этих запросов, установите
log_min_duration_statement = 0
На нагруженном сервере вы можете задать ненулевое значение, чтобы в журнал вносились только запросы с большей продолжительностью.
Если вам нужна только информация о продолжительности и количестве запросов, а не подробные сведения о них, установите для log_min_duration_statement значение -1, при котором запись операторов по длительности отключается, и включите log_duration.
При включении
log_min_duration_statement
добавятся отчёты о самых медленных запросах и запросах, которые заняли больше всего времени. Обратите внимание: если вы установите для log_statement значениеall
, параметрlog_min_duration_statement
не будет работать.Предупреждение
Не устанавливайте для
log_min_duration_statement
неположительные значения одновременно с включениемlog_duration
иlog_statement
, так как в результате нарушится подсчёт запросов и значительно увеличится размер журнала. Всегда предпочтительнее устанавливатьlog_min_duration_statement
.Установите префикс строк журнала в log_line_prefix.
Он должен включать как минимум спецпоследовательность времени (
%t
,%m
или%n
) и спецпоследовательность, идентифицирующую процесс (%p
или%c
). Например, для журналов stderr параметр должен содержать как минимумlog_line_prefix = '%t [%p]: '
В префикс строк журнала также можно добавить имя пользователя, базы данных, приложения и IP-адрес клиента. Например
для журналов stderr:
log_line_prefix = '%t [%p]: user=%u,db=%d,app=%a,client=%h '
или
log_line_prefix = '%t [%p]: db=%d,user=%u,app=%a,client=%h '
и для журналов syslog:
log_line_prefix = 'user=%u,db=%d,app=%a,client=%h '
или
log_line_prefix = 'db=%d,user=%u,app=%a,client=%h '
Чтобы получить больше информации из файлов журналов, задайте следующие параметры конфигурации:
log_checkpoints = on log_connections = on log_disconnections = on log_lock_waits = on log_temp_files = 0 log_autovacuum_min_duration = 0 log_error_verbosity = default
Чтобы этот набор параметров работал, не включайте log_statement, так как pgbadger не сможет разобрать получившийся журнал.
Установите язык, на котором сервер будет выводить сообщения; сообщения должны быть на английском языке с поддержкой локали или без неё:
lc_messages='C'
или
lc_messages='en_US.UTF-8'
Локали других языков, например
ru_RU.utf8
, не поддерживаются.
Использование #
Ниже приведены простые примеры, иллюстрирующие различные аспекты использования pgbadger.
pgbadger /var/lib/pgpro/std-17/data/log/postgresql-2022-01-14_000000.log pgbadger /var/lib/pgpro/std-17/data/log/postgres.log.2.gz /var/lib/pgpro/std-17/data/log/postgres.log.1.gz /var/lib/pgpro/std-17/data/log/postgresql-2022-01-14_000000.log pgbadger /var/lib/pgpro/std-17/data/log/postgresql/postgresql-2022-01-* pgbadger --exclude-query="^(COPY|COMMIT)" /var/lib/pgpro/std-17/data/log/postgresql-2022-01-14_000000.log pgbadger -b "2022-01-25 10:56:11" -e "2022-01-25 10:59:11" /var/lib/pgpro/std-17/data/log/postgresql-2022-01-25-0000.log cat /var/lib/pgpro/std-17/data/log/postgresql-2022-01-14_000000.log | pgbadger - # Префикс строк журнала, выводимого в stderr pgbadger --prefix '%t [%p]: user=%u,db=%d,client=%h' /var/lib/pgpro/std-17/data/log/postgresql-2022-08-21* pgbadger --prefix '%m %u@%d %p %r %a : ' /var/lib/pgpro/std-17/data/log/postgresql-2022-08-21-0000.log # Префикс строк журнала, выводимого в syslog pgbadger --prefix 'user=%u,db=%d,client=%h,appname=%a' /var/lib/pgpro/std-17/data/log/postgresql-2022-08-21* # Использовать 8 ядер для ускорения обработки 10-гигабайтного файла pgbadger -j 8 /var/lib/pgpro/std-17/data/log/postgresql-2022-08-21-0000.log # Задание cron, которое еженедельно формирует отчёт об ошибке 30 23 * * 1 /usr/bin/pgbadger -q -w /var/lib/pgpro/std-17/data/log/postgresql-2022-01*.log -o /var/www/pg_reports/pg_errors.html
Указание удалённых файлов журнала
Удалённые файлы журналов для анализа задаются посредством URI. Поддерживаемые протоколы: HTTP[S] и [S]FTP. Для загрузки файлов будет использоваться команда curl
, и разбираться они будут сразу во время загрузки. Также поддерживается протокол SSH, в этом случае для загрузки файлов применяется команда ssh
, как и при использовании параметра --remote-host
.
Для указания удалённых файлов журналов вы можете использовать такие URI:
pgbadger http://172.12.110.1//var/lib/pgpro/std-17/data/log/postgresql-2022-01-14_000000.log pgbadger ftp://username@172.12.110.14/postgresql-2022-01-14_000000.log pgbadger ssh://username@172.12.110.14:2222//var/lib/pgpro/std-17/data/log/postgresql-2022-01-14_000000.log*
Также возможно обрабатывать одновременно и локальные, и удалённые файлы журналов Postgres Pro (в том числе, журнал pgbouncer):
pgbadger /var/lib/pgpro/std-17/data/log/postgresql-2022-01-14_000000.log ssh://username@172.12.110.14/pgbouncer.log
Параллельная обработка
Чтобы включить параллельную обработку, укажите параметр -j
, где N
N
— количество используемых ядер.
Параллельная обработка в pgbadger выполняется по следующему алгоритму:
Для каждого файла журнала размер порции = int(размер файла / N) определить начальное/конечное смещение этих порций породить N процессов и искать начальное смещение каждого фрагмента завершать каждый процесс разбора по достижении конечного смещения его фрагмента записать статистику, собранную процессом, во временный бинарный файл дождаться завершения всех дочерних процессов Затем все сгенерированные бинарные временные файлы считываются и загружаются в память для формирования выходного html.
Когда применяется этот метод, pgbadger может усечь или пропустить в начале/конце порций максимум N
запросов на файл журнала, что вряд ли имеет значение, если в вашем файле журнала миллионы запросов. Вероятность того, что потеряется именно интересующий вас запрос, близка к нулю, так что потерю такого объёма можно считать приемлемой. В большинстве случаев запрос учитывается дважды, но в усечённом виде.
Если у вас много небольших файлов журналов и много ядер, для ускорения лучше выделить одно ядро на один файл журнала. Чтобы включить такое поведение, укажите параметр -J
. Таким образом, вы можете быть уверены, что не потеряете ни одного запроса в отчётах. Например, если обрабатывать 200 файлов по 10 Мбайт каждый, параметр N
-J
начинает показывать свою эффективность с 8 ядрами.
Ниже представлены результаты теста, полученные при обработке на сервере с 8 ядрами одного файла размером 9,5 гигабайт.
Параметр | 1 ядро | 2 ядра | 4 ядра | 8 ядер ----------+---------+---------+---------+-------- -j | 1h41m18 | 50m25 | 25m39 | 15m58 -J | 1h41m18 | 54m28 | 41m16 | 34m45
С 200 файлами журналов по 10 мегабайт каждый, что в сумме составляет 2 гигабайта, результаты немного отличаются:
Параметр | 1 ядро | 2 ядра | 4 ядра | 8 ядер ----------+---------+--------+--------+-------- -j | 20m15 | 9m56 | 5m20 | 4m20 -J | 20m15 | 9m49 | 5m00 | 2m40
Поэтому рекомендуется использовать -j
, кроме случаев, когда нужно обработать сотни небольших файлов и имеется минимум 8 ядер.
Важно
Во время параллельной обработки pgbadger создаёт множество временных файлов с именами tmp_pgbadgerXXXX.bin
в каталоге /tmp
и удаляет их в конце.
Создание инкрементальных отчётов
Следующий пример задания cron демонстрирует создание отдельных еженедельных отчётов, в предположении, что осуществляется еженедельная ротация файлов журналов:
0 4 * * 1 /usr/bin/pgbadger -q `find /var/lib/pgpro/std-17/data/log/ -mtime -7 -name "postgresql.log*"` -o /var/www/pg_reports/pg_errors-`date +\%F`.html -l /var/reports/pgbadger_incremental_file.dat
Вы можете включить режим автоматического создания инкрементальных отчётов pgbadger, воспользовавшись параметром -I
/--incremental
. В этом режиме pgbadger создаёт один отчёт в день и один накопительный отчёт в неделю. Результаты обработки журналов сначала сохраняются в двоичном формате, в каталоге, задаваемом параметром -O
/--outdir
, а затем строятся ежедневные и еженедельные HTML-отчёты с индексным файлом. В индексном файле отображаются раскрывающиеся меню по неделям со ссылкой на недельный отчёт и ссылками на отчёты по дням недели. Например, вы можете запустить pgbadger с ежедневной ротацией файла следующим образом:
0 4 * * * /usr/bin/pgbadger -I -q /var/lib/pgpro/std-17/data/log/postgresql/postgresql.log.1 -O /var/www/pg_reports/
Вы получите все ежедневные и еженедельные отчёты. В этом режиме pgbadger автоматически создаёт инкрементальный файл в выходном каталоге, поэтому задавать параметр -l
не нужно, если вы не хотите изменить путь к этому файлу. Это означает, что вы можете запускать pgbadger в этом режиме каждый день с файлом журнала, который заменяется каждую неделю, и при этом записи журнала не будут учитываться дважды. Для экономии места на диске вы можете использовать параметр командной строки -X
/--extra-files
, чтобы pgbadger записывал ресурсы CSS и JavaScript в отдельные файлы в выходном каталоге. Тогда эти ресурсы будут подключены с использованием тегов script и link.
В инкрементальном режиме вы также можете указать, сколько недель должно сохраняться в отчёте, воспользовавшись параметром -O
/--retention
:
/usr/bin/pgbadger --retention 2 -I -q /var/lib/pgpro/std-17/data/log/postgresql/postgresql.log.1 -O /var/www/pg_reports/
Если запуск pg_dump запланирован на 23:00 и 13:00 каждый день, вы можете исключить эти периоды из отчёта следующим образом:
pgbadger --exclude-time "2013-09-.* (23|13):.*" postgresql.log
Это поможет избежать появления операторов COPY
, которые выдаёт pg_dump, в верху списка самых медленных запросов. Вы также можете использовать --exclude-appname "pg_dump"
, чтобы решить эту проблему более простым способом.
Перестроение отчётов
Чтобы обновить все HTML-отчёты после исправления или расширения функциональности отчётов pgbadger, вы можете перестроить инкрементальные отчёты, если двоичный файл данных сохранился. Для этого выполните:
rm /path/to/reports/*.js rm /path/to/reports/*.css pgbadger -X -I -O /var/www/pg_reports/ --rebuild
При этом также будут обновлены все файлы ресурсов (JavaScript и CSS). Добавьте параметр -E
/--explode
, если он использовался при создании отчётов.
Создание месячных отчётов
По умолчанию в инкрементальном режиме pgbadger создаются только ежедневные и еженедельные отчёты. Чтобы получить месячный накопительный отчёт, нужно отдельно запустить pgbadger с соответствующим параметром. Например, чтобы создать отчёт за август 2021 года, запустите:
pgbadger -X --month-report 2021-08 /var/www/pg_reports/
В результате в представление календаря с инкрементальными отчётами будет добавлена связанная с названием месяца ссылка на этот месячный отчёт. Построение отчёта за месяц можно запускать каждый день, и этот отчёт будут перестраиваться заново. По умолчанию такие отчёты не строятся, так как они могут формироваться слишком долго. Как и при перестроении отчётов, если отчёты создавались с параметром -E
/--explode
(включающим разбиение отчёта по базам данных), его необходимо указать и при построении месячного отчёта:
pgbadger -E -X --month-report 2021-08 /var/www/pg_reports/
Выбор формата файла отчёта
Формат файла отчёта pgbadger определяется расширением файла, переданного параметру -o
/--outfile
.
Для создания настраиваемых инкрементальных и накопительных отчётов используйте двоичный формат (-o
*.bin
).
Например, чтобы ежечасно обновлять отчёт pgbadger из ежедневного файла журнала, вы можете каждый час запускать следующие команды:
# Создать файлы инкрементальных данных в двоичном формате pgbadger --last-parsed .pgbadger_last_state_file -o sunday/hourX.bin /var/lib/pgpro/std-17/data/log/postgresql-Sun.log # Создать новый HTML-отчёт из сгенерированного двоичного файла pgbadger sunday/*.bin
В качестве другого примера предположим, что у вас каждый час создаётся новый файл журнала. Чтобы отчёты перестраивались при каждой ротации журнала, выполните:
pgbadger -o day1/hour01.bin /var/lib/pgpro/std-17/data/log/postgresql-2022-01-23_10.log pgbadger -o day1/hour02.bin /var/lib/pgpro/std-17/data/log/postgresql-2022-01-23_11.log pgbadger -o day1/hour03.bin /var/lib/pgpro/std-17/data/log/postgresql-2022-01-23_12.log ...
А чтобы обновлять HTML-отчёт, например, каждый раз после создания нового двоичного файла, просто запустите:
pgbadger -o day1_report.html day1/*.bin
Настройте команды в соответствии с вашими потребностями.
Применяйте формат JSON (-o
*.json
) для обмена данными с другими языками и для облегчения использования вывода pgbadger другими средствами мониторинга, такими как Cacti или Graphite.
Вы можете использовать и другие форматы вывода, соответствующие вашим потребностям. Например, следующая команда создаст XML-файл сеансов Tsung только для запросов SELECT
:
pgbadger -S -o sessions.tsung --prefix '%t [%p]: user=%u,db=%d ' /var/lib/pgpro/std-17/data/log/postgresql-2022-01-14_000000.log
Параметры #
В этом разделе описываются параметры командной строки pgbadger.
-a
минуты
--average
#минуты
Указывает длительность интервала (в минутах) для построения графика усреднённых значений для запросов и подключений.
По умолчанию: 5.
-A
минуты
--histo-average
#минуты
Указывает длительность интервала (в минутах) для построения гистограмм для запросов.
По умолчанию: 60.
-b
дата_время
--begin
#дата_время
Указывает дату/время начала диапазона анализируемых данных в журналах.
-c
сервер
--dbclient
#сервер
Обрабатывать только записи, относящиеся к указанному клиентскому компьютеру.
-C
--nocomment
#Удалять из запросов комментарии /* ... */.
-d
name
--dbname
#name
Обрабатывать только записи, относящиеся к указанной базе данных.
-D
--dns-resolv
#Заменять IP-адреса клиентов их DNS-именами.
Предупреждение
Это может значительно замедлить работу pgbadger.
-e
дата_время
--end
#дата_время
Указывает дату/время конца диапазона анализируемых данных в журналах.
-E
--explode
#Строить отдельные отчёты для разных баз данных. Глобальная информация, не связанная с какой-либо базой данных, добавляется в отчёт по базе данных
postgres
.-f
тип_журнала
--format
#тип_журнала
Указывает тип журнала.
Возможные значения:
syslog
,syslog2
,stderr
,jsonlog
,csv
,pgbouncer
,logplex
,rds
иredshift
. Следует использовать, когда pgbadger не может определить формат журнала.-G
--nograph
#Отключает графики в выводе HTML.
-h
--help
#Вывести подробную информацию о параметрах pbadger и завершиться.
-H
путь
--html-outdir
#путь
Указывает путь к каталогу, в который будет записываться HTML-отчёт в инкрементальном режиме. Обратите внимание, что двоичные файлы остаются в каталоге, указанном в
-O
/--outdir
.-i
name
--ident
#name
Имя программы, по которому можно выделить сообщения Postgres Pro в журналах syslog.
По умолчанию:
postgres
.-I
--incremental
#Использовать инкрементальный режим, в котором отчёты будут генерироваться по дням в отдельном каталоге, указанном параметром
-O
/--outdir
.-j
число
--jobs
#число
Задаёт количество одновременно выполняемых заданий обработки журнала. Журналы csvlog всегда обрабатываются в однопоточном режиме.
По умолчанию: 1.
-J
число
--Jobs
#число
Определяет, сколько файлов будет разбираться одновременно. Журналы csvlog обрабатываются по одному.
По умолчанию: 1.
-l
имя_файла
--last-parsed
#имя_файла
Указывает файл для сохранения последней разобранной строки и её даты в целях обеспечения инкрементальной обработки журналов. Полезно использовать для просмотра ошибок с момента последнего запуска или для получения одного отчёта в день с еженедельной ротацией журнала.
-L
имя_файла
--logfile-list
#имя_файла
Указывает файл, содержащий список файлов журналов для анализа.
-m
размер
--maxlength
#размер
Задаёт максимальную длину запроса в отчётах (в символах). Более длинные запросы будут усечены.
По умолчанию: 100000.
-M
--no-multiline
#Отключает составление многострочных операторов. Таким образом отчёты становятся чище, особенно в случае ошибок, когда выводится много лишнего.
-N
name
--appname
#name
Обрабатывать только записи журнала, относящиеся к указанному приложению.
-o
имя_файла
--outfile
#имя_файла
Указывает имя файла для вывода и определяет формат файла отчёта. Может использоваться несколько раз для получения разных форматов. Для вывода
json
убедитесь, что установлен Perl-модульJSON::XS
. Если в качестве имени файла указать «-», отчёт будет записан в стандартный вывод.По умолчанию:
out.html
,out.txt
,out.bin
,out.json
илиout.tsung
,для соответствующего формата вывода.
-O
путь
--outdir
#путь
Указывает каталог, в который будет записан выходной файл.
-p
строка
--prefix
#строка
Указывает значение настраиваемого параметра log_line_prefix, заданное в файле
postgresql.conf
. Полезен в случаях, когда вы используете префикс строк, отличный от стандартных префиксовlog_line_prefix
, например, когда префикс включает дополнительные переменные, такие как IP-адрес клиента или имя приложения.-P
--no-prettify
#Отключает улучшение визуального представления кода SQL-запросов.
-q
--quiet
#Полностью отключает вывод в stdout, не выводится даже индикатор выполнения.
-Q
--query-numbering
#Добавляет нумерацию запросов в вывод, когда используется ключ
--dump-all-queries
или--normalized-only
.-r
адрес
--remote-host
#адрес
Указывает компьютер, на котором выполнится команда
cat
для удалённого файла; её вывод будет разобран локально.-R
число
--retention
#число
Задаёт интервал (в неделях), в течение которого отчёты должны сохраняться в каталоге вывода в инкрементальном режиме. Каталоги предшествующих недель и дней удаляются автоматически.
По умолчанию: 0 (отчёты не удаляются).
-s
число
--sample
#число
Задаёт количество сохраняемых выборок запросов.
По умолчанию: 3.
-S
--select-only
#Обрабатывать только запросы SELECT.
-t
число
--top
#число
Указывает количество запросов для хранения/отображения.
По умолчанию: 20.
-T
строка
--title
#строка
Указывает заголовок страницы отчёта в формате HTML.
-u
имя_пользователя
--dbuser
#имя_пользователя
Обрабатывать только записи журнала, относящиеся к указанному пользователю.
-U
имя_пользователя
--exclude-user
#имя_пользователя
Указывает имя пользователя для исключения относящихся к нему записей из отчёта.
-v
--verbose
#Включает подробный режим или режим отладки.
По умолчанию: выкл.
-V
--version
#Вывести версию pgbadger и завершиться.
-w
--watch-mode
#Обрабатывать только ошибки, по аналогии с Logwatch.
-W
--wide-char
#Кодировать HTML-вывод запросов в UTF-8, чтобы избежать сообщений Perl «Wide character in print» (Широкий символ в print).
-x
формат
--extension
#формат
Задаёт формат вывода. Возможные значения:
text
,html
,bin
,json
илиtsung
.По умолчанию:
html
.-X
--extra-files
#В инкрементальном режиме записывать ресурсы CSS и JavaScript в каталог вывода как отдельные файлы.
-z
команда
--zcat
#команда
Задаёт полную команду для запуска программы zcat. Используйте, если zcat, bzcat или unzip находится не в каталоге, включённом в
PATH
.-Z
+/-XX
--timezone
#+/-XX
Задаёт смещение часового пояса от GMT. Используйте для настройки даты/времени в графиках JavaScript.
--pie-limit
#число
Определяет число, данные круговой диаграммы меньше которого будут заменены суммой.
--exclude-query
#регулярное_выражение
Задаёт регулярное выражение, при совпадении с которым запросы будут исключены из отчёта. Например: «^(VACUUM|COMMIT)». Можно использовать несколько раз.
--exclude-file
#имя_файла
Указывает путь к файлу, содержащему регулярные выражения для исключения соответствующих им запросов из отчёта, по одному выражению в строке.
--include-query
#регулярное_выражение
Задаёт регулярное выражение для включения соответствующих ему запросов в отчёт. Можно использовать несколько раз. Например: «(tbl1|tbl2)».
--include-file
#имя_файла
Указывает путь к файлу, содержащему регулярные выражения для включения соответствующих им запросов в отчёт, по одному выражению в строке.
--disable-error
#Отключает формирование отчёта об ошибках.
--disable-hourly
#Отключает формирование почасового отчёта.
--disable-type
#Отключает формирование отчёта о запросах по типам, базам данных и пользователям.
--disable-query
#Отключает формирование отчётов о запросах, например: самых медленных и наиболее частых, по пользователям, базам данных и т. д.
--disable-session
#Отключает формирование отчёта о сеансах.
--disable-connection
#Отключает формирование отчёта о соединениях.
--disable-lock
#Отключает формирование отчёта о блокировках.
--disable-temporary
#Отключает формирование отчёта о временных файлах.
--disable-checkpoint
#Отключает формирование отчётов о контрольных точках/точках перезапуска.
--disable-autovacuum
#Отключает формирование отчёта об автоочистке.
--charset
#name
Указывает набор символов HTML, который будет использоваться.
По умолчанию: utf-8.
--csv-separator
#char
Указывает разделитель полей CSV.
По умолчанию: «,».
--exclude-time
#регулярное_выражение
Указывает регулярное выражения для исключения из отчёта записей с соответствующей ему меткой времени. Например: «2013-04-12 .*». Можно использовать несколько раз.
--include-time
#регулярное_выражение
Указывает регулярное выражение для включения в отчёт записей с соответствующей ему меткой времени. Например: «2013-04-12 .*». Можно использовать несколько раз.
--exclude-db
#name
Указывает имя базы данных для исключения связанных с ней записей журнала из отчёта. Например: «outdated_db». Можно использовать несколько раз.
--exclude-appname
#name
Задаёт имя приложения для исключения связанных с ним записей журнала из отчёта. Например: «pg_dump». Можно использовать многократно.
--exclude-line
#регулярное_выражение
Указывает регулярное выражение для исключения из отчёта записей журнала при совпадении со всей строкой. Можно использовать несколько раз.
--exclude-client
#адрес
Указывает IP-адрес/имя клиента для исключения связанных с ним записей журнала из отчёта. Можно использовать несколько раз.
--anonymize
#Анонимизировать все константы в запросах. Позволяет скрыть конфиденциальные данные.
--noreport
#Отключает формирование отчётов в инкрементальном режиме.
--log-duration
#Связывать записи журнала, сформированные в результате действия параметров
иlog_duration
= on
.log_statement
= all--enable-checksum
#Добавить сумму MD5 под каждым запросом.
--journalctl
#команда
Указывает команду для генерирования информации, аналогичной той, что содержится в файле журнала Postgres Pro. Обычно это:
journalctl -u postgrespro-std-17
.--pid-dir
#путь
Указывает путь к файлу с PID.
По умолчанию:
/tmp
.--pid-file
#имя_файла
Указывает имя файла с PID для управления параллельным выполнением pgbadger.
По умолчанию:
pgbadger.pid
.--rebuild
#Перестроить все HTML-отчёты в каталогах инкрементального вывода, содержащих файлы двоичных данных.
--pgbouncer-only
#Показывать в заголовке только связанное с pgbouncer меню.
--start-monday
#Начинать календарные недели с понедельника (в инкрементальном режиме). По умолчанию они начинаются в воскресенье.
--iso-week-number
#Начинать календарные недели (в инкрементальном режиме) с понедельника, с нумерацией недель согласно ISO 8601: от 01 до 53, где первая неделя — это первая неделя года, в которой не менее 4 дней.
--normalized-only
#Только выгрузить все нормализованные запросы в файл
out.txt
.--log-timezone
#+/-XX
Задаёт смещение часового пояса для пересчёта значений даты/времени, прочитанных из файла журнала, перед анализом. Ненулевое смещение усложняет поиск соответствующих записей в журнале по дате/времени.
--prettify-json
#Улучшать визуальное представление JSON.
--month-report
#ГГГГ-ММ
Указывает месяц (ГГГГ-ММ), за который нужно построить сводный HTML-отчёт. Для построения отчёта требуются каталоги инкрементального вывода, содержащие все необходимые двоичные данные.
--day-report
#ГГГГ-ММ-ДД
Указывает день (ГГГГ-ММ-ДД) для создания HTML-отчёта. Для построения отчёта требуются каталоги инкрементального вывода, содержащие все необходимые двоичные данные.
--noexplain
#Отключает обработку строк журнала, сформированных механизмом auto_explain.
--command
#команда
Задаёт команду, от которой будет получаться содержимое журнала через stdin. pgbadger откроет канал для получения её вывода и будет анализировать выводимые ею записи.
--no-week
#Не строить еженедельные запросы в инкрементальном режиме. Это полезно, если такие отчёты строятся слишком долго.
--explain-url
#URL
Позволяет переопределить URL визуализатора вывода EXPLAIN ANALYZE.
По умолчанию:
http://explain.depesz.com/?is_public=0&is_anon=0&plan=
--tempdir
#путь
Указывает каталог для временных файлов.
По умолчанию:
File::Spec->tmpdir() || '/tmp'
.--no-process-info
#Отключает смену названия процесса pgbadger на другое, помогающее идентифицировать этот процесс. Полезно в системах, в которых не поддерживается изменение названия процесса.
--dump-all-queries
#Выгрузить все запросы, найденные в файле журнала, в текстовый файл, подставляя значения привязываемых параметров в соответствующие позиции в запросах.
--keep-comments
#Сохранять комментарии в нормализованных запросах. Это позволяет различать одинаковые нормализованные запросы.
--no-progressbar
#Отключает вывод индикатора выполнения.
Параметры подключения к удалённому журналу #
pgbadger может анализировать удалённые файлы журналов, получаемые через SSH-соединение без пароля. IP-адрес или имя целевого компьютера задаётся в параметре -r
/--remote-host
. Другие свойства SSH-подключения определяются следующими параметрами:
--ssh-program
ssh
Указывает путь к используемому SSH-клиенту.
По умолчанию: ssh.
--ssh-port
порт
Указывает порт SSH для подключения.
По умолчанию: 22.
--ssh-user
имя_пользователя
Указывает имя пользователя для подключения.
По умолчанию: имя пользователя, запускающего pgbadger.
--ssh-identity
имя_файла
Указывает путь к файлу идентификации.
--ssh-timeout
секунды
Задаёт тайм-аут в секундах на случай сбоя SSH-соединения.
По умолчанию: 10.
--ssh-option
параметры
Задаёт список параметров для SSH-соединения. Следующие параметры используются всегда:
-o ConnectTimeout=$ssh_timeout
-o PreferredAuthentications=hostbased,publickey
-o PreferredAuthentications=hostbased,publickey
Автор
Жиль Даролд <gilles@darold.net>