本文へ移動

これはセクションの複数ページ印刷用ビューです。 .

このページの通常のビューに戻る.

pgBadger 13.2ドキュメント

PostgreSQLとPgBouncerのログを高速に解析し、詳細で自己完結型のレポートを生成します
pgBadgerロゴ

pgBadgerは、Perlで書かれた高速な単体動作のPostgreSQLログアナライザーです。PostgreSQLまたはPgBouncerのログを読み取り、詳細なHTML、テキスト、バイナリ、JSON、または生のCSVを出力します。HTMLレポートは自己完結型で、操作や拡大縮小が可能です。閲覧に必要なのはウェブブラウザーだけです。

pgBadgerを選ぶ理由

pgBadgerは、大きなログの解析と運用での利用を想定して設計されています。

  • 単一のPerlプログラムであり、Perlコア以外の必須モジュールはありません。
  • stderr、syslog、csvlog、jsonlog、RDS、Cloud SQL、logplex、Redshift、PgBouncerの入力を自動検出します。
  • ローカルファイル、標準入力、SSH経由のリモートファイル、HTTP・FTP・SFTPのURLを直接読み取ります。
  • gzip、bzip2、lz4、xz、zip、zstdの圧縮入力に対応します。
  • 単一の大きなファイル、または多数の小さなファイルを並列に解析します。
  • 日次、週次、および必要に応じた月次の増分レポートを生成します。
  • 時刻、データベース、ユーザー、クライアント、アプリケーション、プロセス、セッション、クエリーパターンで絞り込めます。

レポートの内容

PostgreSQLのレポートには次の内容が含まれます。

  • 全体の動作とクエリー統計。
  • 低速、高頻度、時間消費の多い、待機中、キャンセルされたクエリー。
  • 一時ファイル、チェックポイント、ロック、セッション、接続。
  • テーブルごとのautovacuumとautoanalyzeの動作。
  • 重大度と分類ごとのエラーとイベント。
  • データベース、ユーザー、クライアント、アプリケーション、ステートメント種別ごとの分布。

PgBouncerを入力とする場合は、スループット、平均クエリー実行時間、同時セッション数、接続とセッションの分布、予約プールの使用量、および頻発するエラーとイベントのレポートが加わります。

ドキュメントの構成

次の順序でマニュアルを読むか、サイドバーから目的の作業へ直接移動してください。

  1. pgBadgerとオプションモジュールをダウンロードしてインストール します。
  2. 完全なコマンドラインリファレンス を確認します。
  3. 解析可能なプレフィックスを使ってPostgreSQLのログ出力 を設定します。
  4. 適切な並列処理 モードを選択します。
  5. 増分レポート を安全に生成します。
  6. 出力形式 を選び、ローカルのサンプル を確認します。
  7. リリース履歴 、サポート 、ライセンス を確認します。

1 - ダウンロードとインストール

公式リリース、パッケージ、要件、ソースからのインストール

配布経路を選ぶ

配布経路用途場所
公式リリースソースのtarballとリリースノートGitHub Releases
RPMパッケージRPMを使用するLinuxディストリビューションPostgreSQL Yum Repository
Debian/UbuntuパッケージAPTを使用するLinuxディストリビューションPostgreSQL Apt Repository
開発用ソース未リリースの最新コードdarold/pgbadger

このサイトのドキュメントスナップショットは、13.2のソースツリーに基づいています。ダウンロード前に必ずリリースページを確認してください。ローカルのスナップショットは意図的に固定されていますが、アップストリームのリリースは引き続き更新されます。

要件

HTMLレポートを使用する場合に必要なのは、次のものだけです。

  • 新しいPerlディストリビューション。
  • 埋め込みJavaScriptグラフを描画するウェブブラウザー。

オプション機能には、次の依存関係が追加で必要です。

機能依存関係
PostgreSQLのCSVログを解析Text::CSV_XS
JSON出力を書き出すJSON::XS
.gz、.bz2、.lz4、.xz、.zip、.zstの入力を読む対応するzcat、bzcat、lz4cat、xz、unzip、zstdcatユーティリティー

DebianまたはUbuntuでJSONサポートをインストールします。

$ sudo apt-get install libjson-xs-perl

RPMベースのシステムの場合:

$ sudo yum install perl-JSON-XS

展開プログラムのパスを変更するには、--zcatを使用します。独自のコマンドを1つ指定すると、同じ実行内で異なる圧縮形式を混在させることはできなくなります。

公式tarballからインストールする

リリースアーカイブをダウンロードし、Perlの標準ツールチェーンでビルドしてインストールします。

$ tar xzf pgbadger-13.2.tar.gz
$ cd pgbadger-13.2
$ perl Makefile.PL
$ make
$ sudo make install

デフォルトのsiteレイアウトでは、プログラムを/usr/local/bin/pgbadger、マニュアルページを/usr/local/share/man/man1/pgbadger.1にインストールします。

ディストリビューションと同様に/usr配下にインストールする場合は、次のようにMakefileを生成します。

$ perl Makefile.PL INSTALLDIRS=vendor
$ make
$ sudo make install

INSTALLDIRS=perlも、アップストリームでサポートされているレイアウトです。管理下のシステムにインストールする前に、生成されるパスを確認してください。

開発版のコードをインストールする

$ git clone https://github.com/darold/pgbadger.git
$ cd pgbadger
$ perl Makefile.PL
$ make
$ make test
$ sudo make install

開発版のコードには、リリースノートにまだ記載されていない変更が含まれる場合があります。本番環境向けのパッケージを再現可能に作成するには、タグ付きのアーカイブを使用してください。

インストールを確認する

$ pgbadger --version
$ pgbadger --help

続いて、コマンドラインリファレンス とPostgreSQLのログ設定 を参照してください。

2 - コマンドラインリファレンス

完全な pgBadger コマンド構文、オプション、リモート入力、リターン コード、および例

このページには、固定されたアップストリーム ソースから生成されたコマンド リファレンスが保存されます。オプション名とヘルプ テキストはそのまま残るため、pgbadger --help と直接比較できます。

使い方とオプション

使用法: pgbadger [options] logfile […]

PostgreSQL log analyzer with fully detailed reports and graphs.

引数:

logfile can be a single log file, a list of files, or a shell command
returning a list of files. If you want to pass log content from stdin
use - as filename. Note that input from stdin will not work with csvlog.

オプション:

-a | --average minutes : number of minutes to build the average graphs of
                         queries and connections. Default 5 minutes.
-A | --histo-average min: number of minutes to build the histogram graphs
                         of queries. Default 60 minutes.
-b | --begin datetime  : start date/time for the data to be parsed in log
                         (either a timestamp or a time)
-c | --dbclient host   : only report on entries for the given client host.
-C | --nocomment       : remove comments like /* ... */ from queries.
-d | --dbname database : only report on entries for the given database.
-D | --dns-resolv      : client ip addresses are replaced by their DNS name.
                         Be warned that this can really slow down pgBadger.
-e | --end datetime    : end date/time for the data to be parsed in log
                         (either a timestamp or a time)
-E | --explode         : explode the main report by generating one report
                         per database. Global information not related to a
                         database is added to the postgres database report.
-f | --format logtype  : possible values: syslog, syslog2, stderr, jsonlog,
                         csv, pgbouncer, logplex, rds and redshift. Use this
                         option when pgBadger is not able to detect the log
                         format.
-G | --nograph         : disable graphs on HTML output. Enabled by default.
-h | --help            : show this message and exit.
-H | --html-outdir path: path to directory where HTML report must be written
                         in incremental mode, binary files stay on directory
                         defined with -O, --outdir option.
-i | --ident name      : programname used as syslog ident. Default: postgres
-I | --incremental     : use incremental mode, reports will be generated by
                         days in a separate directory, --outdir must be set.
-j | --jobs number     : number of jobs to run at same time for a single log
                         file. Run as single by default or when working with
                         csvlog format.
-J | --Jobs number     : number of log files to parse in parallel. Process
                         one file at a time by default.
-l | --last-parsed file: allow incremental log parsing by registering the
                         last datetime and line parsed. Useful if you want
                         to watch errors since last run or if you want one
                         report per day with a log rotated each week.
-L | --logfile-list file:file containing a list of log files to parse.
-m | --maxlength size  : maximum length of a query, it will be restricted to
                         the given size. Default truncate size is 100000.
-M | --no-multiline    : do not collect multiline statements to avoid garbage
                         especially on errors that generate a huge report.
-N | --appname name    : only report on entries for given application name
-o | --outfile filename: define the filename for the output. Default depends
                         on the output format: out.html, out.txt, out.bin,
                         or out.json. This option can be used multiple times
                         to output several formats. To use json output, the
                         Perl module JSON::XS must be installed, to dump
                         output to stdout, use - as filename.
-O | --outdir path     : directory where out files must be saved.
-p | --prefix string   : the value of your custom log_line_prefix as
                         defined in your postgresql.conf. Only use it if you
                         aren't using one of the standard prefixes specified
                         in the pgBadger documentation, such as if your
                         prefix includes additional variables like client IP
                         or application name. MUST contain escape sequences
                         for time (%t, %m or %n) and processes (%p or %c).
                         See examples below.
-P | --no-prettify     : disable SQL queries prettify formatter.
-q | --quiet           : don't print anything to stdout, not even a progress
                         bar.
-Q | --query-numbering : add numbering of queries to the output when using
                         options --dump-all-queries or --normalized-only.
-r | --remote-host ip  : set the host where to execute the cat command on
                         remote log file to parse the file locally.
-R | --retention N     : number of weeks to keep in incremental mode. Defaults
                         to 0, disabled. Used to set the number of weeks to
                         keep in output directory. Older weeks and days
                         directories are automatically removed.
-s | --sample number   : number of query samples to store. Default: 3.
-S | --select-only     : only report SELECT queries.
-t | --top number      : number of queries to store/display. Default: 20.
-T | --title string    : change title of the HTML page report.
-u | --dbuser username : only report on entries for the given user.
-U | --exclude-user username : exclude entries for the specified user from
                         report. Can be used multiple time.
-v | --verbose         : enable verbose or debug mode. Disabled by default.
-V | --version         : show pgBadger version and exit.
-w | --watch-mode      : only report errors just like logwatch could do.
-W | --wide-char       : encode html output of queries into UTF8 to avoid
                         Perl message "Wide character in print".
-x | --extension       : output format. Values: text, html, bin or json.
                         Default: html
-X | --extra-files     : in incremental mode allow pgBadger to write CSS and
                         JS files in the output directory as separate files.
-z | --zcat exec_path  : set the full path to the zcat program. Use it if
                         zcat, bzcat or unzip is not in your path.
-Z | --timezone +/-XX  : Set the number of hours from GMT of the timezone.
                         Use this to adjust date/time in JavaScript graphs.
                         The value can be an integer, ex.: 2, or a float,
                         ex.: 2.5.
--anonymize            : obscure all literals in queries, useful to hide
--charset              : used to set the HTML charset to be used.
                         Default: utf-8.
--command CMD          : command to execute to retrieve log entries on
                         stdin. pgBadger will open a pipe to the command
                         and parse log entries generated by the command.
--csv-separator        : used to set the CSV field separator, default: ,
--day-report YYYY-MM-DD: create an HTML report over the specified day.
                         Requires incremental output directories and the
                         presence of all necessary binary data files
--disable-autovacuum   : do not generate autovacuum report.
                         confidential data.
--disable-checkpoint   : do not generate checkpoint/restartpoint report.
--disable-connection   : do not generate connection report.
--disable-error        : do not generate error report.
--disable-hourly       : do not generate hourly report.
--disable-lock         : do not generate lock report.
--disable-query        : do not generate query reports (slowest, most
                         frequent, queries by users, by database, ...).
--disable-session      : do not generate session report.
--disable-temporary    : do not generate temporary report.
--disable-type         : do not generate report of queries by type, database
                         or user.
--dump-all-queries     : dump all queries found in the log file replacing
                         bind parameters included in the queries at their
                         respective placeholders positions.
--dump-raw-csv         : parse the log and dump the information into CSV
                         format. No further processing is done, no report.
--enable-checksum      : used to add an md5 sum under each query report.
--exclude-appname name : exclude entries for the specified application name
                         from report.  Example: "pg_dump".  Can be used
                         multiple times.
--exclude-client name  : exclude log entries for the specified client ip.
                         Can be used multiple times.
--exclude-db name      : exclude entries for the specified database from
                         report. Example: "postgres". Can be used multiple
                         times.
--exclude-file filename: path of the file that contains each regex to use
                         to exclude queries from the report. One regex per
                         line.
--exclude-line regex   : exclude any log entry that will match the given
                         regex. Can be used multiple times.
--exclude-query regex  : any query matching the given regex will be excluded
                         from the report. For example: "^(VACUUM|COMMIT)"
                         You can use this option multiple times.
--exclude-time  regex  : any timestamp matching the given regex will be
                         excluded from the report. Example: "2013-04-12 .*"
                         You can use this option multiple times.
--explain-url URL      : use it to override the url of the graphical explain
                         tool. Default: https://explain.depesz.com/
--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
--include-file filename: path of the file that contains each regex to the
                         queries to include from the report. One regex per
                         line.
--include-query regex  : any query that does not match the given regex will
                         be excluded from the report. You can use this
                         option multiple times. For example: "(tbl1|tbl2)".
--include-pid PID      : only report events related to the session pid (%p).
                         Can be used multiple time.
--include-session ID   : only report events related to the session id (%c).
                         Can be used multiple time.
--include-time  regex  : only timestamps matching the given regex will be
                         included in the report. Example: "2013-04-12 .*"
                         You can use this option multiple times.
--iso-week-number      : in incremental mode, calendar weeks start on
                         Monday and respect the ISO 8601 week number, range
                         01 to 53, where week 1 is the first week that has
                         at least 4 days in the new year.
--keep-comments        : do not remove comments from normalized queries. It
                         can be useful if you want to distinguish between
                         same normalized queries.
--journalctl command   : command to use to replace PostgreSQL logfile by
                         a call to journalctl. Basically it might be:
                            journalctl -u postgresql-9.5
--log-duration         : force pgBadger to associate log entries generated
                         by both log_duration = on and log_statement = 'all'
--log-timezone +/-XX   : Set the number of hours from GMT of the timezone
                         that must be used to adjust date/time read from
                         log file before beeing parsed. Using this option
                         makes log search with a date/time more difficult.
                         The value can be an integer, ex.: 2, or a float,
                         ex.: 2.5.
--month-report YYYY-MM : create a cumulative HTML report over the specified
                         month. Requires incremental output directories and
                         the presence of all necessary binary data files
--noexplain            : do not process lines generated by auto_explain.
--no-fork              : do not fork any process, for debugging purpose.
--no-process-info      : disable changing process title to help identify
                         pgbadger process, some system do not support it.
--no-progressbar       : disable progressbar.
--noreport             : no reports will be created in incremental mode.
--no-week              : inform pgbadger to not build weekly reports in
                         incremental mode. Useful if it takes too much time.
--normalized-only      : only dump all normalized queries to out.txt
--pgbouncer-only       : only show PgBouncer-related menus in the header.
--pid-dir path         : set the path where the pid file must be stored.
                         Default /tmp
--pid-file file        : set the name of the pid file to manage concurrent
                         execution of pgBadger. Default: pgbadger.pid
--pie-limit num        : pie data lower than num% will show a sum instead.
--prettify-json        : use it if you want json output to be prettified.
--rebuild              : used to rebuild all html reports in incremental
                         output directories where there's binary data files.
--start-monday         : in incremental mode, calendar weeks start on
                         Sunday. Use this option to start on a Monday.
--tempdir DIR          : set directory where temporary files will be written
                         Default: File::Spec->tmpdir() || '/tmp'

pgBadger は、パスワードなしの ssh 接続を使用してリモート ログ ファイルを解析できます。 -r または –remote-host を使用して、ホストの IP アドレスまたはホスト名を設定します。 SSH 接続を完全に制御するための追加オプションもいくつかあります。

--ssh-identity file      path to the identity file to use.
--ssh-option  options    list of -o options to use for the ssh connection.
                         Options always used:
                             -o ConnectTimeout=$ssh_timeout
                             -o PreferredAuthentications=hostbased,publickey
--ssh-port port          ssh port to use for the connection. Default: 22.
--ssh-program ssh        path to the ssh program to use. Default: ssh.
--ssh-timeout second     timeout to ssh connection failure. Default: 10 sec.
--ssh-user username      connection login name. Defaults to running user.

解析するログ ファイルは、URI を使用して指定することもできます。サポートされているプロトコルは http[s] および [s]ftp です。ファイルのダウンロードにはcurlコマンドが使用され、ダウンロード中にファイルが解析されます。 ssh プロトコルもサポートされており、リモート ホストの使用と同様に ssh コマンドを使用します。以下の例を参照してください。

リターンコード:

0: on success
1: die on error
2: if it has been interrupted using ctr+c for example
3: the pid file already exists or can not be created
4: no log file was given at command line

例:

pgbadger /var/log/postgresql.log
pgbadger /var/log/postgres.log.2.gz /var/log/postgres.log.1.gz /var/log/postgres.log
pgbadger /var/log/postgresql/postgresql-2012-05-*
pgbadger --exclude-query="^(COPY|COMMIT)" /var/log/postgresql.log
pgbadger -b "2012-06-25 10:56:11" -e "2012-06-25 10:59:11" /var/log/postgresql.log
cat /var/log/postgres.log | pgbadger -
# Log line prefix with stderr log output
pgbadger --prefix '%t [%p]: user=%u,db=%d,client=%h' /pglog/postgresql-2012-08-21*
pgbadger --prefix '%m %u@%d %p %r %a : ' /pglog/postgresql.log
# Log line prefix with syslog log output
pgbadger --prefix 'user=%u,db=%d,client=%h,appname=%a' /pglog/postgresql-2012-08-21*
# Use my 8 CPUs to parse my 10GB file faster, much faster
pgbadger -j 8 /pglog/postgresql-10.1-main.log

リモート ログ ファイルには URI 表記を使用します。

pgbadger http://172.12.110.1//var/log/postgresql/postgresql-10.1-main.log
pgbadger ftp://username@172.12.110.14/postgresql-10.1-main.log
pgbadger ssh://username@172.12.110.14:2222//var/log/postgresql/postgresql-10.1-main.log*

ローカル PostgreSQL ログ ファイルとリモート pgbouncer ログ ファイルを一緒に使用して解析できます。

pgbadger /var/log/postgresql/postgresql-10.1-main.log ssh://username@172.12.110.14/pgbouncer.log

cron ジョブごとに毎週エラーを報告します。

30 23 * * 1 /usr/bin/pgbadger -q -w /var/log/postgresql.log -o /var/reports/pg_errors.html

増分動作を使用して毎週レポートを生成します。

0 4 * * 1 /usr/bin/pgbadger -q `find /var/log/ -mtime -7 -name "postgresql.log*"` -o /var/reports/pg_errors-`date +\%F`.html -l /var/reports/pgbadger_incremental_file.dat

これは、ログ ファイルと HTML レポートも毎週ローテーションされることを前提としています。

あるいは、自動生成された増分レポートを使用することをお勧めします。

0 4 * * * /usr/bin/pgbadger -I -q /var/log/postgresql/postgresql.log.1 -O /var/www/pg_reports/

日ごとおよび週ごとにレポートが生成されます。

増分モードでは、レポートに保存する週数を指定することもできます。

/usr/bin/pgbadger --retention 2 -I -q /var/log/postgresql/postgresql.log.1 -O /var/www/pg_reports/

毎日 30 分間、23:00 および 13:00 に pg_dump がある場合、次のように pgBadger を使用して、これらの期間をレポートから除外できます。

pgbadger --exclude-time "2013-09-.* (23|13):.*" postgresql.log

これにより、pg_dump によって生成された COPY ステートメントが最も遅いクエリのリストの上位に表示されるのを避けることができます。 –exclude-appname “pg_dump” を使用して、この問題をより簡単な方法で解決することもできます。

また、journalctl 出力をログ ファイルであるかのように解析することもできます。

pgbadger --journalctl 'journalctl -u postgresql-9.5'

最悪の場合は、リモート ホストから呼び出します。

pgbadger -r 192.168.1.159 --journalctl 'journalctl -u postgresql-9.5'

コマンド ラインでログ ファイルを指定する必要はありませんが、解析する他の PostgreSQL ログ ファイルがある場合は、通常どおり追加できます。

すべての増分 HTML レポートを後で再構築するには、次の手順を実行します。

rm /path/to/reports/*.js
rm /path/to/reports/*.css
pgbadger -X -I -O /path/to/reports/ --rebuild

また、すべてのリソース ファイル (JS および CSS) も更新されます。このオプションを使用してレポートが作成された場合は、-E または –explode を使用します。

pgBadger は、logplex 形式を使用した Heroku PostgreSQL ログもサポートしています。

heroku logs -p postgres | pgbadger -f logplex -o heroku.html -

これにより、標準入力を介して Heroku PostgreSQL ログが pgbadger にストリーミングされます。

pgBadger は、rds 形式を使用して RDS および Cloudwatch PostgreSQL ログを自動検出できます。

pgbadger -f rds -o rds_out.html rds.log

各 CloudSQL PostgreSQL ログはごく普通の PostgreSQL ログですが、JSON 形式でカプセル化されています。これは pgBadger によって自動検出されますが、ログ形式を強制する必要がある場合には `jsonlog` を使用します。

pgbadger -f jsonlog -o cloudsql_out.html cloudsql.log

これは jsonlog 拡張機能の場合と同じで、json 形式は異なりますが、pgBadger は両方の形式を解析できます。

pgBadger は、Kubernetes の CloudNativePG Postgres オペレーターによって生成されたログもサポートします。

pgbadger -f jsonlog -o cnpg_out.html cnpg.log

1 か月にわたる累積レポートを作成するには、次のコマンドを使用します。

pgbadger --month-report 2919-05 /path/to/incremental/reports/

これにより、増分レポートのカレンダー ビューに月名へのリンクが追加され、2019 5 月のレポートが表示されます。このオプションを使用してレポートが作成された場合は、-E または –explode を使用します。

3 - PostgreSQLのログ設定

pgBadger用にクエリーログ、log_line_prefix、ロケール、関連する統計を設定します

pgBadgerでレポートできるのは、PostgreSQLがログに書き出した情報だけです。まず解析可能なプレフィックスと、目的に応じたステートメントのログ出力方針を設定し、次に分析したい運用イベントを追加してください。

クエリーログの最小構成

クエリー本文と実行時間を記録するには、実行時間に基づくステートメントのログ出力を有効にします。

log_min_duration_statement = 0

0を指定すると、完了したすべてのステートメントが記録されます。負荷の高いサーバーでは、ログ量を抑えるためにミリ秒単位のしきい値を高く設定してください。本番環境で低いしきい値を有効にする前に、処理負荷とストレージ使用量の増加を測定してください。

クエリー本文が不要で、実行時間とクエリー数だけが必要な場合は、次を使用します。

log_min_duration_statement = -1
log_duration = on

最も遅いクエリーやクエリーの合計実行時間のレポートが必要な場合は、log_min_duration_statementを使用してください。

必須のプレフィックスフィールド

独自のlog_line_prefixには、次の両方を含める必要があります。

  • 時刻フィールド:%t、%m、または%n。
  • プロセスまたはセッションのフィールド:%pまたは%c。

最小限のstderr用プレフィックスは次のとおりです。

log_line_prefix = '%t [%p]: '

ユーザー、データベース、アプリケーション、クライアントも記録すると、より有用なプレフィックスになります。

log_line_prefix = '%t [%p]: user=%u,db=%d,app=%a,client=%h '

出力先がsyslogの場合、同等のプレフィックスでは、syslog自身が付与するタイムスタンプとプロセスのフィールドを省略します。

log_line_prefix = 'user=%u,db=%d,app=%a,client=%h '

次のキーの順序もサポートされています。

log_line_prefix = '%t [%p]: db=%d,user=%u,app=%a,client=%h '

プレフィックスがpgBadgerで認識される形式に該当しない場合は、正確な値を--prefixで渡してください。簡略化したり、postgresql.confと異なる値を入力し直したりしないでください。

レポートに含めたいイベントの種類を有効にします。

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_temp_files = 0とlog_autovacuum_min_duration = 0では、該当するすべてのイベントを記録します。ワークロードと保持容量に合わせて調整してください。

サーバーメッセージを英語にする

パーサーは英語のPostgreSQLサーバーメッセージを認識します。次のいずれかを使用してください。

lc_messages = 'en_US.UTF-8'

または:

lc_messages = 'C'

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の統計のために3つの設定をすべて組み合わせないでください

PostgreSQLの設定を再読み込みした後、大規模な解析を実行する前に実際のログを数件確認してください。タイムスタンプ、プロセス・セッション識別子、ユーザー、データベース、アプリケーション、クライアントの各フィールドが選択した形式と一致することを確認します。

4 - 並列処理

単一ログを分割する並列処理と、複数ログを単位とする並列処理を使い分けます

pgBadgerには相互に補完する2つのマルチプロセスモードがあります。単にCPU数だけでなく、入力の構成に応じて選択してください。

オプション並列処理の単位適する入力主な制約
-j N / --jobs N単一ログファイルの分割片大きなシーク可能なログ1つ分割境界で少数のクエリーが重複または欠落する場合があります
-J N / --Jobs Nログファイル全体多数の独立したログワーカーを稼働させ続けるだけのファイル数がある場合にのみ効果があります

-jで大きなファイルを分割する

$ pgbadger -j 8 /var/log/postgresql/postgresql.log

アップストリームのアルゴリズムは、各ファイルをN個のバイト範囲に分割し、範囲ごとにパーサーをフォークして一時的なバイナリ統計を書き出した後、その統計を最終レポートに統合します。

for each log file
    divide the file into N chunks
    find each chunk's start and end offsets
    fork N parsers at those offsets
    write one temporary binary statistics file per parser
wait for the workers
merge the binary files and build the report

ログレコードや複数行のステートメントはバイトオフセットと完全には一致しないため、分割境界では、ファイルごとに最大でおよそN個のクエリーが途中で切れたり、欠落したり、より一般的には二重に数えられたりする場合があります。このモードは非常に大きなファイルの集計分析に使用し、すべてのレコードを厳密に数える必要がある調査には使用しないでください。

-Jで多数のファイルを処理する

$ pgbadger -J 8 /var/log/postgresql/postgresql-*.log

各ワーカーがファイル全体を担当するため、このモードでは分割境界での欠落を回避できます。数百の小さなファイルと十分なCPU・I/O能力がある場合に特に有効です。アップストリームのドキュメントでは、独立した圧縮ファイルに対しても-Jを使用できます。-jによる単一ファイルの分割には、シーク可能な非圧縮入力が必要です。

アップストリームのベンチマーク

アップストリームのマニュアルでは、8 CPUのホストで測定した次の結果が報告されています。現在のハードウェアの性能予測ではなく、2つのアルゴリズムの比較として参照してください。

9.5 GBのファイル1つ:

オプション1 CPU2 CPU4 CPU8 CPU
-j1h41m1850m2525m3915m58
-J1h41m1854m2841m1634m45

10 MBのファイル200個、合計2 GB:

オプション1 CPU2 CPU4 CPU8 CPU
-j20m159m565m204m20
-J20m159m495m002m40

実用上の基本は、少数の大きなファイルには-j、多数の小さなファイルには-Jです。入力とプラットフォームが対応していれば両モードを組み合わせられますが、その組み合わせでベンチマークを実施してください。ログ解析は、CPUより先にストレージのスループットが制約になる場合があります。

制限と一時ファイル

  • -jは圧縮入力やCSV入力には使用できません。また、プロセスのフォークに依存するため、Windows向けのモードではありません。
  • アップストリームのリモート入力機能では、リモートCSVの解析はサポートされていません。
  • 並列解析では、選択した一時ディレクトリ(デフォルトではシステムの一時ディレクトリ)にtmp_pgbadgerXXXX.binのような名前の一時ファイルを作成します。
  • pgBadgerの実行中はこれらのファイルを削除しないでください。--tempdirを使用して、十分な容量のあるストレージに配置します。
  • 最初は控えめなワーカー数で開始し、CPU、読み取りスループット、一時領域の使用量、経過時間を監視してください。

5 - 増分レポート

日次・週次レポートの生成、保持期間の管理、出力の再生成、月次集計の追加を行います

増分モードでは、解析した統計をバイナリ形式で保存し、1日ごとのHTMLレポート、1週間ごとの累積レポート、およびそれらを結ぶカレンダー形式の目次を生成します。同じログエントリーを重複して数えずに、ローテーションされたログを繰り返し処理するための機能です。

日次・週次レポートを生成する

日次のログローテーション後にpgBadgerを実行し、永続的な出力ディレクトリを指定します。

crontab
0 4 * * * /usr/bin/pgbadger -I -q /var/log/postgresql/postgresql.log.1 -O /var/www/pg_reports/

-Iは増分モードを有効にし、-Oはバイナリ状態、カレンダーの目次、生成したレポートを保持するディレクトリを指定します。pgBadgerはそのディレクトリに増分処理の状態を維持するため、状態ファイルを意図的に別の場所に置きたい場合を除き、--last-parsedは不要です。

バイナリ状態を元のディレクトリに保持しつつ、HTMLには別のディレクトリを使用できます。

$ pgbadger -I -O /var/lib/pgbadger/data -H /var/www/pg_reports postgresql.log.1

バイナリファイルは、将来の再生成に使用する元データとして扱ってください。レポートの再生成が重要な場合は、これらをバックアップするか、元のログを保持してください。

保持期間

指定した週数分だけを保持します。

$ pgbadger --incremental --retention 8 \
    --outdir /var/www/pg_reports \
    /var/log/postgresql/postgresql.log.1

それより古い週や日のディレクトリは自動的に削除されます。唯一のレポート履歴にこの方針を適用する前に、本番以外のコピーでテストしてください。

共通アセットを別ファイルに書き出す

デフォルトでは、HTMLレポートにJavaScriptとCSSが埋め込まれます。多数の増分レポートを含むディレクトリでは、-X / --extra-filesを指定すると共通アセットを別に書き出し、出力の重複を減らせます。

$ pgbadger -X -I -O /var/www/pg_reports postgresql.log.1

すべてのレポートと、バージョン別のリソースディレクトリを一緒に移動する必要があります。

既存レポートを再生成する

pgBadgerのアップグレード後、またはレポート生成の修正を適用した後は、保持しているバイナリデータからHTMLを再生成します。

$ rm /var/www/pg_reports/*.js
$ rm /var/www/pg_reports/*.css
$ pgbadger -X -I -O /var/www/pg_reports --rebuild

元のレポートをデータベースごとに生成した場合は、再度-E / --explodeを指定してください。

長いオプション名の--rebuildを使用してください。現在のコマンドリファレンスでは、-Rは--retentionを意味します。-Rを再生成の短縮オプションとして扱うと、誤ったオプションが適用されます。

月次レポートを追加する

日次・週次レポートは自動的に生成されます。月次集計は、履歴が大きいと処理コストが高くなるため、明示的に実行します。

$ pgbadger -X --month-report 2026-07 /var/www/pg_reports/

生成した月がカレンダーの目次に追加されます。同じコマンドを再実行すると、利用可能なバイナリデータからその月を再生成します。データベース別の履歴を対象とする場合は、再度-Eを指定してください。

$ pgbadger -E -X --month-report 2026-07 /var/www/pg_reports/

完全なコマンドリファレンスには、より特殊なスケジュールに対応する--day-report YYYY-MM-DD、--no-week、--noreport、--start-monday、--iso-week-numberも記載されています。

同梱の増分レポートのサンプル を開くと、ネットワーク接続なしでカレンダー、週へのリンク、日次レポートの階層を確認できます。

6 - 出力形式

HTML、テキスト、バイナリ、JSON、生のCSVから出力形式を選び、中間ファイルを統合します

pgBadgerは、ファイル名の拡張子または-x / --extensionから出力形式を選びます。-o / --outfileを複数回指定すると、1回の解析から複数形式を生成できます。

形式一般的な拡張子主な用途
HTML.htmlグラフ付きで、人が読みやすく操作可能なレポート
テキスト.txtターミナルでの確認とプレーンテキストによる保存
バイナリ.bin統合可能な中間統計とレポートの再生成
JSON.json他のソフトウェアとの連携。JSON::XSが必要
生のCSV選択した出力ファイル--dump-raw-csvによる行単位の抽出

HTMLとテキスト

デフォルトの出力先はout.htmlです。

$ pgbadger postgresql.log -o report.html

通常、HTMLには単独での閲覧に必要なスクリプト、スタイル、フォント、レポートデータが埋め込まれます。-X / --extra-filesを指定すると、共通のJavaScriptとCSSを増分レポートの外に配置します。これらのアセットはHTMLのディレクトリツリーとともに保持してください。

テキスト出力を明示的に生成します。

$ pgbadger -x text -o report.txt postgresql.log

出力ファイル名に-を指定すると、対応する形式を標準出力に書き出せます。

バイナリの中間データ

バイナリ出力では、解析と表示を分離します。追記され続ける1日分のログから、1時間ごとの差分を生成できます。

$ pgbadger --last-parsed .pgbadger_last_state \
    -o sunday/hour01.bin \
    /var/log/pgsql/postgresql-Sun.log

1つ以上のバイナリファイルを統合して、新しいレポートを生成します。

$ pgbadger -o sunday.html sunday/*.bin

サーバーが1時間ごとにログファイルを作成する場合は、ローテーションごとにバイナリファイルを作成し、必要に応じて累積HTMLを再生成します。

$ pgbadger -o day1/hour01.bin postgresql-2026-08-15_01.log
$ pgbadger -o day1/hour02.bin postgresql-2026-08-15_02.log
$ pgbadger -o day1/hour03.bin postgresql-2026-08-15_03.log
$ pgbadger -o day1.html day1/*.bin

互換性のあるpgBadgerバージョンのバイナリファイルをまとめて保持してください。長期間使用しているレポートディレクトリをアップグレードする前に、リリースノートで増分形式の互換性を確認してください。

JSON

JSON出力は、監視やレポート処理パイプラインなどのプログラムによる利用を想定しています。

$ pgbadger -o report.json postgresql.log

まずJSON::XSをインストールしてください。ファイルサイズや生成時間より読みやすさを優先する場合は、--prettify-jsonを追加します。

生データとクエリーのエクスポート

コマンドリファレンスでは、専用のエクスポート機能も提供されています。

  • --dump-raw-csvはログを解析し、レポートを生成せずに行単位のCSVを書き出します。
  • --csv-separatorは生のCSVの区切り文字を変更します。
  • --dump-all-queriesはバインドパラメーターを置換した後のすべてのクエリーを出力します。
  • --normalized-onlyは正規化したクエリーを書き出します。
  • --query-numberingはクエリーのテキスト出力に番号を付けます。

これらのモードの出力には、アプリケーションのSQL、識別子、ユーザー、クライアントアドレス、リテラル値が含まれる場合があります。共有前に出力を確認し、目的の分析にリテラルが不要であれば--anonymizeを使用してください。

7 - サンプルレポート

ローカルサイトのスナップショットから、完全版、エラーのみ、増分のpgBadgerレポートを開きます

サンプルの内容は2022年5月にpgBadger 11.8で生成されました。元のサンプルをこのサイトとともに保存しているため、アップストリームサーバーに接続せずにレポートのナビゲーション、グラフ、スタイル、スクリプトを利用できます。

サンプル紹介する内容ローカルコピー
完全版レポートPostgreSQLの動作とPgBouncerの統計完全版レポートを開く
増分レポートカレンダー形式の目次、週次集計、日次ページ増分レポートの目次を開く
エラーとイベントエラーと運用イベントに限定したレポートエラーレポートを開く

完全版レポート

完全版レポートは自己完結型のHTMLドキュメントです。上部のナビゲーションから、全体統計、クエリー、セッション、接続、一時ファイル、チェックポイント、autovacuumの動作、ロック、PgBouncer専用のグラフを確認できます。

このデータはデモ用であり、現在のベンチマークではありません。値、PostgreSQLのバージョン、埋め込まれたpgBadgerのUIは、レポート生成時点のものです。

増分レポートの階層

増分レポートのサンプルでは、リンク構造を完全に保持しています。

report/
├── index.html
├── 2012/
│   ├── week-49/index.html
│   ├── week-50/index.html
│   └── 12/06 … 12/index.html
└── 11/
    ├── pgbadger.min.css
    ├── pgbadger.min.js
    └── bundled chart and UI assets

最上位の目次は2つの週次レポートと7つの日次レポートにリンクしています。相対リンクをすべて保持しているため、index.htmlだけを移動するとサンプルが壊れます。ディレクトリツリー全体をまとめて保持してください。

セキュリティとプライバシー

実際のレポートには、SQLテキスト、バインド値、データベース名やユーザー名、アプリケーション名、クライアントアドレス、エラーの詳細、ワークロードのパターンが含まれる場合があります。レポートを公開する前に、次を実施してください。

  • リテラルが不要な場合は--anonymizeを使用します。
  • レポート生成前に対象の包含・除外フィルターを適用します。
  • コマンドラインだけでなく、最終的なHTMLやエクスポートしたデータを確認します。
  • レポートの保存場所を、運用ログと同じように慎重に保護します。

8 - リリース履歴

pgBadger 9.x から 13.x までの変更履歴(上流の ChangeLog から正規化)

公式ウェブサイトはリリース情報をホームページに直接掲載しています。そのページはバージョン 12.4 までしか記載されておらず、誤って 11.1–11.3 の情報が日付が矛盾する形で繰り返されています。この版では、上流の ChangeLog を正規記録として固定し、重複する表示を削除した上で、以降の 13.x リリースを追加しています。各シリーズ内では最新のエントリを先頭に保ち、すべてのエントリをそのまま保持します。

シリーズ含まれるバージョン最初–最後のリリースページ
13.x13.0–13.22024-12-08 – 2025-12-2913.xを読む
12.x12.0–12.42022-09-13 – 2023-12-2512.xを読む
11.x11.0–11.82019-06-25 – 2022-04-0811.xを読む
10.x10.0–10.32018-09-09 – 2019-02-1410.xを読む
9.x9.0–9.22016-09-02 – 2017-07-279.xを読む

ダウンロード可能なアーカイブやアセットについては、GitHub Releases をご利用ください。本セクションに記載のリリース日は、上流のソース履歴を示すものであり、このドキュメントスナップショットのダウンロード時刻とは異なります。

8.1 - pgBadger 13.xリリースノート

pgBadger 13.xシリーズのアップストリームのリリースノート全文

pgBadger 13.xのアップストリームの変更記録を、新しいものから順に省略せず掲載しています。

v13.2 · 2025-12-29

前回のリリース以降にユーザーから報告された問題を修正し、提供されたパッチを適用するpgBadgerのメンテナンスリリースです。

  • 対応する一重引用符で囲まれ、内部にエスケープされた引用符を含む文字列を正しく処理できなかった正規化を修正しました。報告してくださったBertrand Bourgierに感謝します。
  • ドキュメントのプレースホルダーの要件を修正しました。
  • エラーのサンプルログエントリーがレポートされない場合があった問題を修正しました。報告してくださったjohn doeに感謝します。
  • !と%sの間で生じる可能性がある優先順位の問題を修正しました。報告してくださったLuca SantarelliとPhilipp Trulsonに感謝します。
  • pgFormatterのコードをv5.9に更新しました。
  • コミットのプッシュ時にテストを実行するGitHub CIアクションを追加しました。
  • log_line_prefixの%rプレースホルダーの解析を修正しました。報告してくださったnike7o0に感謝します。
  • 未初期化の値に関する警告を修正しました。報告してくださったAles Zelenyに感謝します。
  • PostgreSQLログの解析に使用するssh-optionsのドキュメントに例を追加して充実させました。パッチを提供してくださったUlrich Konradに感謝します。
  • ssh経由でsudoとしてコマンドを実行する–ssh-sudoコマンドを追加しました。パッチを提供してくださったAndrew Jacksonに感謝します。
  • !と文字列のeqの間で生じる可能性がある優先順位の問題を修正しました。報告してくださったAdrien Nayratに感謝します。
  • pgbouncer統計の解析を修正しました。報告してくださったmrgttに感謝します。

v13.1 · 2025-03-16

前回のリリース以降にユーザーから報告された問題を修正し、新機能をいくつか追加するpgBadgerのメンテナンスリリースです。

  • vacuumのスループットに関する新しいレポートを追加しました。CPU消費が最も大きいテーブルのvacuumを示すグラフが含まれます。表形式の出力では、テーブルごとの読み取り・書き込みI/O時間と、そのテーブルに費やしたCPU時間を表示します。機能を要望してくださったAles Zelenyに感謝します。このパッチは、テーブル別vacuumレポートに凍結済みページとタプルも追加します。
  • デバッグ用に、プロセスを一切フォークしない–no-forkオプションを追加しました。機能を要望してくださったAles Zelenyに感謝します。
  • 生のCSV出力にミリ秒を追加しました。機能を要望してくださったHenrietta Dombrovskayaに感謝します。
  • 複数ファイルを処理する場合、サンプルレポートにログファイル名を追加しました。機能を要望してくださったAdrien Nayratに感謝します。

変更と謝辞の完全な一覧は次のとおりです。

  • バインドパラメーターの解析を修正しました。パッチを提供してくださったThomas Kotzianに感謝します。
  • 複数行のクエリーにクエリーフィルターを適用するようにしました。パッチを提供してくださったBenjamin Jacobsに感謝します。
  • ログファイル名の保存方法の変更に合わせてテスト結果を更新しました。
  • JSON出力でERRORとLOGのメッセージレベルを修正しました。報告してくださったPhilippe Viegasに感謝します。
  • File::Tempから、エクスポートされていないtmpdirメソッドのインポートを削除しました。報告してくださったkmoradhaに感謝します。

v13.0 · 2024-12-08

前回のリリース以降にユーザーから報告された問題を修正し、新機能をいくつか追加するpgBadgerのメジャーリリースです。

  • クエリー時間とセッション時間のヒストグラムの境界値を再定義できる、2つの新しいオプションを追加しました。 –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に感謝します。
  • CSVとJSONログ形式でauto_explainのプランをサポートしました。報告してくださったzxwsbgとAlexander Rumyantsevに感謝します。
  • イベントとしてレポートされていなかった3つのLOGメッセージ、unexpected EOF、incomplete startup packet、detected deadlock while waiting forを追加しました。報告してくださったdottleに感謝します。

後方互換性に関する問題:

  • イベントレポートに表示されるLOGレベルのイベントの保存方法を変更しました。一部はLOGレベルのエントリーではなく、引き続きエラーとしてレポート・集計されていました。クエリーと区別するため、EVENTLOGとして保存してレポートするように修正しました。この変更は、pgbadgerを増分モードで使用する場合に後方互換性を損ないます。アップグレードを行った週には、2つの動作が混在します。報告してくださったMatti Linnanvuoriに感謝します。

バグ修正:

  • statement_timeoutによるキャンセルが最も多いクエリーがレポートされない問題を修正しました。
  • 回帰テストを更新しました。
  • CSVログ形式から抽出した実行計画の整形を修正しました。
  • jsonlogでautovacuumのデータがレポートから欠落する問題を修正しました。対象はautovacuum動作レポートの平均Autovacuum実行時間、テーブルごとの削除タプル数、時間帯別vacuum数です。パッチを提供してくださったAles Zelenyに感謝します。
  • 時間を消費するバインドクエリーに関連付けられていない孤立した行の問題を修正しました。報告してくださったHenrietta Dombrovskayaに感謝します。パターンマッチで未初期化の値を使用する問題を修正しました。パッチを提供してくださったJunior Diasに感謝します。
  • 生データのCSVエクスポートに–csv-separatorオプションを適用しました。デフォルトの区切り文字はセミコロン(;)です。機能を要望してくださったHenrietta Dombrovskayaに感謝します。
  • 生のCSV出力で、パラメーターやアプリケーション名が空の場合に二重引用符を追加しないようにしました。
  • 生のCSV出力でクエリーにセミコロンが含まれる場合、二重引用符を追加するようにしました。報告してくださったHenrietta Dombrovskayaに感謝します。

8.2 - pgBadger 12.xリリースノート

pgBadger 12.xシリーズのアップストリームのリリースノート全文

pgBadger 12.xのアップストリームの変更記録を、新しいものから順に省略せず掲載しています。

v12.4 · 2023-12-25

前回のリリース以降にユーザーから報告された問題を修正するpgBadgerのメンテナンスリリースです。

  • pgbouncerバージョン1.21のレポートを修正しました。パッチを提供してくださったAles Zelenyに感謝します。
  • ファイル単位の並列度がファイル数を超えないようにしました。報告してくださったmaliangzhuに感謝します。
  • v12.3以降で壊れていた回帰テストを修正しました。報告してくださったieshinに感謝します。
  • LOGエントリーがERRORログレベルのエントリーとして数えられる場合があった問題を修正しました。報告してくださったMatti Linnanvuoriに感謝します。

v12.3 · 2023-11-27

前回のリリース以降にユーザーから報告された問題を修正するpgBadgerのメンテナンスリリースです。次の新機能も追加されています。

  • セッションのpid(%p)に関連するイベントだけをレポートする–include-pidオプションを追加しました。複数回指定できます。機能を要望してくださったHenrietta Dombrovskayaに感謝します。
  • セッションID(%c)に関連するイベントだけをレポートする–include-sessionオプションを追加しました。複数回指定できます。機能を要望してくださったHenrietta Dombrovskayaに感謝します。
  • ログを解析して情報をCSV形式に出力するだけの–dump-raw-csvオプションを追加しました。それ以上の処理は行わず、レポートも生成しません。機能を要望してくださったHenrietta Dombrovskayaに感謝します。

変更と謝辞の完全な一覧は次のとおりです。

  • pgFormatterをバージョン5.5に更新しました。
  • jsonlog形式で解析の終了日時を修正しました。報告してくださったjw1u1に感謝します。
  • 「Sessions per application」の誤記を修正しました。パッチを提供してくださったfairyfarに感謝します。
  • 「INSERT/UPDATE/DELETE Traffic」グラフのバグを修正しました。パッチを提供してくださったfairyfarに感謝します。
  • バインドクエリーを含む孤立行の解析を修正しました。報告してくださったyouxqに感謝します。
  • 新しいPGバージョンで、テーブル別Analyzeレポートを修正しました。パッチを提供してくださったJean-Christophe Arnuに感謝します。
  • syslogのタイムスタンプにミリ秒が含まれる場合のエントリーパーサーを修正しました。報告してくださったPavel Rabelに感謝します。

v12.2 · 2023-08-20

前回のリリース以降にユーザーから報告された問題を修正するpgBadgerのメンテナンスリリースです。次の2つの新機能も追加されています。

  • autovacuum実行時間の最大値、平均値、最小値をサポートしました。パッチを提供してくださったFrancisco Reinoldsに感謝します。
  • pgbouncerの平均待機時間をサポートしました。パッチを提供してくださったFrancisco Reinoldsに感謝します。

変更と謝辞の完全な一覧は次のとおりです。

  • アプリケーション名に<…>が含まれるとHTML出力が壊れる問題を修正しました。報告してくださったFabio Geissに感謝します。
  • データベースのフィルターを適用した場合に、孤立行が誤って関連付けられる問題を修正しました。報告してくださったjcasanovに感謝します。
  • logplexのプレフィックス解析を修正しました。
  • logplexの孤立行検出を修正しました。
  • autovacuumのsystem usage: CPU: ...行の解析を修正しました。パッチを提供してくださったFrancisco Reinoldsに感謝します。
  • 出力先が標準出力の場合、出力ディレクトリを前に付けないようにしました。
  • 平均クエリー実行時間のラベルを統一しました。パッチを提供してくださったFrancisco Reinoldsに感謝します。
  • pgbadgerの新しいオプションについてドキュメントを更新しました。パッチを提供してくださったFrancisco Reinoldsに感謝します。
  • ファイルハンドルを1つも開けない場合に解析が中断されない問題を修正しました。報告してくださったvpに感謝します。
  • 必須プレースホルダー%p/%tのログ情報を追加してヘルプを修正しました。パッチを提供してくださったChristophe Courtoisに感謝します。
  • –retentionパラメーターを修正しました。パッチを提供してくださったBertrand Bourgierに感謝します。
  • HTML出力ディレクトリが設定されている場合、コミット0e5c7d5で削除されていた出力ディレクトリのクリーンアップを修正しました。報告してくださったBertrand Bourgierに感謝します。
  • 出力先ディレクトリに正規表現でエスケープが必要な文字が含まれる場合の出力拡張子を修正しました。パッチを提供してくださったBertrand Bourgierに感謝します。
  • Windows移植版で、POSIX::strftime("%s", ….)の呼び出しをlocaltimeの呼び出しに置き換えました。パッチを提供してくださったBertrand Bourgierに感謝します。
  • HTML出力ディレクトリのクリーンアップを修正しました。パッチを提供してくださったBertrand Bourgierに感謝します。
  • 実行計画用URLにデフォルトでhttpsを使用するようにしました。パッチを提供してくださったPhilipp Trulsonに感謝します。

v12.1 · 2023-03-20

過去6か月間にユーザーから報告された問題を修正するpgBadgerのメンテナンスリリースです。

変更と謝辞の完全な一覧は次のとおりです。

  • 複数行パラメーターの解析を修正しました。報告してくださったBekir Niyazに感謝します。
  • ::tsrangeを含むクエリーの正規化に失敗する問題を修正しました。報告してくださったPhilippe Gribovalに感謝します。
  • 論理デコードの整合点とスロットの開始に関するログエントリーをイベントレポートに追加しました。
  • タイムスタンプにおける他のナノ秒+タイムゾーン形式に対応しました。報告してくださったRonan Dunklauに感謝します。
  • Tを使用した表記で%mの検出を修正しました。報告してくださったRonan Dunklauに感謝します。
  • CloudNativePGが生成するログの解析を追加しました。パッチを提供してくださったcodrut paneaに感謝します。
  • レポート生成で–outdirオプションが使用されない問題を修正しました。報告してくださったFrederic Guietに感謝します。
  • 最新のドキュメント変更をREADMEに反映しました。報告してくださったManisankarに感謝します。
  • pgbadgerの例の誤記を修正しました。パッチを提供してくださったShinichi Hashibaに感謝します。

v12.0 · 2022-09-13

このpgBadgerのメジャーリリースでは、過去5か月間にユーザーから報告された問題をいくつか修正しました。通常どおり、新機能と改善も含まれています。

  • Tsung出力のサポートを削除しました。
  • 置換対象のバインドパラメーターが数百個ある場合のpgbadgerの性能を改善しました。
  • pgFormatter 4へのアップグレード以降使用されなくなった-n | –nohighlightオプションを削除しました。
  • GETパラメーターの長さ制限を避けるため、auto_explainのプランをexplain.depesz.comに送信する際にPOSTメソッドを使用するようにしました。
  • バインド・解析のトレースに–exclude-queryと–include-queryを適用しました。
  • ドキュメントにpgBadgerのレポートサンプルへのリンクを追加しました。

変更と謝辞の完全な一覧は次のとおりです。

  • 「log file … must exists」で失敗していた月次レポートを修正しました。報告してくださったJaume Sabaterに感謝します。
  • 入力が標準入力の場合、pgbouncerの解析開始時のデバッグメッセージを修正しました。報告してくださったaleszelenyに感謝します。
  • Tsung出力のサポートを削除しました。
  • バインドパラメーターの置換に関するpgbadgerの性能を大幅に改善しました。パラメーターが数百個ある場合、pgbadgerが無限に実行され続けることがありました。報告してくださったMonty Mobileに感謝します。
  • pgBadgerの終了コードに関するドキュメントと、いくつかの箇所の誤った終了コードを修正しました。報告してくださったJaume Sabaterに感謝します。
  • 複数の誤記を修正しました。パッチを提供してくださったDavid Gilmanに感謝します。
  • pgFormatter 4へのアップグレード以降使用されなくなった-n | –nohighlightオプションを削除しました。報告してくださったElena Indrupskayaに感謝します。
  • pgbadgerのドキュメントを多数修正しました。パッチを提供してくださったPostgres ProのElena Indrupskayに感謝します。
  • –log-timezoneと–timezoneで30分単位を使用可能にしました。値は2のような整数、または2.5のような小数を指定できます。機能を要望してくださったMujjamil-Kに感謝します。
  • –exclude-appと–exclude-clientで正規表現を使用可能にしました。機能を要望してくださったrdnkrkmzに感謝します。
  • 前のコミットとともに–explain-urlを使用可能にし、実行計画をテキスト形式に限定する制限を復元しました。
  • GETパラメーターの長さ制限を避けるため、auto_explainのプランをexplain.depesz.comに送信する際にPOSTメソッドを使用するようにしました。報告してくださったhvisageに感謝します。
  • バインド・解析のトレースに–exclude-queryと–include-queryを適用しました。報告してくださったAlec Lazarescuに感謝します。
  • RDSログのautovacuum統計の解析を修正しました。報告してくださったDavid Gilmanに感謝します。
  • リモートログを解析する際のログ形式の受け渡しを修正しました。報告してくださったspookypeanutに感謝します。
  • ドキュメントにpgBadgerのレポートサンプルへのリンクを追加しました。
  • ユーザーごとのセッションレポートを修正しました。報告してくださったvitalcaに感謝します。
  • PG15の出力に対するjsonlogの解析を修正しました。
  • テキスト形式でのエラー・イベントのレポートを修正しました。パッチを提供してくださったMichael Banckに感謝します。
  • normalize_error()の正規表現の誤記を修正しました。パッチを提供してくださったMichael Banckに感謝します。

8.3 - pgBadger 11.x リリース ノート

pgBadger 11.x シリーズの完全なアップストリーム リリース ノート

これらのエントリは、pgBadger 11.x の完全なアップストリーム変更レコードを最新のものから順に保存します。

v11.8 · 2022-04-08

pgBadger のこのリリースでは、過去 3 か月以降にユーザーから報告されたいくつかの問題が修正され、特に増分モードでの新しいログ エントリの検出に関する 2 つの修正が行われています。

  • log_line_prefix でミリ秒 (%m) またはエポック (%n) が使用された場合のタイムスタンプ付きの新しいログ エントリの検出を修正します。
  • マルチプロセスが使用されていない場合のローカル ファイル内の新しいログ エントリの検出を修正しました。

変更と謝辞の完全な一覧は次のとおりです。

  • ログ ファイルの変更検出を完全に見直し、簡素化しました。
  • イベントレポートに「could not (receive|send) data (from|to) client」メッセージを表示するようにしました。報告してくださったAdrien Nayratに感謝します。
  • 準備されたクエリの名前に「:」文字が含まれている場合の解析の問題を修正します。 aleszeleny さん、レポートありがとうございます。
  • ミリ秒 (%m) またはエポック (%n) のタイムスタンプを持つ新しいログ エントリの検出を修正します。 aleszeleny さん、レポートありがとうございます。
  • マルチプロセスが使用されていない場合のローカル ファイル内の新しいログ エントリの検出を修正しました。 aleszeleny さん、レポートありがとうございます。
  • SSH を介したリモート ファイル内の新しいログ エントリの検出を修正します。ルカ・フェラーリのレポートに感謝します
  • 「ユーザーごとの接続数」レポートのユーザー名の文字化けを修正しました。 caseyandgina さん、レポートありがとうございます。
  • URI を使用するときに ssh オプションが欠落していた ssh コマンドを修正しました。ルカ・フェラーリさん、レポートありがとうございます。
  • Handle クエリ ID %Q プレースホルダー。パッチを提供してくれた Adrien Nayrat に感謝します。
  • エラー文のタイプミスを修正しました。パッチを提供してくれた Luca Ferrari に感謝します
  • レポート メッセージ: イベント レポートの「サーバー プロセスはシグナルによって終了しました」。レポートを提供してくれた Avi Vallarapu に感謝します。
  • doc: 毎週増分コマンドのファイル名を修正しました。パッチを提供してくれた Theophile Helleboid に感謝します。
  • t/04_advanced.t: syslog テストを修正しました。パッチを提供してくれた Christoph Berg に感謝します。

v11.7 · 2022-01-23

pgBadger のこのリリースでは、過去 5 か月以降にユーザーから報告されたいくつかの問題が修正され、いくつかの改善が行われています。

  • 新しいオプション –no-progressbar オプションを追加して、表示せずに他の出力を保持します。
  • 指定した日の HTML レポートを再構築するために使用できる新しいオプション –day-report を追加します。オプション –month-report と似ていますが、1 日のみです。これには、増分出力ディレクトリと、必要なすべてのバイナリ データ ファイルが存在することが必要です。値は、YYYY-MM-DD 形式の日付です。
  • Heraku logplex および Cloudsql json ログの解析を改善します。

変更と謝辞の完全な一覧は次のとおりです。

  • コントリビューション ガイドラインと Makefile.PL を更新して、一貫性、明確さ、依存関係を改善します。パッチを提供してくれた拡散者に感謝します。
  • バイナリ モードでの最後の解析ファイル (–last-parsed) の使用を修正しました。報告してくれたwibrtさんに感謝します。
  • –last-parsed 使用の回帰テストを追加し、一時ファイルのみのレポートの回帰テストを修正しました。
  • ホストごとのセッションのグラフのタイトルを修正しました。 Norbert Bede さんのレポートに感謝します。
  • –iso-week-number および –incremental オプションが有効になっている場合に週レポートを計算するときの週番号を修正します。 hansgv さん、レポートありがとうございます。
  • –no-progressbar オプションを追加して、これを表示せずに他の出力を保持します。機能リクエストをくださったseidlmicさんに感謝します。
  • 複数行の jsonlog のデバッグ モードで不明な形式の行が大量に出力されるのを防ぎます。
  • 単一行のcloudsql jsonログの解析を修正しました。レポートを提供してくれた Thomas Leclare に感謝します。
  • log_temp_files のみを使用して一時ファイルの概要を修正します。
  • -q または –quiet が使用されている場合でも、-v を使用してデバッグ メッセージを出力します。
  • jsonlog ファイルの自動検出を修正しました。
  • cloudsql ログ ファイルの解析を修正しました。 Luc Lamarle さんのレポートに感謝します。
  • parse_json_input での PID 抽出を修正します。パッチを提供してくれた Francois Scala に感謝します。
  • 新しいオプション –day-report を追加し、値を YYYY-MM-DD 形式の日付として指定します。これは、指定した日の HTML レポートを再構築するために使用できます。機能リクエストをくださった Thomas Leclaire に感謝します。
  • 進行状況バーのクエリカウンターを修正しました。レポートを提供してくれた Guillaume Lelarge に感謝します。
  • トップバインド用に保存された不完全なクエリを修正し、レポートを準備します。
  • オブジェクト識別子の正規化を修正しました。数値が ? に置き換えられる場合がありました。
  • 先頭にコメントがある場合の、フォーマットされていない正規化されたクエリを修正します。
  • –dbname を使用する場合の標準エラー出力形式の複数行を修正しました。レポートを提供してくれた Guillaume Lelarge に感謝します。
  • –dbname の使用時に増分モードでレポートが生成されない問題を修正しました。レポートを提供してくれた Dudley Perkins に感謝します。
  • バイナリ ファイルに互換性がない場合でも、もう死ぬことはなく、次のファイルに切り替えます。提案してくれた Thomas Leclare に感謝します。
  • pgbadger パーサーにおける Heroku logplex 形式の変更を修正しました。レポートを提供してくれた François Pietka に感謝します。

v11.6 · 2021-09-04

pgBadger のこのリリースでは、過去 7 か月以降にユーザーから報告されたいくつかの問題が修正され、いくつかの改善が加えられています。

  • PG14 の新しい log_line_prefix にクエリ ID の検出を追加します。 Florent Jardin さん、レポートありがとうございます。
  • データベースの除外と分解機能を備えた高度な回帰テストを追加します。パッチを提供してくれた MigOps Inc に感謝します。
  • –explode を使用する場合、レポート生成にマルチプロセスを適用します。パッチについては MigOps Inc、機能リクエストについては Thomas Leclaire に感謝します。
  • 増分モードで –iso-week-number を追加します。カレンダーの週は月曜日から始まり、ISO 8601 の週番号が考慮されます。範囲は 01 から 53 までです。ここで、1 週は、新年の少なくとも 4 日がある最初の週です。機能リクエストをくださった Alex Muntada に感謝します。
  • コマンド ライン オプション –keep-comments を追加して、正規化されたクエリからコメントを削除しないようにします。同じ正規化されたクエリを区別したい場合に便利です。機能リクエストをくださった Stefan Corneliu Petrea に感謝します。
  • サードパーティ ソフトウェアによって PostgreSQL ログ ファイルに導入された INFO 行をスキップします。レポートを提供してくれた 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に感謝します。
  • クエリ ID の検出を改善しました。クエリ ID は、csvlog から読み取るだけでなく、負の値になる場合もあります。
  • インクリメンタル モードの最後のファイルが、すでに解析されている場合でも常に解析されるケースを修正します。レポートを提供してくれた Thomas Leclare に感謝します。
  • syslog 形式の正規表現を更新して、セッション行インジケーターに 1 つの int のみが含まれる場合と、ダッシュで区切られた 2 つの int が含まれる場合を処理します。パッチを提供してくれた 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 に感謝します。
  • “explode” オプション (-E) で –dbname パラメーターが部分的に無視された場合、Fix はインクリメンタル モードでレポートします。 lrevest さん、レポートありがとうございます。
  • JavaScript リソースを更新します。
  • 画面縮小時にハンバーガーモードに切り替わる前のメニュー表示を修正しました。レポートを提供してくれた Guillaume Lelarge に感謝します。
  • 十分にサポートされていなかった、ログ内の複数行にわたるバインド パラメータ値を修正しました。
  • pgFormatter よりも前のパッチに同じ修正を適用します。
  • pgFormatter コードの置換イテレータでの初期化されていない値の他の使用を修正します。レポートを提供してくれた Christophe Courtois に感謝します。
  • クエリの正規化を修正しました。パッチを提供してくれた Jeffrey Beale に感謝します。
  • –dump-all-queries を使用する場合は、すべてのステートメントがセミコロンで終わるようにしてください。クリスチャンさん、レポートありがとうございます。
  • 複数のログ ファイルでの EOL タイプのタイプミスと初期化を修正しました。
  • OEL が 2 バイト上にある場合 (Windows の場合)、EOL タイプの自動検出を追加して、LAST_PARSED オフセットを修正します。パッチを提供してくれた Bertrand Bourgier に感謝します。
  • strftime %u がサポートされていない Windows の get_day_of_week() ポートを修正します。パッチを提供してくれた Bertrand Bourgier に感謝します。
  • pgbadger での DATA の読み取り方法に起因して、pl2bat.bat perl ユーティリティを呼び出して破損した pgbadger.bat を作成する Windows ポートを修正しました。パッチを提供してくれた Bertrand Bourgier に感謝します。
  • 開始/終了時刻フィルターを修正し、タイムスタンプ フィルターの回帰テストを追加しました。レポートを提供してくれた Alexis Lahouze と plmayekar に感謝します。
  • pgFormatter 更新によって導入されたパターン一致における初期化されていない値の使用を修正します。報告してくれたarltさんに感謝します。

v11.5 · 2021-02-18

pgBadger のこのリリースでは、過去 3 か月以降にユーザーから報告されたいくつかの問題が修正され、いくつかの改善が加えられています。

  • セッションのアイドル時間のレポートを追加しました。次の式で計算します。 “total sessions time - total queries time / number of sessions 正確な値を得るには、log_connectionとログの切断記録を有効にし、log_min_duration_statement = 0としてすべてのクエリーを記録する必要があります。これにより、アイドル時間の損失量や、プーラーのトランザクションモードが有効かどうかを判断できます。このレポートは「Global Stats」の「Sessions」タブと、「General Activity」レポートの「Sessions」タブ(時間帯別)で利用できます。
  • 数値の匿名化を追加し、4 乱数に置き換えます。
  • pgFormatter 5.0 に基づいて SQL ビューティファイアーを更新します。

変更と謝辞の完全な一覧は次のとおりです。

  • cloudsql の複数行ステートメントの解析を修正しました。ジョンヨンさん、レポートありがとうございます。
  • 匿名化のための回帰テストを追加します。
  • maxlength truncate によって壊れた匿名化を修正しました。 artlさん、レポートありがとうございます。
  • 時間のかかるレポートの作成とバインドにパラメータの匿名化を追加します。報告してくれたarltさんに感謝します。
  • logplex ログ行プレフィックスにマイクロ秒のサポートを追加します。レポートを提供してくれた Ross Gardiner に感謝します。
  • セッションのアイドル時間に関するレポートを追加します。機能リクエストをくださった Guillaume Lelarge に感謝します。
  • jsonlog 形式の複数行をサポートするための完全なパッチ。

v11.4 · 2020-11-24

pgBadger のこのリリースでは、過去 4 か月以降にユーザーから報告されたいくつかの問題が修正されています。 PostgreSQL 13 ログ情報のサポートを改善し、いくつかの新機能を追加します。

  • 「テーブルごとのバキューム」レポートに、バッファ使用量 (ヒット、ミス、ダーティ)、ピンによるスキップ、凍結スキップ、および WAL 使用量 (レコード、フル ページ イメージ、バイト) に関する完全な自動バキューム情報を追加します。 「テーブルごとに削除されたタプル」レポートでは、追加の自動バキューム情報として、残っているタプル、まだ削除されていないタプル、および残っているページが表示されます。これらの情報は、「テーブル」タブでのみ利用できます。
  • チェックポイント開始原因に関する新しい再パーティション レポートを追加します。
  • 接続許可トレースからアプリケーション名の検出を追加します。

変更と謝辞の完全な一覧は次のとおりです。

  • エラー メッセージのタイプミスを修正しました。パッチを提供してくれた Vidar Tyldum に感謝します。
  • Windows移植版で「can not load incompatible binary data」エラーが発生する問題を修正しました。報告してくださったEric Brawnerに感謝します。
  • pgbadger の使用法とドキュメントのオプション –html-outdir のタイプミスを修正します。パッチを提供してくれた Vidar Tyldum に感謝します。
  • jsonlog/cloudsql 形式の自動検出を修正しました。ジョンヨンさん、レポートありがとうございます。
  • PG v13 による CSV ログ解析を修正しました。レポートについては Kanwei Li 氏、パッチについては Kaarel Moppel に感謝します。
  • ほとんどの一時ファイル レポートを生成するクエリの種類を修正しました。レポートを提供してくれた Sebastien Lardiere に感謝します。
  • デバッグ モードで pgbadger バージョン トレースを追加します。

v11.3 · 2020-07-26

pgBadger のこのリリースでは、過去 4 か月以降にユーザーから報告されたいくつかの問題が修正されています。また、いくつかの新機能と新しいコマンド ライン オプションも追加されます。

  • グラフにタイムゾーンが適用されないように、UTC タイムスタンプの自動検出を追加します。
  • GCP CloudSQL json ログ形式へのサポートを追加します。
  • 新しいオプション –dump-all-queries を追加して、pgBadger を使用してすべてのクエリをテキスト ファイルにダンプします。レポートは生成されず、PostgreSQL ログで見つかったステートメントの完全なリストのみが生成されます。バインド パラメータはクエリのそれぞれの位置に挿入されます。
  • 新しいオプションを追加 -Q | –query-numbering は、オプション –dump-all-queries または –normalized-only. を使用するときに出力にクエリの番号を追加するために使用されます。
  • 新しいコマンド ライン オプション –tempdir を追加して、一時ファイルが書き込まれるディレクトリを設定します。 /tmp. への書き込みが許可されていないシステムで役立つ可能性があります
  • デフォルトの22以外のSSHポートを設定する–ssh-portコマンドラインオプションを追加しました。URI表記でも、次の形式でSSHポートを指定できます。 ssh://192.168.1.100:2222//var/log/postgresql-11.log

変更と謝辞の完全な一覧は次のとおりです。

  • jsonlog/cloudsql ログ形式の増分レポートを修正しました。レポートを提供してくれた Ryan DeShone に感謝します
  • UTC タイムスタンプの自動検出を追加して、自動検出されたタイムゾーンがグラフに適用されないようにします。 UTC 時間を使用すると、JavaScript はローカル タイムゾーンを適用します。レポートを提供してくれた Brett Stauner に感謝します。
  • journalctl ログの増分解析が 2 回目の実行以降機能しない問題を修正しました。パッチを提供してくれた Paweł Koziol に感謝します。
  • -X および -E を使用する場合のリソース ファイルへのパスを修正します。レポートを提供してくれた Ryan DeShone に感謝します。
  • 読み取り/書き込みクエリに関する一般アクティビティ レポートを修正しました。 alexandre-sk5 さん、レポートありがとうございます。
  • パラレル モードが使用されていない場合のデバッグ メッセージを追加します。
  • ファイル サイズ検出の elsif ロジックと、–since オプションが追加されたときにjournalctl コマンドに導入される追加スペースを修正します。パッチを提供してくれた 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 に感謝します。
  • log_min_duration_statement が有効な場合の Cloudsql JSON ログの解析を修正しました。 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 オプションのドキュメントを追加します。
  • 新しい PG バージョンのバキューム レポートを修正しました。 Alexey Timanovsky 氏のレポートに感謝します。
  • 新しいコマンド ライン オプション –no-process-info を追加して、pgbadger プロセスを識別しやすくするためにプロセス タイトルの変更を無効にします。一部のシステムではこれが許可されていません。 Akshay2378 さん、レポートありがとうございます。
  • 一時ファイルの書き込み先ディレクトリを設定する–tempdirコマンドラインオプションを追加しました。デフォルトは次のとおりです。 File::Spec->tmpdir() || ‘/tmp’ /tmpへの書き込みが許可されないシステムで役立ちます。報告してくださったAkshay2378に感謝します。
  • スペースや括弧を含むサポートされていない圧縮ファイル名を修正します。 Alexey Timanovsky 氏のレポートに感謝します。
  • デフォルトの22以外のSSHポートを設定する–ssh-portコマンドラインオプションを追加しました。URI表記でも、次の形式でSSHポートを指定できます。 ssh://192.168.1.100:2222//var/log/postgresql-11.log 機能を要望してくださったAugusto Murriに感謝します。

v11.2 · 2020-03-11

pgBadger のこのリリースでは、過去 6 か月以降にユーザーから報告されたいくつかの問題が修正されています。また、いくつかの新機能も追加されています。

  • AWS redshift ログ形式のサポートと自動検出を追加します。
  • pgbouncer 1.11 新しいログ形式へのサポートを追加します。
  • zstd および lz4 圧縮形式を処理します
  • ログ ファイルを読み取ることなく、増分モードで統計のビルドと HTML レポートのビルドを完全に分離できます。たとえば、次のように pgbadger を 1 時間ごとに実行することができます。 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 をオーバーライドするために使用される新しいコマンド ライン オプション –explain-url を追加します。デフォルトの 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 が auto_explain 拡張機能によってログに書き込まれた Explain プランを解析して報告しないようにします。これは、PostgreSQL バージョン < 9.0 で、ログに説明プランがあるときに pgBadger が壊れたレポートを生成する場合に便利です。

下位互換性:

  • デフォルトでは、pgBadger はクエリを 100000 文字まで切り捨てます。この任意の値は、オプション –maxlength. を使用して調整できます。以前の動作ではクエリが切り捨てられませんでしたが、これにより過剰なリソースが使用される可能性がありました。デフォルトのサイズを制限する方が安全であり、サイズ制限により、ほとんどの場合、切り捨てが許可されない可能性があります。ただし、クエリが 25000 文字を超える場合、クエリは整形されません。

変更と謝辞の完全な一覧は次のとおりです。

  • 機能しない –exclude-client オプションを修正しました。レポートを提供してくれた John Walsh に感謝します。
  • RDS ログ解析と –exclude-client. の回帰テストを追加します。
  • pgbouncer ログ ファイルの進行状況バーを修正しました。 “queries” ラベルは、pgbouncer ログ ファイルの “stats” で変更されます。
  • グラフィカル Explain ツールの URL をオーバーライドするために使用されるコマンド ライン オプション –explain-url を追加します。機能リクエストをくださった Christophe Courtois に感謝します。
  • pgbouncer 1.11 新しいログ形式へのサポートを追加します。レポートを提供してくれた Dan Aksenov に感謝します。
  • zstd および lz4 圧縮形式を処理します。パッチを提供してくれた Adrien Nayrat に感謝します。
  • AWS redshift ログ形式のサポートと自動検出を追加します。復元リクエストをくださった Bhuvanesh に感謝します。
  • redshift ログ形式に関するドキュメントを更新します。
  • 新しいオプション –no-week を追加して、増分モードで週次レポートを作成しないように pgbadger に指示します。機能リクエストをくださった cleverKermit17 に感謝します。
  • Windows 上の pgBadger を破壊するファイル パスのパターン マッチを修正します。
  • 独自の文字セットを使用しても、キリル文字やその他のエンコーディングのステートメントパラメーターがHTMLレポートに正しく表示されない問題#554を修正しました。このリグレッションは、よく知られたPerlの「Wide character in print」エラーメッセージへの修正で導入されました。そのパッチを取り消し、以前の動作に戻すための新しいコマンドラインオプション–wide-charを追加しました。「Wide character in print」が表示される場合は、このオプションをpgbadgerコマンドに追加してください。キリル文字とフランス語のエンコーディングの回帰テストも追加しました。報告してくださった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 に感謝します。
  • 残りのテストでは圧縮ファイル拡張子 regexp を使用し、別の条件で .bin 拡張子を抽出します。
  • zstd および lz4 圧縮形式を処理します。パッチを提供してくれた Adrien Nayrat に感謝します。
  • Windows 上の SIGUSR2 の残りの呼び出しを修正します。 inrapさん、レポートありがとうございます。
  • サイズが不明なログ ファイルの進行状況バーを修正しました。
  • 新しいコマンド ライン オプション –command を追加して、pgBadger が標準入力のログ エントリを取得するために実行するコマンドを設定できるようにします。機能リクエストをくださった Justin Pryzby に感謝します。
  • 新しいコマンド ライン オプション –noexplain を追加して、pgBadger が auto_explain 拡張機能によってログに書き込まれた Explain プランを解析して報告しないようにします。これは、PostgreSQL バージョン < 9.0 で、ログに説明プランがあるときに pgBadger が壊れたレポートを生成する場合に便利です。機能リクエストをくださった Massimo Sala に感謝します。
  • コマンド ラインでプレフィックスが設定されている場合の RDS ログ解析を修正しました。 Bing Zhao さん、レポートありがとうございます。
  • rds ログ形式のインクリメンタル モードを修正します。 Bing Zhao さん、レポートありがとうございます。
  • RDS ログ解析の可能性を修正しました。レポートを提供してくれた James van Lommel と Simon Dobner に感謝します。
  • ステートメントの分類を修正し、回帰テストを追加します。 alexanderlaw さん、レポートありがとうございます。
  • IN 句内の単一文字の匿名化を修正しました。 Massimo Sala さんのレポートに感謝します。
  • client/user/db 情報のない行の RDS ログ解析を修正しました。 Konrad さん、報告ありがとうございます。

v11.1 · 2019-09-16

pgBadger のこのリリースでは、3 か月以降にユーザーから報告されたいくつかの問題が修正されています。また、いくつかの新機能とレポートも追加されます。

  • 準備または解析段階で最も時間を消費する上位 N クエリのレポートを追加します。
  • バインド段階で最も時間を消費する上位 N クエリのレポートを追加します。
  • クエリーのprepare/bind/execute各処理の時間レポートを追加しました。全体統計レポートの新しい「Duration」タブに表示します。例: 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 オペレーティング システムのサポートを復元します。

いくつかのバグ修正と機能強化もあります。

  • ツール pod2markdown を使用して、自動生成された Markdown ドキュメントを README.md に追加します。コマンドが存在しない場合、ファイルは生成されません。パッチを提供してくれた Derek Yang に感謝します。
  • アクション WITH を CTE に変換します。これは、前回のリリースで導入された回帰です。
  • Windows オペレーティング システムのサポートを修正
  • RDS および CloudWatch ログ形式へのサポートを追加します。pgbadger がこのログ形式を自動検出できない場合は、-f rds を使用します。機能リクエストをくださった peruuparkar に感謝します。
  • オプション -f を修正 |すべてのファイルに適用されなかった –format は、ログ形式の自動検出が失敗したパラメータ リストから取得され、形式は解析された最初のファイルから取得されました。 Levente Birta さんのレポートに感謝します。
  • ソース ドキュメント ファイルを更新して、pgBadger v7.x への参照を v11 に置き換えます。パッチを提供してくれた Will Buckner に感謝します。
  • ページ全体が巨大なクエリで占められるのを避けるために、上位クエリの高さ表示サイズを制限します。パッチを提供してくれたilias ilisepe1に感謝します。
  • クエリのオーバーフローと「最も遅い個々のクエリ」の詳細を修正しました。
  • ファイル、ディレクトリ、ワイルドカードの SSH URI を修正します。パッチを提供してくれた tbussmann に感謝します。
  • ドキュメント内の URI サンプルを修正します。パッチを提供してくれた tbussmann に感謝します。
  • –rebuild が使用されている場合、デフォルト出力ファイルの使用メッセージを非表示にします。
  • make 時に POD ドキュメントを作成しないように、usage() 出力に余分な改行を追加します。
  • ドキュメントの –exclude-client オプションの説明を再適用します。レポートを提供してくれた Christoph Berg に感謝します。

v11.0 · 2019-06-25

pgBadger のこのリリースでは、いくつかの主要な新機能が追加され、過去 4 か月以降にユーザーから報告されたいくつかの問題が修正されています。新機能:

  • カーソル関連のクエリ (DECLARE、CLOSE、FETCH、MOVE) を新しいクエリ タイプ CURSOR に再グループ化します。

  • より多くの一時ファイルを生成する上位バインド クエリを追加します。 log_connection と log_disconnection をアクティブにする必要があります。

  • –exclude-client コマンド ライン オプションを追加して、指定したクライアント IP のログ エントリを除外できるようにします。複数回使用できます。

  • –begin および –end フィルターでのみ時間の使用を許可します。

  • -H、–html-dir オプションを追加すると、HTML レポートを増分モードで書き込む必要がある別のパスを設定できるようになります。バイナリ ファイルは、-O、–outdir オプションで定義されたディレクトリに残ります。

  • 追加 -E | –explode オプションを使用して、メイン レポートをデータベースごとに 1 つのレポートに展開します。データベースに関係しないグローバル情報が postgres データベース レポートに追加されます。

  • データベースごとのレポートを増分モードに追加します。このモードでは、データベースごとに専用の増分レポートを含むサブディレクトリが存在します。

  • Heraku の PostgreSQL logplex 形式にサポートを追加します。ログは以下を使用して解析できます。

    heroku logs -p postgres | pgbadger -f logplex -o heroku.html -

  • クエリが 10Kb を超える場合、まずすべての定数文字列パラメータのサイズを 30 文字に制限し、その後クエリは 10Kb に切り詰められます。これにより、たとえば bytea を挿入するときに、pgbadger が非常に長いクエリで時間を無駄にしたりハングしたりすることがなくなります。 10Kb 制限は、–maxlength コマンド ライン パラメーターで制御できます。クエリは、この最初のサイズ制限試行後にのみ、maxlength 値に正規化または切り詰められます。

この新しいリリースでは、古いバイナリ ファイルまたは JSON ファイルとの下位互換性が失われます。これは、インクリメンタル モードでは古いバイナリ ファイルを読み取ることができないことも意味します。 pgBadger を更新して古いレポートを保持したい場合は、新しい週の初めにアップグレードするように注意してください。そうしないと、週次レポートが壊れてしまいます。 pgBadger は警告を出力し、古いバイナリ ファイルをスキップするだけです。

いくつかのバグ修正と機能強化もあります。

  • バージョンに関する警告を追加し、互換性のないバイナリ ファイルのロードをスキップします。
  • コード フォーマッタを pgFormatter 4.0 に更新します。
  • Windows OS での pgbadger のハングを修正します。レポートを提供してくれた JMLessard に感謝します。
  • pgBadger v11 の新しいバイナリ ファイル形式と互換性があるように tools/pgbadger_tools スクリプトを更新します。
  • より多くの一時ファイルを生成する上位バインド クエリを追加します。この収集は、postgresql.conf で log_connection と log_disconnection がアクティブ化されている場合にのみ可能です。機能リクエストをくださった Ildefonso Camargo に感謝します。
  • タイムゾーンの自動検出を修正しました。修正してくれたmassimosalaに感謝します。
  • –nograph が使用されている場合は、残りのグラフを一部削除します
  • –normalized-only を使用する場合、.txt 拡張子の使用を強制します。
  • logplex 形式での自動バキューム/分析のレポートを修正しました。 Konrad zichul さんのレポートに感謝します。
  • Windows オペレーティング システムでの進行状況バーの使用を修正しました。レポートを提供してくれた JMLessard に感謝します。
  • `$prefix_vars{’t_time’} を使用してログ時間を保存します。パッチを提供してくれた Luca Ferrari に感謝します。
  • 使用方法とドキュメントを更新して、pgbadger 呼び出しから perl コマンドを削除します。パッチを提供してくれた Luca Ferrari に感謝します。
  • 日付なしで開始時刻と終了時刻を使用します。パッチを提供してくれた Luca Ferrari に感謝します。
  • Readme ファイルに非常に小さなスペルと文法の修正を追加しました。パッチを提供してくれた ofni yratilim に感謝します。
  • SSH を使用してリモート パスを修正します。パッチを提供してくれた Luca Ferrari に感謝します。
  • データベースごとのレポート機能で導入された新しい構造で動作するように回帰テストを更新します。
  • すべての開始パラメータと終了パラメータの小数秒を修正します。パッチを提供してくれた Luca Ferrari に感謝します。
  • ドキュメント URL を修正します。報告してくれた Kara Mansel に感謝します。
  • auto_explain の解析を修正しました。複数回使用できる -U オプションに関する詳細情報を追加します。レポートを提供してくれた Douglas J Hunley に感謝します。
  • 多くの HTML / CSS レポートが改善されました。パッチを提供してくれた Pierre Giraud に感謝します。
  • リソース ファイルを更新します。
  • logplex 形式の回帰テストを追加します。
  • HerokuのPostgreSQL logplex形式に対応しました。次のようにログを解析できます。 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に感謝します。
  • URI の使用に関する pgbadger ヘルプを修正しました。
  • 以前のパッチで導入された URI ssh での壊れたワイルドカードの使用を修正します。レポートを提供してくれた Tobias Bussmann に感謝します。
  • ログ ファイルへのパスにスペースを含む URI を許可します。レポートを提供してくれた Tobias Bussmann に感謝します。
  • ドキュメント内の URI サンプルを修正します。パッチを提供してくれた Tobias Bussmann に感謝します。
  • syslog テストに 10s を超える時間がかかる場合でも失敗しないように t/02_basics.t を修正しました。パッチを提供してくれた Christoph Berg に感謝します。

8.4 - pgBadger 10.x リリース ノート

pgBadger 10.x シリーズの完全なアップストリーム リリース ノート

これらのエントリは、pgBadger 10.x の完全なアップストリーム変更レコードを最新のものから順に保存します。

v10.3 · 2019-02-14

pgBadger のこのリリースは、ログ形式の自動検出の問題とユーザーから報告された別の pgBouncer ログ解析の問題を修正するメンテナンス リリースです。新しい機能もあります。

-o | --outfileオプションを複数回指定し、1つのコマンドで複数の形式を出力できるようになりました。例:
    pgbadger -o out.html -o out.json /log/pgsql-11.log
HTMLとJSONの2つのレポートが生成され、対応する2つのファイルに保存されます。

いくつかのバグ修正と機能強化もあります。

  • データベース、ユーザー、クライアント、またはアプリケーションに関するフィルターが要求された場合の統計レポートを修正します。一部のクエリは報告されませんでした。
  • pg>=10 のデフォルトのログ行プレフィックスの自動検出を修正しました。
  • 「非標準」ログ行プレフィックスを持つログ ファイルの自動検出を修正します。 –prefix で %t、%m、%n、および %p または %c を指定する場合は、形式を stderr に設定します。レポートを提供してくれた Alex Danvy に感謝します。
  • 行末の余分なスペースを削除します。
  • syslog パーサーに最小限のテストを追加します。
  • autodetect_format() の呼び出しを修正します。
  • maxlength が使用されている場合の Truncate ステートメント。パッチを提供してくれた Thibaud Madelaine に感謝します。
  • 複数の出力形式のテストを追加します。
  • -o | –outfileオプションを複数回指定し、1つのコマンドで複数の形式を出力できるようになりました。例: pgbadger -o out.txt -o out.html -o - -x json /log/pgsql-11.log この例では、pgbadgerはテキストとHTMLの2つのレポートを生成し、対応する2つのファイルに保存します。さらに、標準出力にJSONレポートを出力します。機能を要望してくださったNikolayに感謝します。
  • 出力フォーマットの検出と出力ファイル名の設定を専用関数 set_output_extension() に移動します。
  • 別の pgBouncer ログ解析の問題を修正します。レポートを提供してくれた Douglas J. Hunley に感謝します。

v10.2 · 2018-12-27

pgBadger のこのリリースは、過去 3 か月間にユーザーから報告された問題を修正するメンテナンス リリースです。いくつかの新機能もあります。

  • pgbouncer 1.8 統計ログ形式のサポートを追加します。
  • JavaScript グラフのタイムゾーンを自動調整します。

新しいコマンド ライン オプションがあります。

  • –exclude-db オプションを追加して、指定したデータベース以外のすべてに関するレポートを計算します。

  • http または ftp リモート PostgreSQL ログ ファイルのダウンロードのサポートを追加します。ログ ファイルは、curl コマンドを使用したダウンロード中に解析され、ディスクには保存されません。 SSH リモート ログ解析では、コマンド ライン引数として uri を使用して、PostgreSQL ログ ファイルを指定できます。 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に感謝します。
  • Add チェックポイント距離キー/距離ピークの値。
  • pgbouncer の解析とリクエスト スループット レポートを修正します。 Levente Birta さんのレポートに感謝します。
  • 入力形式として csv ではなく csvlog の使用を修正しました。
  • pgbouncer 1.8 統計ログ形式のサポートを追加します。 Levente Birta さんのレポートに感謝します。
  • csvlog で無効になっている並列処理に関する警告を追加します。 cstdenis さん、レポートありがとうございます。
  • -j および -J オプションの csvlog 形式による単一プロセスの強制に関する使用状況出力に情報を追加します。 cstdenis さん、レポートありがとうございます。
  • SSH 経由の増分分析中の複数行ログの不明な行形式エラーを修正します。 Wooyoung Cho さん、レポートありがとうございます。
  • -k (–insecure) オプションをcurl コマンドに追加して、自己署名証明書を使用してサーバーからログをダウンロードできるようにします。
  • JavaScript グラフのタイムゾーンを自動調整します。機能リクエストをくださった Massimino Sala に感謝します。
  • pgBadgerによるHTTP経由のログファイルのダウンロードに対応しました。例: /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 ログ パーサーにテストを追加します。
  • いくつかの小さなパフォーマンスの改善。
  • pgbadger 行 12314 にある有効なファイル記述子ではない問題を修正しました。
  • 起動時のプログレスバーにある不要な改行を修正しました。
  • circleci ファイルをプロジェクトから削除します。
  • テスト スイートの Bats と jq の依存関係を削除し、Test::Simple と JSON::XS に置き換えます。
  • リリース 10.0 で壊れたインクリメンタル モードと標準入力からの入力に特にテストを追加します。
  • pgbadger、ポッド、および README を同期し、いくつかの構文エラーを修正します。パッチを提供してくれた Christoph Berg に感謝します。
  • Perl モジュール JSON::XS を apt および yum リポジトリからインストールする方法に関するドキュメントを追加します。
  • インクリメンタル モードで CSS の URI を修正します。報告してくれた Floris van Nee に感謝します。
  • STDIN からログを検索する際の致命的なエラーを修正しました。レポートを提供してくれた Jacek Szpot に感謝します。
  • OSX ビルドで使用される SED を修正します。パッチを提供してくれた Steve Newson に感謝します。
  • 増分モードでの不正なゼロ除算を修正しました。 aleszeleny さん、レポートありがとうございます。
  • SQL::Beautify を pgFormatter::Beautify の v3.1 に置き換えます。

v10.0 · 2018-09-09

pgBadger のこのリリースは、いくつかの新機能を追加し、前回のリリース以降にユーザーから報告されたすべての問題を修正するメジャー リリースです。

  • pgbouncer syslog ログ ファイル形式のサポートを追加します。
  • すべての auto_explain 形式 (text、xml、json、yaml) へのサポートを追加します。
  • log_line_prefix の %q プレースホルダーへのサポートを追加します。
  • Michael Paquier 拡張機能の jsonlog 形式を追加します。-f jsonlog pgbadger を使用すると、ログを解析できるようになります。
  • SQL フォーマッタ/整形を pgFormatter の v3.0 に置き換えます。

新しいコマンドライン オプションがいくつかあります。

  • JSON 出力を整形するために –prettify-json コマンド ライン オプションを追加します。
  • –log-timezone +/-XX コマンド ライン オプションを追加して、解析される前にログ ファイルから読み取られる日付/時刻を調整するために使用する必要があるタイムゾーンの GMT からの時間数を設定します。クライアントのタイムゾーンが同じでない場合でも、-Z を使用してグラフのタイムゾーンを調整する必要がある場合があることに注意してください。
  • –include-time オプションを追加すると、表示したくない時間をすべて除外するのではなく、表示したい時間を選択できるようになります (–exclude-time)。

pgBadger プロジェクトと著作権は、Dalibo からプロジェクトの作成者および公式メンテナーに譲渡されました。リンクを更新してください:

ここ数年間、pgBadger に投資してくれた Dalibo の偉い人たち、特に pgBadger の推進に協力してくれた Damien Clochard と Jean-paul argudo に感謝したいと思います。

  • 増分モードでレポートされないチェックポイント距離と推定値を修正しました。 aleszeleny さん、レポートありがとうございます。
  • pgbouncer 同時セッション レポートのタイトルを修正しました。レポートを提供してくれた Jehan Guillaume De Rorthais に感謝します。
  • pgbouncer syslog ログ ファイル形式のサポートを追加します。機能リクエストをくださった djester に感謝します。
  • リモート ログが空の場合のエラーを修正しました。レポートを提供してくれた Parasit Hendersson に感謝します。
  • バイナリ形式でテストを修正します。バイナリ ファイルはプラットフォームに依存するため、生成する必要があります。レポートを提供してくれた Michal Nowak に感謝します。
  • 空の Explain プランが生成されるケースを修正しました。
  • コマンド ラインでプレフィックスを使用して自動検出されたデフォルト形式の解析を修正しました。
  • Makefile 内の git コマンドの依存関係を削除します。PL。
  • オプションの変更に関するドキュメントを更新し、必須のプレフィックスの [%l-1] 部分を削除します。
  • バキュームの解析を修正し、PostgreSQL 10 のシステム使用状況を分析します。パッチを提供してくれた Achilleas Mantzios に感謝します。
  • 一時ファイルアクティビティテーブルを修正しました。
  • インストール中に git への依存関係を削除します。
  • –log-timezone +/-XX コマンド ライン オプションを追加して、解析される前にログ ファイルから読み取られる日付/時刻を調整するために使用する必要があるタイムゾーンの GMT からの時間数を設定します。このオプションを使用すると、ログ内の時間が同じにならないため、日付/時刻を使用したログ検索がより困難になります。クライアントのタイムゾーンが同じでない場合でも、-Z を使用してグラフのタイムゾーンを調整する必要がある場合があることに注意してください。機能リクエストの xdexter とパッチの Julien Tachoire に感謝します。
  • auto_explain json 出力形式へのサポートを追加します。 dmiusさん、レポートありがとうございます。
  • auto_explain パーサーと 2 回カウントされていたクエリを修正しました。 zam6ak さん、レポートありがとうございます。
  • PostgreSQL 10 ログ メッセージと一致するようにチェックポイント正規表現を修正します。パッチを提供してくれた Edmund Horner に感謝します。
  • -f の説明を更新 | –format オプションに jsonlog 形式に関する情報を追加します。
  • バインド クエリと重複しないようにクエリの正規化を修正しました。値の正規化は単一の ? に変換されるようになりました。数値の 0 はなくなり、文字列の場合は 2 つの一重引用符が使用されます。 vadv さん、レポートありがとうございます。
  • ログレベル数を修正します。レポートを提供してくれた Jean-Christophe Arnu に感謝します
  • pgbadger を B::Lint のベア サブ名との互換性を高めます。
  • perlcritic を幸せにしました。
  • JSON 出力を整形するために –prettify-json コマンド ライン オプションを追加します。デフォルトの出力はすべて 1 行です。
  • Fix イベント配布レポート。
  • log_line_prefix に複数の %% が含まれる場合の –prefix のバグを修正します。 svb007 さん、ご報告ありがとうございます。
  • –log-timezone +/-XX コマンド ライン オプションを追加して、解析される前にログ ファイルから読み取られる日付/時刻を調整するために使用する必要があるタイムゾーンの GMT からの時間数を設定します。このオプションを使用すると、ログ内の時間が同じにならないため、日付/時刻を使用したログ検索がより困難になります。クライアントのタイムゾーンが同じでない場合でも、-Z を使用してグラフのタイムゾーンを調整する必要がある場合があることに注意してください。機能リクエストをくださった xdexter に感謝します。
  • キーワード リストから INDEXES を削除し、このリストに BUFFERS を追加します。
  • カーソルを使用したクエリの正規化を修正しました。
  • Dockerfile と docker run に関するドキュメントを削除します。 pgBadger は依存関係のない単一の Perl スクリプトとして提供され、任意のプラットフォームで使用できます。 docker を使用して pgbadger を実行するのはナンセンスです。何もインストールしたくない場合は、ファイル pgbadger を必要な場所にコピーして実行するだけです。
  • 一時ファイルのアクティビティがないときに壊れたグリッドを修正しました。パッチを提供してくれた Pierre Giraud に感謝します
  • log_in_duration_statement と log_duration + log_statement に関するドキュメント警告を追加します。パッチを提供してくれた Julien Tachoire に感謝します。
  • タイムゾーン オフセットを棒グラフに適用します。パッチを提供してくれた Julien Tachoire に感謝します。
  • 同じ PID のエラーが発生した場合は、現在の一時ファイル情報を削除します。パッチを提供してくれた Julien Tachoire に感謝します。
  • 例では一貫して app= を使用し、appname= をサポートします。使用例の一部ではプレフィックスに appname= が使用されていましたが、コードはそのトークンを認識しませんでした。すべての例で app= を使用し、プレフィックス パーサーに appname= を追加します。パッチを提供してくれた Christoph Berg に感謝します
  • オプション -J の間違った長い名前を修正し、–job_per_file. ではなく –Jobs にする必要がありました。レポートを提供してくれた Chad Trabant とパッチを提供してくれた Etienne Bersac に感謝します。
  • blib ファイルを無視します。パッチを提供してくれた Etienne Bersac に感謝します。
  • 整合性テストを追加します。パッチを提供してくれた damien clochard に感謝します。
  • doc の更新: stderr は -f. のデフォルトではありません。パッチを提供してくれた Christophe Courtois に感謝します。
  • ポッドと README を常に更新します。パッチを提供してくれた Etienne Bersac に感謝します。
  • いくつかの回帰テストを追加します。パッチを提供してくれた Etienne Bersac に感謝します。
  • editorconfig 構成を追加します。パッチを提供してくれた Etienne Bersac に感謝します。
  • gitignore から vi 一時ファイルをドロップします。パッチを提供してくれた Etienne Bersac に感謝します。
  • –include-time オプションを追加すると、表示したくない時間をすべて除外するのではなく、表示したい時間を選択できるようになります。これは、1 週間分のログから 1 日または 2 日だけを表示したい場合に便利です (複数の –exlucde-time オプションから 1 つの –include-time に簡素化されます)。パッチを提供してくれた Wesley Bowman に感謝します。
  • ポッドの構文を確認します。パッチを提供してくれた Etienne Bersac に感謝します。
  • ドキュメント テストに HACKING を追加します。パッチを提供してくれた Etienne Bersac に感謝します。
  • 廃止された –bar-graph オプションを削除します。パッチを提供してくれた Etienne Bersac に感謝します。
  • 誤解を招く .perltidyrc を削除します。このファイルの日付は 2012 であり、pgbadger コードは準拠とは程遠いものです。 perltidy の統合差分は 10k 行です。これを落としましょう。パッチを提供してくれた Etienne Bersac に感謝します。
  • SQL 形式での初期化されていない値の使用を修正しました。レポートを提供してくれた John Krugger と、レポートを提供してくれた Jean-paul Argudo に感謝します。

8.5 - pgBadger 9.x リリース ノート

pgBadger 9.x シリーズの完全なアップストリーム リリース ノート

これらのエントリは、pgBadger 9.x の完全なアップストリーム変更レコードを最新のものから順に保存します。

v9.2 · 2017-07-27

pgBadger のこのリリースは、いくつかの新機能を追加するメンテナンス リリースです。

  • チェックポイントの距離と推定値のレポートを追加します。
  • AWS Redshift キーワードのサポートを SQL コード整形ツールに追加します。
  • リモート モードでのログ形式の自動検出を追加して、pgbouncer ログ ファイルと PostgreSQL ログ ファイルをリモートで解析できるようにします。

いくつかのバグ修正と機能強化もあります。

  • 最後の範囲より上のデータが表示されなかったヒストグラムを含むレポートを修正しました。
  • ログ行番号パターン ([%l-n]) を使用しないjournalctlの解析を修正しました。レポートを提供してくれた Christian Schmitt に感謝します。
  • チェックポイントの距離と推定値のレポートを追加します。機能リクエストをくださった jjsantam に感謝します。
  • CSS および JavaScript ファイル tools/updt_embedded_rsc.pl. を更新するスクリプトによって実行される内容の詳細を追加します。
  • すべてのログ ファイルが空の場合は警告を出さず、コード 0 で終了します。
  • %regex_map のルックアップとして %n を含まない build_log_line_prefix_regex() を修正しました。パッチを提供してくれた Ghosthound に感謝します。
  • 「FATAL: cannot use CSV」のエラーレベルをWARNINGに変更しました。報告してくださったkong1manに感謝します。
  • 初期化されていない値の使用に関する警告を修正しました。 Payal さん、レポートありがとうございます。
  • エラー正規化への追加権限が拒否されました
  • pgbadger を pgFormatter の最新のコミット 5bdc018 に更新します。
  • AWS Redshift キーワードのサポートを追加します。機能リクエストをくださった cavanaug に感謝します。
  • クエリがキャンセルされたときに一時ファイル レポートに欠落していたクエリを修正しました。レポートを提供してくれた Fabrizio de Royes Mello に感謝します。
  • バインドされたパラメータを使用してクエリを正規化し、? に置き換えます。
  • 終了時刻が開始時刻より前になることを避けるための健全性チェック。パッチを提供してくれた Christophe Courtois に感謝します。
  • 多くのミスタイプの単語を修正し、文法的な修正を行います。バイナリ ファイルではなくプログラムを指す場合は、「pgBadger」を使用します。また、PgBouncer、GitHub、CSS などの “official” 式を使用します。 POD ファイルは README と同期されました。パッチを提供してくれた Euler Taveira に感謝します。
  • –disable-type top_canceled_info テストと終了リストが disable_type テスト内にある必要がある場合、Menu が壊れます。その中に、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 オプションを追加して、カウント付きのログ内で見つかったすべての正規化されたクエリを含むテキスト ファイルを生成します。
  • 一意のセッション ID として %c (セッション ID) が %p (pid) を置き換えることを許可します。
  • イベント レポートにロック待機メッセージを追加します。
  • –start-monday オプションを追加して、暦週をデフォルトの日曜日ではなく月曜日から開始します。

いくつかのバグ修正と機能強化もあります。

  • SQLState がログ行プレフィックスで使用可能な場合のエラー クラス分布のレポートを追加します。機能リクエストをくださった jacks33 に感謝します。
  • サイズ変更時の増分グローバル インデックスを修正しました。 clomdd さん、レポートありがとうございます。
  • コマンド タグ log_line_prefix プレースホルダー %i を修正してスペース文字を許可します。
  • –exclude-line オプションを修正し、保存が有効で –noreport が使用されている場合に古いディレクトリを削除します。
  • 「バキュームアクティビティテーブル」のタイプミスを修正。パッチを提供してくれた Nicolas Gollet に感謝します。
  • 自動バキューム レポートを修正しました。パッチを提供してくれた 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さん、ご報告ありがとうございます。
  • 標準入力からのログ エントリによる不要なログ形式の自動検出を修正します。報告してくれた Jesus Adolfo Parra に感謝します。
  • 正規表現の “stop” 文字に左開き括弧を追加して、プレフィックス内の DB クライアントを検索し、ソース ポートを含む PostgreSQL クライアント文字列形式を処理します。パッチを提供してくれた Jon Nelson に感謝します。
  • いくつかのスペルミスを修正します。パッチを提供してくれた Jon Nelson に感謝します。
  • 一意のセッション ID として %c (セッション ID) が %p (pid) を置き換えることを許可します。 Jerryliuk さん、レポートありがとうございます。
  • pgbadger が、おそらく 10.0 で使用されるデフォルトの log_line_prefix を解析できるようにします: ‘%m [%p] '
  • インタープリター呼び出しで欠落している最初の行を修正します。
  • CSV レポートで欠落している平均値を修正します。富田洋介さん、レポートありがとうございました。
  • autodetect_format() メソッドのエラー メッセージを修正しました。
  • –start-monday オプションを追加して、暦週をデフォルトの日曜日ではなく月曜日から開始します。機能リクエストをくださった Joosep Mae に感謝します。
  • –histo-average オプションを修正します。レポートを提供してくれた Yves Martin に感謝します。
  • ドキュメント内の –ssh-option の複数形を削除します。 mark-a-s さん、レポートありがとうございます。
  • –exclude-time フィルターを修正し、不要な行をスキップするコードと進行状況バーを更新するコードを書き換えます。レポートを提供してくれた Michael Chesterton に感謝します。
  • プレフィックス内の %h の代わりに %r プレースホルダーのサポートを修正しました。

v9.0 · 2016-09-02

pgBadger のこのメジャー リリースは、3 をブートストラップするためのポートであり、すべてのリソース ファイル (CSS および Javascript) のバージョン アップグレードです。いくつかのバグ修正と機能強化もあります。

古い増分レポートとの下位互換性が維持される場合があります。

  • リソース ファイルのソースとライセンスは、専用のサブディレクトリに配置されるようになりました。 pgbager スクリプトに埋め込まれた縮小バージョンを更新するためのスクリプトが追加されました。ヘルプと機能リクエストを提供してくれた Christoph Berg に感謝します。

  • log_connection が有効で、log_line_prefix に接続文字列が含まれていない場合は、接続文字列から user/database/host の検出を試みます。 正規表現を拡張して、データベース名、ユーザー名、クライアント IP アドレス、およびアプリケーション名を自動検出します。現在の正規表現は次のとおりです。

    db => qr/(?:db|database)=([^,]*)/;
    user => qr/(?:user|usr)=([^,]*)/;
    client => qr/(?:client|remote|ip|host)=([^,]*)/;
    appname => qr/(?:app|application)=([^,]*)/;
    
  • 新しい CSS および Javascript ファイル用のサブディレクトリを作成することにより、増分モードでの古いバージョンの pgbadger との下位互換性を追加します。このサブディレクトリには、pgbadger のメジャー バージョン番号が付けられています。

  • 新しいフォント サイズでは小さすぎる pgbadger ロゴのサイズを大きくします。

  • すべてのレポートの詳細情報を正規化します。

  • ロック レポートの重複コピー アイコンを修正しました。

  • セッション時間のヒストグラムに欠落していたグラフを修正しました。レポートを提供してくれた Guillaume Lelarge に感謝します。

  • リソース ファイルで使用されるライセンスを記録した LICENSE ファイルを追加します。パッチを提供してくれた Christoph Berg に感謝します。

  • jqplot ライブラリにパッチを追加して、いくつかのチャートをダウンロードしようとしたときの無限ループを修正します。この問題の解決に協力してくれた Julien Tachoires に感謝します。

  • Script tools/updt_embedded_rsc.pl は、リソース ファイル resources/jquery.jqplot.js にパッチを適用しますが、すでに適用されている場合には文句を言いません。

  • 円グラフ データセットの末尾にある最後のカンマを 1 つ削除します。 Julien Tachoires さんのレポートに感謝します。

  • 正規化エラーの表示変更

  • 未使用または自動生成されたファイルを削除します

  • すべてのリソース ファイル (js+css) を更新し、pgbadger で使用される JavaScript ライブラリのソースを含めるディレクトリを作成します。新しいスクリプト tools/updt_embedded_rsc.pl もあり、これらのファイルの縮小バージョンを生成し、pgbadger に埋め込むために使用できます。 このスクリプトは、FontAwesome.otf オープン TrueType フォントを fontawesome.css ファイルに埋め込みます。

9 - サポートと貢献

バグの報告、機能要望、パッチの提供、およびPostgreSQLの専門サポートの利用

pgBadger はオープンプロジェクトとして維持されています。バグ報告、機能要望、ドキュメントの修正、パッチは、上流の GitHub リポジトリ経由で処理されます。

バグおよび機能要望

  1. 最新リリース版にアップグレードし、動作が依然として発生するか確認してください。
  2. 既存の回答を検索するには、オープンな問題 および クローズされた問題 を確認してください。
  3. 問題を再現する最小限の安全なログサンプルおよびコマンドラインに簡略化してください。
  4. 認証情報、機密SQL、バインド値、ホスト名、アドレス、および業務データを削除します。
  5. pgBadger のバージョン、オペレーティングシステム、入力形式、正確なオプション、観測結果、期待結果を含む 新しいIssue を開いてください。

クラッシュやパーサーの誤りの場合、境界を再現するために必要な最小限のサニタイズ済みログ行のみを含めてください。完全な本番ログや生成されたレポートは、公開Issueへの添付にはほとんどの場合適していません。

パッチを提供する

プロジェクトには .editorconfig ファイルが含まれており、一貫したスペース設定が行われます。ユーザーが見える動作に影響を与える変更を行う際は、コマンドヘルプ、POD、および生成されたMarkdownドキュメントを同期させてください。

上流ドキュメントのワークフローは以下の通りです:

$ perl Makefile.PL
$ make README

doc/pgBadger.pod は長形式の主要なソースです。pgbadger --help は概要を提供し、README ファイルは生成されたビューです。プルリクエストを提出する前に、関連するテストを実行してください。

商用サポート

pgBadger プロジェクトは、ライセンス下で保守またはサポートを保証していません。PostgreSQL のログ処理、パフォーマンス分析、レポート自動化に関する有料サポートが必要な場合は、PostgreSQL プロフェッショナルサービスディレクトリ をご参照ください。

10 - ライセンスとクレジット

PostgreSQL のライセンス条項、著作者、およびバンドルされているサードパーティ コンポーネント

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 v4.x のデザインは、「Art is code」会社から提供されました。
  • このウェブサイトは Gilles Darold の作品です。
  • 貢献者は、上流の ChangeLog 全体にクレジットされます。

埋め込みリソースとレポート リソース

SQL::Beautify Perl モジュールの修正バージョンが pgBadger に埋め込まれています。この作品の著作権は © 2009 Jonas Kramer にあり、Artistic License 2.0 に基づいて公開されています。

生成されたレポート リソースには、次のような独自の通知があります。

コンポーネントライセンス
bean.js, Bootstrap, jQuery, UnderscoreMIT
jqPlotMIT または GPL-2.0、ユーザーの選択
Font AwesomeフォントSIL Open Font License 1.1
Font Awesome CSSMIT

ローカル ソース スナップショットには、完全なアップストリーム resources/LICENSE が保持されます。バンドルされたサンプル レポートは過去に生成された成果物であり、元の埋め込み通知とリソースのバージョンが保持されます。

ドキュメントのスナップショット

このpig.center版では、アップストリームのドキュメントが Hugo ページに再編成され、ナビゲーションと中国語での読解支援が追加され、忠実度が重要な場合には正確なコマンド ヘルプと ChangeLog テキストが保存されます。 pgBadger のソース ドキュメントは PostgreSQL ライセンスの下に残ります。元のプロジェクト名、作成者、上流リンクは保持されます。