Pengaturan Log Rotasi PostgreSQL Yang Wajib Diketahui

Log rotasi adalah mekanisme penting untuk mengelola ukuran dan jumlah file log yang dihasilkan oleh PostgreSQL. Jika pengaturan log rotasi tidak memadai, log dapat tumbuh tanpa batas, menyebabkan disk penuh atau kesulitan dalam analisis log. Artikel ini akan membahas cara memastikan pengaturan log rotasi PostgreSQL optimal.


Penyebab

Konfigurasi Default PostgreSQL

Konfigurasi log rotasi default tidak diatur sesuai kebutuhan khusus, seperti ukuran log atau frekuensi rotasi.


Log File yang Tidak Dirotasi

File log terus bertambah ukurannya karena rotasi tidak diaktifkan.


Pengabaian Monitoring Log

Kurangnya monitoring terhadap log menyebabkan log terus tumbuh tanpa disadari.


Contoh Masalah

Log file PostgreSQL tumbuh hingga memenuhi ruang disk:

/var/lib/postgresql/data/log/postgresql.log

Contoh log yang mencapai ukuran besar:

20GB postgresql.log

Sistem menjadi tidak responsif akibat disk penuh:

ERROR: could not write to log file: No space left on device


Langkah-langkah Solusi


1. Verifikasi Konfigurasi Logging

Periksa pengaturan log di file postgresql.conf. Lokasi file ini biasanya berada di:

/var/lib/postgresql/data/postgresql.conf

Cari parameter berikut dan sesuaikan jika perlu:

logging_collector = on          # Mengaktifkan logging

log_directory = 'log'           # Lokasi file log

log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # Format nama log

log_truncate_on_rotation = on   # Memotong log saat rotasi

log_rotation_age = 1d           # Durasi rotasi (1 hari)

log_rotation_size = 10MB        # Ukuran maksimum file log sebelum rotasi


2. Ubah Pengaturan Rotasi

Pastikan parameter rotasi diatur dengan benar:

log_rotation_age: Rotasi log berdasarkan waktu (misalnya, setiap hari).

log_rotation_size: Rotasi log berdasarkan ukuran file.


Contoh konfigurasi optimal:

log_rotation_age = 1d           # Rotasi setiap 1 hari

log_rotation_size = 10MB        # Rotasi jika log mencapai 10MB


3. Restart PostgreSQL

Setelah melakukan perubahan pada postgresql.conf, restart layanan PostgreSQL:

sudo systemctl restart postgresql


4. Implementasikan Log Retention

Gunakan alat seperti cron atau logrotate untuk menghapus file log lama secara otomatis.


Contoh Konfigurasi logrotate

Buat file konfigurasi:

sudo nano /etc/logrotate.d/postgresql

Isi dengan:


/var/lib/postgresql/data/log/*.log {

    daily

    rotate 7

    compress

    missingok

    notifempty

    create 640 postgres postgres

}


Simpan dan keluar. Log akan dirotasi setiap hari, menyimpan hingga 7 log terakhir, dan log lama akan dikompresi.


5. Monitor Ruang Disk

Gunakan perintah berikut untuk memantau ruang disk secara berkala:

df -h

Pasang alat monitoring seperti nagios atau prometheus untuk mendapatkan notifikasi jika ruang disk mendekati penuh.


Pencegahan

Audit Berkala Pengaturan Log

Pastikan konfigurasi log rotasi di file postgresql.conf sesuai dengan kebutuhan.


Otomatisasi Pembersihan Log

Gunakan alat seperti logrotate untuk mencegah log memenuhi disk.


Pantau Pertumbuhan Log

Gunakan alat monitoring untuk mendeteksi pertumbuhan log yang tidak wajar.

Konfigurasi log rotasi PostgreSQL yang memadai sangat penting untuk menjaga performa dan ketersediaan sistem. Dengan mengikuti langkah-langkah di atas diharapkan dapat mengelola log dengan efesien dan mencegah log memenuhi ruang disk serta menjaga sistem tetap berjalan optimal. Semoga bermanfaat dan mohon maaf jika ada kesalahan informasi.

Comments

Popular posts from this blog

Integrating PHP with Message Queues RabbitMQ Kafka

FastAPI and UVLoop: The Perfect Pair for Asynchronous API Development

Konfigurasi dan Instalasi PostgreSQL Secara Lengkap di Windows Linux dan MacOS