本稿では、Postgres Operatorを使用してPostgreSQLのクエリーログを出力する方法について説明します。Postgres Operatorは、Kubernetes環境でPostgreSQLデータベースクラスターの管理を自動化するツールです。ログ出力の設定を適切に行うことで、データベースの操作やパフォーマンス分析に役立つ情報を取得できます。
前提条件
- Kubernetesクラスターが設定されていること
- Postgres Operatorがインストールされ、設定が完了していること
ログ出力の設定方法
Postgres Operatorを使用してPostgreSQLのインスタンスを設定する際に、postgresql
リソースのspec
セクション内でログに関するパラメータを設定します。以下はその一例です。
apiVersion: acid.zalan.do/v1
kind: postgresql
metadata:
# メタデータ設定はここで行います(この例では割愛します)。
spec:
# スペック設定はここで行います(この例では割愛します)。
postgresql:
version: "15"
parameters:
log_destination: 'stderr' # ログの出力先を指定します。
log_statement: 'all' # 実行されるすべてのSQLステートメントをログに記録します。
log_connections: 'on' # 新しいデータベース接続のログ記録を有効にします。
log_disconnections: 'on' # データベースからの切断をログに記録します。
logging_collector: 'false' # ログ収集機能を無効にします(stderrへの直接出力を意味します)。
設定パラメータの説明
-
log_destination
: ログの出力先を指定します。この例ではstderr
に設定していますが、csvlog
やsyslog
など他のオプションも利用可能です。 -
log_statement
: 実行されるSQLステートメントのログ記録レベルを設定します。all
を指定すると、すべてのクエリがログに記録されます。 -
log_connections
: このオプションをon
に設定すると、新しい接続がログに記録されます。 -
log_disconnections
: このオプションをon
に設定すると、接続の切断がログに記録されます。 -
logging_collector
: PostgreSQLのログ収集機能を有効または無効にします。stderr
への出力を選択した場合は、false
に設定します。
注意点
- 上記の設定はPostgreSQLバージョン15の例です。使用するPostgreSQLのバージョンに応じて、利用可能なパラメータが異なる場合がありますので、公式ドキュメントを参照してください。
- ログの出力設定を変更した後は、Postgres Operatorを通じてデータベースクラスターの再デプロイが必要になる場合があります。
この設定を適用することで、PostgreSQLの運用監視やトラブルシューティングに役立つ詳細なログ情報を取得することが可能になります。