PostgreSQL のサーバーログレベルの確認

PostgreSQL の運用に必要なサーバーログのレベルを選び、無効な値や記録の過不足を防いでください。

説明

Cloud SQL for PostgreSQL の log_min_messages は、サーバーログに記録するメッセージの最低レベルを指定します。無効な値は設定の適用失敗につながる可能性があります。有効な値でも、運用目的に合っていなければ、必要な記録が抜けたりログが過剰になったりします。

PostgreSQL の既定値は warning です。サーバーログでは log は error より上、fatal より下のレベルなので、log を選ぶと通常の warning と error のメッセージは除外されます。値が有効であることと、必要なメッセージをすべて記録できることは同じではありません。

想定される影響

  • 必要な警告やエラーの記録が欠けると、障害や異常の調査が難しくなる可能性があります。
  • 詳細すぎる記録は、ログ処理コストや運用上のノイズを増やす可能性があります。

対処方法

  • settings.database_flags の log_min_messages にサポート対象の値を指定し、必要な警告やエラーを含むレベルを選んでください。
  • 他の PostgreSQL ログ設定も併せて確認してください。この設定だけですべてのデータベース操作の監査記録が得られるわけではありません。
  • 変更後に実際のメッセージ収集、ログ量、性能への影響を確認してください。

google.cloud 1.14.0 の SQL モジュールは既存インスタンスの更新に対応していません。以下は作成用の例です。既存インスタンスのフラグは、対応する Cloud SQL ツールや API で変更してください。

例

サポート対象の PostgreSQL バージョンとインスタンスのマシンタイプ、実際のプロジェクト名とリソース名、サービスアカウントの JSON ファイルを使用してください。以下の例はメッセージレベルの有効性と記録範囲を比較します。

変更前

yaml
- name: Cloud SQL 인스턴스 생성
  google.cloud.gcp_sql_instance:
    auth_kind: serviceaccount
    database_version: POSTGRES_13
    name: "{{ resource_name }}-2"
    project: test_project
    region: us-central1
    service_account_file: /tmp/auth.pem
    settings:
      database_flags:
        - name: log_min_messages
          value: debug6
      tier: db-custom-1-3840
    state: present

debug6 はサポート対象のメッセージレベルではなく、有効なデプロイ設定として使用できません。

変更後

yaml
- name: Cloud SQL 인스턴스 생성
  google.cloud.gcp_sql_instance:
    auth_kind: serviceaccount
    database_version: POSTGRES_13
    name: "{{ resource_name }}-2"
    project: test_project
    region: us-central1
    service_account_file: /tmp/auth.pem
    settings:
      database_flags:
        - name: log_min_messages
          value: log
      tier: db-custom-1-3840
    state: present

log は有効な値ですが、通常の warning と error のメッセージを除外します。必要な記録範囲に合うか確認し、警告から収集する場合は warning など適切なレベルを選んでください。

参考資料