配置 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 日 13:01:02 UTC 轮替,则归档文件名为 postgresql-2024-12-20_130102.log.gz

如需永久保存归档文件,您可以使用 kubectl cp 将其从数据库容器复制到本地目录。

启用审核日志

如需在 postgresql.audit 文件中收集会话和对象访问日志,您需要启用 pgaudit 数据库参数。如需启用 pgaudit,请将以下行添加到 v1_dbcluster_parameters.yaml 文件的 parameters 部分中的 Secret 下:

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"

如需了解详情,请参阅支持的数据库扩展中的 pgaudit,以及 PostgreSQL 审核扩展。 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

后续步骤