Configura la rotazione dei log di AlloyDB Omni

Questo documento descrive come configurare la rotazione dei log di diagnostica di AlloyDB Omni quando utilizzi l'operatore AlloyDB Omni Kubernetes.

I seguenti file di log si trovano nella directory /obs/diagnostic/:

  • postgresql.audit: questo file log raccoglie i log di controllo dell'accesso alle sessioni e agli oggetti. Per raccogliere gli audit log, devi abilitarli.

  • postgresql.log: questo file log raccoglie i log del server PostgreSQL. Questi log vengono sempre raccolti e non è necessario attivarli.

Quando un file di log viene ruotato, si verifica quanto segue:

  1. Il file di log viene copiato nella directory /obs/diagnostic/archive/. Se nella directory esiste già un file log con lo stesso nome, viene sovrascritto.

  2. I contenuti del file di log ruotato originale vengono eliminati in modo che il file sia vuoto.

  3. La scrittura delle informazioni del log inizia immediatamente nel file di log ruotato vuoto. Le informazioni dei log vengono scritte nel file di log fino a quando il file non raggiunge una soglia di dimensione o di età, a quel punto viene eseguito nuovamente il ciclo. I log vengono ruotati in modo che non diventino troppo grandi.

Per impostazione predefinita, l'impostazione di rotazione prevede che ogni file di log venga ruotato quando le sue dimensioni raggiungono i 200 MB. La rotazione predefinita non include un'impostazione relativa all'età.

Ogni file archiviato viene compresso singolarmente utilizzando il formato file Gzip (.gz).

I file archiviati vengono conservati per 7 giorni. I file archiviati più vecchi di 7 giorni vengono rimossi automaticamente, ad eccezione del file archiviato durante la rotazione precedente. Ad esempio, se log_rotation_age risale a più di 7 giorni fa, il file archiviato raggiunge la soglia di 7 giorni prima della rotazione del file corrente. In questo caso, il file archiviato non viene rimosso finché la rotazione successiva non genera un nuovo file archiviato.

Ogni nome file del log archiviato segue questo formato: postgresql-%Y-%m-%d_%H%M%S.log.gz. Il timestamp viene determinato al momento della rotazione dei log ed è espresso in fuso orario UTC (Coordinated Universal Time). Ad esempio, se il log viene ruotato alle 13:01:02 del 20/12/2024 UTC, il nome file archiviato èpostgresql-2024-12-20_130102.log.gz.

Per salvare definitivamente un file archiviato, puoi copiarlo dal contenitore del database nella tua directory locale utilizzando kubectl cp.

Abilita audit log

Affinché i log di accesso a sessioni e oggetti vengano raccolti nel file postgresql.audit, devi attivare il parametro del database pgaudit. Per attivare pgaudit, aggiungi la seguente riga alla sezione parameters del file v1_dbcluster_parameters.yaml in Secret:

alloydb.enable_pgaudit: "on"

Di seguito è riportato un esempio di come potrebbe essere:

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"

Per ulteriori informazioni, consulta pgaudit in Estensioni di database supportate e Estensione di controllo PostgreSQL. I log del server PostgreSQL vengono sempre raccolti nel file postgresql.log e non richiedono l'attivazione di pgaudit.

Configura la rotazione dei log

Se vuoi un maggiore controllo sulla rotazione dei log, configura una dimensione massima del file, una durata tra le rotazioni dei log o entrambe. La durata tra le rotazioni dei log è anche chiamata età del log. Se utilizzi entrambe le impostazioni, ogni log viene ruotato quando raggiunge una delle soglie.

Per configurare la rotazione dei log, imposta uno o entrambi i seguenti parametri nella sezione parameters del manifest DBCluster:

  • log_rotation_size: "SIZE_IN_KB"
  • log_rotation_age: "AGE_IN_MINUTES"

Per disattivare una delle impostazioni di rotazione dei log, impostala su zero ("0"). Per mantenere l'impostazione predefinita che esegue la rotazione dei log quando le dimensioni del file raggiungono i 200 MB, non impostare nessuno dei parametri.

Esempio di dimensione e durata massima dei log di rotazione

Il seguente esempio imposta la rotazione dei log quando le dimensioni del file raggiungono i 400 MB o quando il tempo tra le rotazioni dei log raggiunge un giorno, a seconda dell'evento che si verifica per primo:

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

Esempio di dimensione massima del log di rotazione dei log

Il seguente esempio imposta la rotazione dei log quando la dimensione del file raggiunge 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

Esempio di durata della rotazione dei log

L'esempio seguente imposta la rotazione dei log una volta ogni 24 ore:

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

Passaggi successivi