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

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

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

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

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

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

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

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

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

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

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

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

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

監査ログを有効にする

セッションログとオブジェクト アクセスログを 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: "16.3.0"
  primarySpec:
    ...
    parameters:
      ...
      alloydb.enable_pgaudit: "on"

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

監査ログファイルのパスを表示する

SQL 関数 alloydb_audit_current_logfile を使用して、監査ログファイルのパスを表示できます。監査が無効になっている場合、結果は NULL になります。

SELECT alloydb_audit_current_logfile();

 alloydb_audit_current_logfile
----------------------------------------------------
 /var/log/pglogs/postgresql-2025-03-28_042024.audit

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

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

ログ ローテーションを構成するには、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

次のステップ