下列記錄檔位於 /obs/diagnostic/
目錄中:
postgresql.audit
:這個記錄檔會收集工作階段和物件存取稽核記錄。如要收集稽核記錄,請啟用稽核記錄。postgresql.log
:這個記錄檔會收集 PostgreSQL 伺服器記錄。系統一律會收集這些記錄,無須啟用。
記錄檔輪替時,會發生下列情況:
記錄檔會複製到
/obs/diagnostic/archive/
目錄。如果該目錄中已有同名的記錄檔,系統會覆寫該檔案。系統會刪除原始輪替記錄檔的內容,讓檔案保持空白。
系統會立即開始將記錄資訊寫入空白的輪替記錄檔。記錄資訊會寫入記錄檔,直到檔案達到大小或時間門檻為止,此時檔案會再次輪替。記錄檔會輪替,以免過大。
根據預設,輪替設定為每個記錄檔達到 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 (世界標準時間) 輪替,封存的檔案名稱會是 postgresql-2024-12-20_130102.log.gz
。
如要永久儲存封存的檔案,可以使用 kubectl cp
將檔案從資料庫容器複製到本機目錄。
啟用稽核記錄
如要在 postgresql.audit
檔案中收集工作階段和物件存取記錄,您需要啟用 pgaudit
資料庫參數。如要啟用 pgaudit
,請在 Secret
下的 v1_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.12.0"
primarySpec:
...
parameters:
...
alloydb.enable_pgaudit: "on"
詳情請參閱「支援的資料庫擴充功能」一文中的 pgaudit
,以及「PostgreSQL Auditing Extension」。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