Logrotate adalah utilitas bawaan sistem Linux yang dirancang untuk mengelola file log yang ukurannya terus membengkak secara otomatis. Alat ini bertugas melakukan rotasi, kompresi, penghapusan, dan pengiriman file log agar tidak menghabiskan kapasitas penyimpanan server serta memudahkan proses audit.
File konfigurasi utama terletak di /etc/logrotate.conf, sementara konfigurasi tambahan untuk aplikasi spesifik diletakkan di dalam direktori /etc/logrotate.d/. Berikut adalah rincian parameter logrotate lengkap beserta fungsi dan contoh penggunaannya di lingkungan produksi.
Tabel Parameter Utama Logrotate
| Parameter | Fungsi Utama | Contoh Nilai |
|---|---|---|
daily / weekly / monthly / yearly |
Menentukan frekuensi siklus rotasi log dilakukan. | weekly |
rotate <count> |
Menentukan jumlah arsip file log lama yang disimpan sebelum dihapus. | rotate 4 |
size <size> |
Melakukan rotasi jika ukuran file log melampaui batas (k, M, G). | size 100M |
compress |
Mengompres file log lama menggunakan gzip untuk menghemat ruang. | compress |
delaycompress |
Menunda kompresi log pada rotasi pertama (biasanya dipasangkan dengan compress). | delaycompress |
missingok |
Mengabaikan pesan error jika file log tidak ditemukan tanpa menghentikan proses. | missingok |
notifempty |
Mencegah rotasi jika file log berukuran 0 byte (kosong). | notifempty |
create <mode> <owner> <group> |
Membuat file log baru yang kosong segera setelah rotasi selesai dengan izin tertentu. | create 0640 www-data adm |
dateext |
Menambahkan ekstensi tanggal (YYYYMMDD) pada file arsip alih-alih nomor urut. | dateext |
sharedscripts |
Menjalankan skrip postrotate/prerotate sekali untuk seluruh log, bukan per file log. | sharedscripts |
Contoh Blok Konfigurasi Logrotate
Berikut adalah contoh implementasi konfigurasi logrotate untuk aplikasi web Nginx yang disimpan pada direktori /etc/logrotate.d/nginx:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 nginx adm
sharedscripts
postrotate
if [ -d /run/systemd/system ]; then
systemctl reload nginx.service > /dev/null 2>&1
fi
endscript
}
Penjelasan Alur Eksekusi Skrip
Logrotate biasanya dijalankan secara otomatis setiap hari melalui cron job (/etc/cron.daily/logrotate). Saat eksekusi berjalan, utilitas ini membaca direktori konfigurasi dan mencatat status terakhirnya di dalam file /var/lib/logrotate/status.
Langkah-Langkah Debugging dan Troubleshooting
Jika konfigurasi logrotate tidak berjalan sesuai harapan, Anda dapat melakukan pengujian manual menggunakan mode verbose dan dry-run agar file log asli tidak terpengaruh:
# Menjalankan logrotate secara manual dengan mode paksa dan verbose
logrotate -vf /etc/logrotate.d/nginx
# Melakukan simulasi pengujian tanpa mengubah file apa pun
logrotate -d /etc/logrotate.conf
Pastikan hak akses file konfigurasi di dalam /etc/logrotate.d/ diatur dengan benar (root-owned dan tidak writable oleh grup/others) agar dibaca oleh sistem.