Docker コンテナ内の PostgreSQL クエリをログ記録してトラブルシューティングを行う
PostgreSQL 公式 Docker イメージでクエリをすべてログ記録する方法
概要
手順
- Dockerfile で環境変数を設定する
ENV PG_LOG_QUERIES=1
- Docker コマンドを実行する
docker run -e PG_LOG_QUERIES=1 postgres
- ログを確認する
ログは、postgres
コンテナ内に /var/log/postgresql/postgresql.log
ファイルに記録されます。
ログフォーマットは次のとおりです。
2024-05-14 21:04:05 PDT [12345] LOG: statement: SELECT * FROM customers;
2024-05-14 21:04:05 PDT [12345] DETAIL: duration: 0.010 ms
2024-05-14 21:04:05 PDT
: ログのタイムスタンプ[12345]
: プロセス IDLOG
: ログレベルstatement
: 実行された SQL ステートメントDETAIL
: ステートメントの実行時間
ログの使用方法
ログを使用して、次のことを確認できます。
- 実行されている SQL クエリ
- 各クエリの所要時間
- クエリのパフォーマンスに関する潜在的な問題
注意事項
- すべてのクエリがログ記録されるため、ログファイルが大きくなる可能性があります。
- デバッグ目的でのみログ記録を有効にすることをお勧めします。
- ログファイルは機密情報を含む可能性があるため、アクセス制御を適切に設定する必要があります。
PostgreSQL 公式 Docker イメージでクエリをすべてログ記録するには、Dockerfile で PG_LOG_QUERIES
環境変数を設定する必要があります。 ログを使用して、実行されている SQL クエリ、各クエリの所要時間、クエリの潜在的なパフォーマンス問題を確認できます。
PostgreSQL 公式 Docker イメージでクエリをすべてログ記録するサンプルコード
Dockerfile
FROM postgres
ENV PG_LOG_QUERIES=1
docker run コマンド
docker run -e PG_LOG_QUERIES=1 -d postgres
ログ確認
2024-05-14 21:04:05 PDT [12345] LOG: statement: SELECT * FROM customers;
2024-05-14 21:04:05 PDT [12345] DETAIL: duration: 0.010 ms
注意事項
PostgreSQL 公式 Docker イメージでクエリをログ記録するその他の方法
pgBadger は、PostgreSQL クエリログを分析して、パフォーマンス問題を特定するのに役立つツールです。 ログファイルのサイズを縮小し、より読みやすい形式でログを保存することもできます。
使用方法:
- pgBadger をインストールします。
pgBadger
コマンドを使用してログファイルを分析します。
pgbadger /var/log/postgresql/postgresql.log > output.log
Logstash は、さまざまなソースからのデータを収集して処理し、別の出力先に送信するツールです。 PostgreSQL ログを収集して、Elasticsearch や Kibana などの分析ツールに送信するために使用できます。
- Logstash をインストールします。
- PostgreSQL ログを収集するための Logstash 設定ファイルを作成します。
- Fluentd をインストールします。
pgBadger、Logstash、Fluentd の比較
機能 | pgBadger | Logstash | Fluentd |
---|---|---|---|
インストールの容易さ | 容易 | 中程度 | 中程度 |
セットアップの容易さ | 容易 | 中程度 | 中程度 |
ログの分析機能 | 基本的な | 高度な | 高度な |
ログの可視化機能 | 基本的な | 高度な | 高度な |
リソース要件 | 低い | 中程度 | 中程度 |
PostgreSQL 公式 Docker イメージでクエリをログ記録するには、いくつかの方法があります。 最適な方法は、ニーズと要件によって異なります。
- シンプルで使いやすいソリューションが必要な場合は、
PG_LOG_QUERIES
環境変数がおすすめです。 - ログを分析してパフォーマンス問題を特定する必要がある場合は、pgBadger がおすすめです。
- ログを収集して、Elasticsearch や Kibana などの分析ツールに送信する必要がある場合は、Logstash または Fluentd がおすすめです。
上記の情報は提供のみを目的としており、いかなる保証もありません。 PostgreSQL 公式 Docker イメージの使用に関する問題については、PostgreSQL コミュニティに問い合わせてください。
postgresql docker