Mengonfigurasi rotasi log AlloyDB Omni

Pilih versi dokumentasi:

Dokumen ini menjelaskan cara mengonfigurasi rotasi log diagnostik AlloyDB Omni saat Anda menggunakan operator Kubernetes AlloyDB Omni.

File log berikut terletak di direktori /obs/diagnostic/:

  • postgresql.audit: File log ini mengumpulkan log audit akses sesi dan objek. Untuk mengumpulkan log audit, Anda harus mengaktifkan log audit.

  • postgresql.log: File log ini mengumpulkan log server PostgreSQL. Log ini selalu dikumpulkan dan tidak perlu diaktifkan.

Saat file log dirotasi, hal berikut akan terjadi:

  1. File log disalin ke direktori /obs/diagnostic/archive/. Jika file log dengan nama yang sama ada di direktori tersebut, file tersebut akan ditimpa.

  2. Konten file log asli yang dirotasi akan dihapus sehingga file menjadi kosong.

  3. Informasi log akan segera mulai ditulis ke file log yang dirotasi dan kosong. Informasi log ditulis ke file log hingga file mencapai batas ukuran atau usia, yang kemudian akan dirotasi lagi. Log dirotasi agar tidak terlalu besar.

Secara default, setelan rotasi adalah agar setiap file log dirotasi saat ukurannya mencapai 200 MB. Rotasi default tidak menyertakan setelan usia.

Setiap file yang diarsipkan dikompresi satu per satu menggunakan format file Gzip (.gz).

File yang diarsipkan disimpan selama 7 hari. File yang diarsipkan yang berusia lebih dari 7 hari akan otomatis dihapus, kecuali file yang diarsipkan selama rotasi sebelumnya. Misalnya, jika log_rotation_age berusia lebih dari 7 hari, file yang diarsipkan akan mencapai batas 7 hari sebelum rotasi file saat ini. Dalam hal ini, file yang diarsipkan ini tidak akan dihapus hingga rotasi berikutnya menghasilkan file yang diarsipkan baru.

Setiap nama file log yang diarsipkan mengikuti format ini: postgresql-%Y-%m-%d_%H%M%S.log.gz. Stempel waktu ditentukan pada saat rotasi log dan dinyatakan dalam Coordinated Universal Time (UTC). Misalnya, jika log dirotasi pada pukul 13.01.02 UTC 20/12/2024, nama file yang diarsipkan adalah postgresql-2024-12-20_130102.log.gz.

Untuk menyimpan file yang diarsipkan secara permanen, Anda dapat menyalinnya dari penampung database ke direktori lokal menggunakan kubectl cp.

Mengaktifkan log audit

Agar log akses sesi dan objek dapat dikumpulkan dalam postgresql.audit file, Anda harus mengaktifkan pgaudit parameter database. Untuk mengaktifkan pgaudit, tambahkan baris berikut ke bagian parameters dari v1_dbcluster_parameters.yaml file di bagian Secret:

alloydb.enable_pgaudit: "on"

Berikut adalah contoh tampilannya:

apiVersion: v1
kind: Secret
...
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
   name: DB_CLUSTER_NAME
spec:
  databaseVersion: "15.7.1"
  primarySpec:
    ...
    parameters:
      ...
      alloydb.enable_pgaudit: "on"

Untuk mengetahui informasi selengkapnya, lihat pgaudit di Ekstensi database yang didukung, dan Ekstensi Audit PostgreSQL. Log server PostgreSQL selalu dikumpulkan dalam file postgresql.log dan tidak memerlukan pengaktifan pgaudit.

Melihat jalur file log audit

Fungsi SQL alloydb_audit_current_logfile dapat digunakan untuk melihat jalur file log audit. Jika audit dinonaktifkan, hasilnya adalah NULL.

SELECT alloydb_audit_current_logfile();

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

Mengonfigurasi rotasi log

Jika Anda ingin lebih mengontrol waktu rotasi log, konfigurasikan ukuran file maksimum, durasi antara rotasi log, atau keduanya. Durasi antara rotasi log juga disebut usia log. Jika Anda menggunakan kedua setelan tersebut, setiap log akan dirotasi saat mencapai salah satu batas.

Untuk mengonfigurasi rotasi log, tetapkan satu atau kedua parameter berikut di bagian parameters dari manifes DBCluster:

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

Untuk menonaktifkan salah satu setelan rotasi log, tetapkan ke nol ("0"). Untuk mempertahankan setelan default yang merotasi log saat ukuran filenya mencapai 200 MB, jangan tetapkan parameter apa pun.

Contoh durasi dan ukuran log maksimum rotasi log

Contoh berikut menetapkan log untuk dirotasi saat ukuran filenya mencapai 400 MB atau saat waktu antara rotasi log mencapai satu hari, mana saja yang terjadi lebih dulu:

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

Contoh ukuran log maksimum rotasi log

Contoh berikut menetapkan log untuk dirotasi saat ukuran filenya mencapai 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

Contoh durasi rotasi log

Contoh berikut menetapkan log untuk dirotasi sekali setiap 24 jam:

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

Langkah berikutnya