ログ分析のための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`.csvpg_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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- pg_stat_statements:上位クエリ
- ログ分析のためのpgBadger
- コネクションプーリング:PgBouncer
- キャパシティプランニングと肥大化監査