PostgreSQL の実行時間ログの基準の確認

PostgreSQL の実行時間ログの基準を診断の必要性とログ量に合わせ、SQL 文を含むログを保護してください。

説明

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 は、この実行時間に基づくロギングを無効にします。他のログ設定をすべて無効にするわけではありませんが、この機能から得られる診断記録は失われます。必要に応じて、無効化する代わりに正の値を指定してください。

参考資料