説明
Cloud SQL for PostgreSQL の log_min_duration_statement は、完了した SQL 文の実行時間に応じてログを記録します。0 は完了したすべての SQL 文を記録し、正の値はミリ秒単位の最低実行時間を指定します。-1 はこの機能を無効にします。
基準が低すぎるとログ量が増えます。一方、高すぎる基準や無効化は、性能問題の調査に必要な記録を減らす可能性があります。-1 がすべての環境に適したセキュリティ設定とは限りません。
想定される影響
- 過剰な記録はストレージ使用量、ログ分析コスト、データベースの処理負荷を増やす可能性があります。
- 記録範囲が不足すると、遅いクエリや性能低下の原因を調べにくくなる可能性があります。
- 記録される SQL 文に機密情報が含まれる場合があるため、ログへのアクセスと保持期間の管理が必要です。
対処方法
- ワークロードと診断目的に合う実行時間の基準を選んでください。遅いクエリを調べる場合は、適切な正の値を検討してください。
settings.database_flagsに意図した値を明示し、他のログ設定と併せて収集範囲を確認してください。- 変更後のログ量と性能を確認し、ログへのアクセスと保持期間を制限してください。
google.cloud 1.14.0 の SQL モジュールは既存インスタンスの更新に対応していません。以下は作成用の例です。既存インスタンスのフラグは、対応する Cloud SQL ツールや API で変更してください。
例
以下はすべての SQL 文の記録と、この機能の無効化を比較する例です。サポート対象の PostgreSQL バージョンとインスタンスのマシンタイプ、実際のプロジェクト名とリソース名、サービスアカウントの認証情報を別途用意してください。
変更前
yaml
- name: Cloud SQL 인스턴스 생성
google.cloud.gcp_sql_instance:
auth_kind: serviceaccount
name: "{{ resource_name }}-db"
project: test_project
region: us-central1
database_version: POSTGRES_13
settings:
tier: db-custom-1-3840
database_flags:
- name: log_min_duration_statement
value: 0
state: present
log_min_duration_statement: 0 は完了したすべての SQL 文の実行時間と文そのものを記録します。診断に必要な範囲とログの負荷を併せて検討してください。
変更後
yaml
- name: Cloud SQL 인스턴스 생성
google.cloud.gcp_sql_instance:
auth_kind: serviceaccount
name: "{{ resource_name }}-db"
project: test_project
region: us-central1
database_version: POSTGRES_13
settings:
tier: db-custom-1-3840
database_flags:
- name: log_min_duration_statement
value: -1
state: present
log_min_duration_statement: -1 は、この実行時間に基づくロギングを無効にします。他のログ設定をすべて無効にするわけではありませんが、この機能から得られる診断記録は失われます。必要に応じて、無効化する代わりに正の値を指定してください。