AlloyDB Omni-Protokollrotation konfigurieren

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

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

  • postgresql.audit: In dieser Protokolldatei werden Audit-Logs für Sitzungen und Objektzugriff erfasst. Wenn Sie Audit-Logs erfassen möchten, müssen Sie Audit-Logs aktivieren.

  • postgresql.log: In dieser Protokolldatei werden PostgreSQL-Serverprotokolle erfasst. Diese Protokolle werden immer erfasst und müssen nicht aktiviert werden.

Wenn eine Protokolldatei rotiert, geschieht Folgendes:

  1. Die Logdatei wird in das Verzeichnis /obs/diagnostic/archive/ kopiert. Wenn in diesem Verzeichnis bereits eine Protokolldatei 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. Die Protokollinformationen werden sofort in die leere Protokolldatei geschrieben. Loginformationen werden in die Logdatei geschrieben, bis die Datei einen Grenzwert für Größe oder Alter erreicht. Dann wird sie wieder rotiert. Protokolle 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 Alterseinstellung.

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

Archivierte Dateien werden sieben Tage lang aufbewahrt. Archivierte Dateien, die älter als 7 Tage sind, werden automatisch entfernt, mit Ausnahme der Datei, die bei der vorherigen Rotation archiviert wurde. Wenn log_rotation_age beispielsweise älter als 7 Tage ist, erreicht die archivierte Datei den Grenzwert von 7 Tagen, bevor die aktuelle Datei rotiert wird. In diesem Fall wird diese archivierte Datei erst entfernt, wenn bei der nächsten Rotation eine neue archivierte Datei generiert wird.

Jeder archivierte Logdateiname folgt diesem Format: postgresql-%Y-%m-%d_%H%M%S.log.gz. Der Zeitstempel wird zum Zeitpunkt der Protokollauslagerung ermittelt und in der koordinierten Weltzeit (UTC) ausgedrückt. Wenn das Protokoll beispielsweise am 20. Dezember 2024 um 13:01:02 Uhr (UTC) rotiert wird, lautet der Name der archivierten Datei 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 Protokolle zu Sitzungen und Objektzugriffen in der Datei postgresql.audit erfasst werden, müssen Sie den Datenbankparameter pgaudit aktivieren. Wenn Sie pgaudit aktivieren möchten, fügen Sie der Datei v1_dbcluster_parameters.yaml unter Secret im Abschnitt parameters die folgende Zeile hinzu:

alloydb.enable_pgaudit: "on"

Das könnte beispielsweise so aussehen:

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"

Weitere Informationen finden Sie unter pgaudit in den unterstützten Datenbankerweiterungen und in der PostgreSQL-Auditerweiterung. PostgreSQL-Serverprotokolle werden immer in der postgresql.log-Datei erfasst und pgaudit muss nicht aktiviert werden.

Logrotation konfigurieren

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

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

  • log_rotation_size: „SIZE_IN_KB
  • log_rotation_age: „AGE_IN_MINUTES

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

Beispiel für maximale Protokollgröße und Dauer der Protokollauslagerung

Im folgenden Beispiel werden Protokolle rotiert, wenn ihre Dateigröße 400 MB erreicht oder die Zeit zwischen den Protokollrotationen einen Tag erreicht, 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 Größe von Protokollen bei der Protokollrotation

Im folgenden Beispiel werden Protokolle rotiert, 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 Protokollauslagerung

Im folgenden Beispiel werden Protokolle 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