配置 AlloyDB Omni 日志轮换

本文档介绍了如何在使用 AlloyDB Omni Kubernetes operator 时配置 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,请将以下行添加到 v1_dbcluster_parameters.yaml 文件的 Secret 下的 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"

如需了解详情,请参阅支持的数据库扩展程序中的 pgaudit 以及 PostgreSQL 审核扩展程序。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 或日志轮换时间达到一天(以先发生者为准)时轮换:

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

后续步骤