本文档介绍了如何在使用 AlloyDB Omni Kubernetes operator 时配置 AlloyDB Omni 诊断日志的轮换。
以下日志文件位于 /obs/diagnostic/
目录中:
postgresql.audit
:此日志文件会收集会话和对象访问审核日志。如需收集审核日志,您需要启用审核日志。postgresql.log
:此日志文件会收集 PostgreSQL 服务器日志。这些日志始终会被收集,无需启用。
日志文件轮换时,会发生以下情况:
系统会将日志文件复制到
/obs/diagnostic/archive/
目录。如果该目录中存在同名日志文件,则会被覆盖。原始轮换日志文件的内容会删除,因此文件为空。
日志信息立即开始写入空的轮换日志文件。 日志信息会写入日志文件,直到文件达到大小或存在时间阈值,此时会再次轮换。日志会轮换,以免变得过大。
默认情况下,轮换设置会在每个日志文件的大小达到 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