AlloyDB Omni のログ ローテーションを構成する

このドキュメントでは、AlloyDB Omni Kubernetes オペレーターを使用するときに AlloyDB Omni 診断ログのローテーションを構成する方法について説明します。

次のログファイルは /obs/diagnostic/ ディレクトリにあります。

  • postgresql.audit: このログファイルには、セッションとオブジェクト アクセスの監査ログが収集されます。監査ログを収集するには、監査ログを有効にする必要があります。

  • postgresql.log: このログファイルには、PostgreSQL サーバーログが収集されます。これらのログは常に収集されるため、有効にする必要はありません。

ログファイルがローテーションされると、次の処理が行われます。

  1. ログファイルは /obs/diagnostic/archive/ ディレクトリにコピーされます。同じ名前のログファイルがそのディレクトリに存在する場合、そのファイルが上書きされます。

  2. 元のローテーションされたログファイルの内容が削除され、ファイルが空になります。

  3. ログ情報は、空のローテーションされたログファイルへの書き込みをすぐに開始します。ログ情報は、ファイルのサイズまたは存続期間のしきい値に達するまでログファイルに書き込まれ、その時点で再びローテーションされます。ログは、大きすぎないようにローテーションされます。

デフォルトでは、各ログファイルのサイズが 200 MB に達するとローテーションするように設定されています。デフォルトのローテーションには年齢設定が含まれていません。

アーカイブされた各ファイルは、Gzip(.gz)ファイル形式を使用して個別に圧縮されます。

アーカイブされたファイルは 7 日間保持されます。7 日以上経過したアーカイブ ファイルは、前回のローテーション中にアーカイブされたファイルを除き、自動的に削除されます。たとえば、log_rotation_age が 7 日以上前のものである場合、アーカイブ ファイルは現在のファイルのローテーション前に 7 日のしきい値に達します。この場合、このアーカイブ ファイルは、次のローテーションで新しいアーカイブ ファイルが生成されるまで削除されません。

アーカイブされた各ログのファイル名は postgresql-%Y-%m-%d_%H%M%S.log.gz という形式になります。タイムスタンプはログのローテーション時に決定され、協定世界時(UTC)で表されます。たとえば、2024 年 12 月 20 日 UTC の 13:01:02 にログがローテーションされた場合、アーカイブ ファイル名は postgresql-2024-12-20_130102.log.gz です。

アーカイブされたファイルを永続的に保存するには、kubectl cp を使用して、データベース コンテナからローカル ディレクトリにコピーします。

監査ログを有効にする

セッション ログとオブジェクト アクセス ログを postgresql.audit ファイルに収集するには、pgaudit データベース パラメータを有効にする必要があります。pgaudit を有効にするには、Secretv1_dbcluster_parameters.yaml ファイルの parameters セクションに次の行を追加します。

alloydb.enable_pgaudit: "on"

次に例を示します。

apiVersion: v1
kind: Secret
...
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
   name: DB_CLUSTER_NAME
spec:
  databaseVersion: "15.7.0"
  primarySpec:
    ...
    parameters:
      ...
      alloydb.enable_pgaudit: "on"

詳細については、サポートされているデータベース拡張機能pgauditPostgreSQL 監査拡張機能をご覧ください。PostgreSQL サーバーログは常に postgresql.log ファイルに収集され、pgaudit を有効にする必要はありません。

ログ ローテーションを構成する

ログのローテーションのタイミングをより細かく制御する場合は、ファイルの最大サイズ、ログ ローテーションの間隔、またはその両方を構成します。ログのローテーション間の時間は、ログの存続期間とも呼ばれます。両方の設定を使用する場合、各ログはいずれかのしきい値に達するとローテーションされます。

ログのローテーションを構成するには、DBCluster マニフェストの parameters セクションで次のいずれかまたは両方のパラメータを設定します。

  • log_rotation_size: "SIZE_IN_KB"
  • log_rotation_age: "AGE_IN_MINUTES"

ログ ローテーションの設定のいずれかを無効にするには、ゼロ("0")に設定します。ファイルサイズが 200 MB に達したときにログをローテーションするデフォルト設定を保持するには、どちらのパラメータも設定しないでください。

ログ ローテーションの最大ログサイズと時間の例

次のサンプルでは、ファイルサイズが 400 MB に達したとき、またはログ ローテーションの間隔が 1 日に達したとき(どちらか先に発生したとき)にログをローテーションするように設定します。

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
...
  primarySpec:
  ...
    parameters:
      log_rotation_size: "400000" # 400 MB
      log_rotation_age: "1440" # 24 hours * 60 minutes = 1 day

ログ ローテーションの最大ログサイズの例

次のサンプルでは、ファイルサイズが 400 MB に達したときにログをローテーションするように設定しています。

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
...
  primarySpec:
  ...
    parameters:
      log_rotation_size: "400000" # 400 MB
      log_rotation_age: "0" # Set to 0 to disable

ログ ローテーションの期間の例

次のサンプルでは、ログを 24 時間ごとにローテーションするように設定します。

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
...
  primarySpec:
  ...
    parameters:
      log_rotation_size: "0" # Set to 0 to disable
      log_rotation_age: "1440" # 24 hours * 60 minutes = 1 day

次のステップ