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
Post a Comment