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 berada di direktori /obs/diagnostic/:

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

  2. 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.

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 terakhir. 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 dirotasi mengikuti format ini: postgresql-%Y-%m-%d_%H%M%S.log. 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.

Setiap file yang diarsipkan dikompresi satu per satu menggunakan format file Gzip.

Mengaktifkan log audit

Untuk mengaktifkan logging akses sesi dan objek, Anda harus mengonfigurasi parameter pgAudit di cluster database dan menginstal ekstensi di database.

Langkah 1: Mengonfigurasi pgAudit di parameter DBCluster

Agar log akses sesi dan objek dikumpulkan dalam file postgresql.audit, Anda harus mengaktifkan pgAudit dan mengonfigurasi pernyataan yang akan dicatat menggunakan pgaudit.log.

Tambahkan baris berikut ke bagian parameters dari file v1_dbcluster_parameters.yaml:

alloydb.enable_pgaudit: "on"
pgaudit.log: "all"

Berikut adalah contoh tampilan ini dalam manifes DBCluster:

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

Untuk mengetahui informasi selengkapnya, lihat pgaudit di Ekstensi database yang didukung.

Langkah 2: Membuat ekstensi pgAudit di database

Setelah mengonfigurasi parameter dan memastikan database telah dimulai ulang, Anda harus terhubung ke database dan menginstal ekstensi pgAudit:

CREATE EXTENSION IF NOT EXISTS pgaudit;

Anda harus menjalankan perintah ini di setiap database tempat Anda ingin mengaktifkan logging audit. Langkah ini diperlukan untuk menginstal pemicu peristiwa yang diperlukan untuk audit DDL.

Parameter pgAudit (GUC)

Tabel berikut menjelaskan parameter Konfigurasi Terpadu Utama (GUC) pgAudit utama yang dapat Anda konfigurasi di bagian parameters dari spesifikasi DBCluster Anda. Untuk mengetahui informasi selengkapnya, lihat dokumentasi pgAudit.

Parameter Deskripsi Nilai Default
pgaudit.log Menentukan kelas pernyataan mana yang dicatat oleh logging audit sesi. Nilai yang valid adalah none, all, read, write, function, role, ddl, misc, misc_set. none
pgaudit.log_catalog Menentukan bahwa logging sesi diaktifkan jika semua relasi dalam pernyataan berada di pg_catalog. Menonaktifkan setelan ini akan mengurangi gangguan log dari klien database. on
pgaudit.log_parameter Menentukan bahwa logging audit menyertakan parameter yang diteruskan dengan pernyataan. off
pgaudit.log_relation Menentukan apakah audit sesi membuat entri log terpisah untuk setiap relasi (tabel, tampilan, dll.) yang direferensikan dalam pernyataan SELECT atau DML. off
pgaudit.log_rows Menentukan bahwa logging audit menyertakan jumlah baris yang diambil atau terpengaruh oleh pernyataan. off
pgaudit.log_statement Menentukan apakah logging menyertakan teks dan parameter pernyataan. on
pgaudit.role Menentukan peran utama yang akan digunakan untuk logging audit objek. Tidak ada

Log server PostgreSQL selalu dikumpulkan dalam file postgresql.log dan tidak memerlukan pengaktifan pgAudit.

Melihat jalur file log audit

Gunakan fungsi SQL alloydb_audit_current_logfile untuk melihat jalur file log audit. Jika audit dinonaktifkan, hasilnya adalah NULL.

SELECT alloydb_audit_current_logfile();

 alloydb_audit_current_logfile
----------------------------------
 /obs/diagnostic/postgresql.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, 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