AlloyDB Omni-Protokollrotation konfigurieren

Wählen Sie eine Dokumentationsversion aus:

In diesem Dokument wird beschrieben, wie Sie die Rotation von AlloyDB Omni-Diagnoselogs konfigurieren, wenn Sie den AlloyDB Omni Kubernetes-Operator verwenden.

Die folgenden Protokolldateien befinden sich im Verzeichnis /obs/diagnostic/:

  • postgresql.audit: In dieser Logdatei werden Audit-Logs für Sitzungs- und Objektzugriff erfasst. Damit Audit-Logs erfasst werden können, müssen Sie Audit-Logs aktivieren.

  • postgresql.log: In dieser Logdatei werden PostgreSQL-Serverlogs erfasst. Diese Logs werden immer erfasst und müssen nicht aktiviert werden.

Wenn eine Logdatei rotiert wird, geschieht Folgendes:

  1. Die Logdatei wird in das Verzeichnis /obs/diagnostic/archive/ kopiert. Wenn in diesem Verzeichnis eine Logdatei mit demselben Namen vorhanden ist, wird sie überschrieben.

  2. Der Inhalt der ursprünglichen rotierten Protokolldatei wird gelöscht, sodass die Datei leer ist.

  3. Loginformationen werden sofort in die leere rotierte Logdatei geschrieben. Loginformationen werden in die Logdatei geschrieben, bis die Datei einen Größen- oder Altersgrenzwert erreicht. Dann wird sie wieder rotiert. Logs werden rotiert, damit sie nicht zu groß werden.

Standardmäßig wird jede Logdatei rotiert, wenn ihre Größe 200 MB erreicht. Die Standardrotation enthält keine Altersangabe.

Jede archivierte Datei wird einzeln mit dem Gzip-Dateiformat (.gz) komprimiert.

Archivierte Dateien werden 7 Tage lang aufbewahrt. Archivierte Dateien, die älter als 7 Tage sind, werden automatisch entfernt. Das gilt jedoch nicht für die Datei, die während der vorherigen Rotation archiviert wurde. Wenn log_rotation_age beispielsweise älter als 7 Tage ist, wird der Grenzwert von 7 Tagen für die archivierte Datei vor der Rotation der aktuellen Datei erreicht. In diesem Fall wird die archivierte Datei erst entfernt, wenn bei der nächsten Rotation eine neue archivierte Datei generiert wird.

Jeder archivierte Logdateiname hat folgendes Format: postgresql-%Y-%m-%d_%H%M%S.log.gz. Der Zeitstempel wird zum Zeitpunkt der Logrotation ermittelt und in koordinierter Weltzeit (UTC) angegeben. Wenn das Log beispielsweise am 20.12.2024 um 13:01:02 Uhr UTC rotiert wird, lautet der archivierte Dateiname postgresql-2024-12-20_130102.log.gz.

Wenn Sie eine archivierte Datei dauerhaft speichern möchten, können Sie sie mit kubectl cp aus dem Datenbankcontainer in Ihr lokales Verzeichnis kopieren.

Audit-Logs aktivieren

Damit Sitzungs- und Objektzugriffsprotokolle in der Datei postgresql.audit erfasst werden, müssen Sie den Datenbankparameter pgaudit aktivieren. Fügen Sie die folgende Zeile in den Abschnitt parameters der Datei v1_dbcluster_parameters.yaml unter Secret ein, um pgaudit zu aktivieren:

alloydb.enable_pgaudit: "on"

Das folgende Beispiel zeigt, wie dies aussehen könnte:

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"

Weitere Informationen finden Sie unter pgaudit in Unterstützte Datenbankerweiterungen und PostgreSQL Auditing Extension. PostgreSQL-Serverlogs werden immer in der Datei postgresql.log erfasst und erfordern nicht die Aktivierung von pgaudit.

Pfad der Audit-Logdatei ansehen

Mit der SQL-Funktion alloydb_audit_current_logfile können Sie den Pfad der Audit-Log-Datei aufrufen. Wenn die Prüfung deaktiviert ist, ist das Ergebnis NULL.

SELECT alloydb_audit_current_logfile();

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

Logrotation konfigurieren

Wenn Sie mehr Kontrolle darüber haben möchten, wann Logs rotiert werden, können Sie eine maximale Dateigröße, eine Dauer zwischen Logrotationen oder beides konfigurieren. Die Dauer zwischen Log-Rotationen wird auch als Alter des Logs bezeichnet. Wenn Sie beide Einstellungen verwenden, wird jedes Log rotiert, wenn es einen der Grenzwerte erreicht.

Um die Logrotation zu konfigurieren, legen Sie einen oder beide der folgenden Parameter im Abschnitt parameters des DBCluster-Manifests fest:

  • log_rotation_size: „SIZE_IN_KB
  • log_rotation_age: „AGE_IN_MINUTES

Wenn Sie eine der Einstellungen für die Logrotation deaktivieren möchten, setzen Sie sie auf null ("0"). Wenn Sie die Standardeinstellung beibehalten möchten, bei der Logs rotiert werden, wenn ihre Dateigröße 200 MB erreicht, legen Sie keinen der beiden Parameter fest.

Beispiel für maximale Loggröße und ‑dauer bei der Logrotation

Im folgenden Beispiel werden Logs so festgelegt, dass sie rotiert werden, wenn ihre Dateigröße 400 MB erreicht oder wenn zwischen den Logrotationen ein Tag vergeht, je nachdem, was zuerst eintritt:

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

Beispiel für die maximale Loggröße bei der Logrotation

Im folgenden Beispiel wird festgelegt, dass Logs rotiert werden, wenn ihre Dateigröße 400 MB erreicht:

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

Beispiel für die Dauer der Logrotation

Im folgenden Beispiel werden Logs alle 24 Stunden rotiert:

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

Nächste Schritte