0Pricing
SQL Academy · レッスン

ログ分析のためのpgBadger

PostgresのログをpgBadgerで解析し、遅いクエリ、ロック待ち、接続パターンのHTMLレポートを作成します。

「ログ分析のためのpgBadger」はCoddyKit上の無料SQL Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSQL Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SQL Academyコースには全4レッスンが含まれています。

pgBadgerとは

PerlベースのPostgreSQLログアナライザーで、遅いクエリ、ロック待ち、エラー、接続パターンなどの美しいHTMLレポートを生成します。ログに対して定期的に実行してください。

ログを設定する

postgresql.conf:

log_destination = 'csvlog'
logging_collector = on
log_directory = 'pg_log'
log_min_duration_statement = '500ms'
log_lock_waits = on
log_temp_files = 0
log_checkpoints = on
log_connections = on
log_disconnections = on
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '

pgBadgerを実行する

レポートを生成します:

pgbadger /var/log/postgresql/postgresql-2024-03-15.csv \
  -o report.html

# Multiple files:
pgbadger /var/log/postgresql/*.csv -o report.html

レポートの内容

  • 例を含む、最も遅いクエリ
  • 最も頻繁に実行されるクエリ
  • 最も時間を消費するクエリ
  • ロック待ち
  • エラー
  • 時間経過に伴う接続パターン
  • 一時ファイルの使用状況
  • チェックポイントとバキュームの活動状況

増分モード

継続的にログを分析する場合は、毎日レポートを生成します:

pgbadger -I -O /var/www/pgbadger/ /var/log/postgresql/*.csv
# Updates an HTML dashboard incrementally.

Cronで自動実行する

夜間ジョブ:

0 1 * * * pgbadger -I -O /var/www/pgbadger/ /var/log/postgresql/postgresql-`date +%F`.csv

pg_stat_statementsとの比較

pg_stat_statements: データベース内で集計されたメトリクスです。
pgBadger: 生のログを解析し、集計では見つけにくいパターン(ロック待ち、エラー、接続の集中)を検出します。

ロック待ちのパターンを抽出する

pgBadgerはロック待ちを要約します。どのクエリがどのクエリを、どのくらいの時間ブロックしたかを確認できます。デッドロックや競合の問題を診断するのに最適です。

エラーセクション

すべてのエラーコードの件数を確認できます。「23505 unique_violation: 12,000回」は警告です。アプリケーションが重複INSERTをリトライしています。

一時ファイル

ディスクにデータを書き出しているクエリです(ソートやハッシュがwork_memに収まらない場合):

log_temp_files = 0     -- log all temp file usage
-- pgBadger summarises queries that created temp files.

クラウドでの代替手段

RDS Performance Insights、Cloud SQL Query Insightsなどは、マネージド環境で同様の分析を行います。通常は同じ統計情報ソースを基盤としています。

まとめ

pgBadgerはPostgresのログをダッシュボードに変換します。

  • log_min_duration_statementを設定する
  • 定期的にHTMLレポートを生成する
  • ロック待ち、一時ファイル、エラーのパターンを見つける
  • pg_stat_statementsを補完する

確認問題

アプリケーションが多数のINSERTをリトライしていることが分かりました。確認するには、どのPostgresのログ設定が役立つでしょうか。

よくある質問

「ログ分析のためのpgBadger」レッスンは無料ですか?

はい。「ログ分析のためのpgBadger」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SQL Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SQL Academyコースには全4レッスンが含まれています。

「ログ分析のためのpgBadger」で何を学びますか?

PostgresのログをpgBadgerで解析し、遅いクエリ、ロック待ち、接続パターンのHTMLレポートを作成します。 ブラウザで直接実行するハンズオンコードでSQL Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

SQL Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSQL Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「ログ分析のためのpgBadger」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSQL Academyレッスンでコードを書いて実行できますか?

はい。すべてのSQL Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. pg_stat_statements:上位クエリ
  2. ログ分析のためのpgBadger
  3. コネクションプーリング:PgBouncer
  4. キャパシティプランニングと肥大化監査
← SQL Academyに戻る