Pengelolaan file log pada web server Nginx sangat krusial untuk mencegah habisnya ruang penyimpanan (disk space) akibat file access.log dan error.log yang terus membengkak. Sistem Linux menyediakan utilitas bawaan bernama logrotate yang bertugas melakukan rotasi, kompresi, pembersihan, dan pengiriman file log secara otomatis berdasarkan jadwal tertentu.
Konfigurasi logrotate untuk Nginx umumnya terletak di direktori /etc/logrotate.d/nginx. Dengan pengaturan yang tepat, file log harian atau mingguan akan diarsipkan secara rapi dan file log baru akan langsung dibuat oleh Nginx tanpa menghentikan layanan web server (zero downtime).
Langkah-Langkah Konfigurasi Logrotate Nginx
- Buka terminal server menggunakan SSH dengan hak akses root atau sudo.
- Buat atau edit file konfigurasi logrotate khusus Nginx menggunakan text editor seperti
nano:
sudo nano /etc/logrotate.d/nginx- Masukkan skrip konfigurasi standar yang direkomendasikan di bawah ini ke dalam file tersebut:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
if [ -d /run/systemd/system ]; then
systemctl reload nginx > /dev/null 2>&1
else
invoke-rc.d nginx rotate > /dev/null 2>&1
fi
endscript
}- Simpan perubahan (pada nano tekan
CTRL+O,Enter, laluCTRL+X). - Uji coba konfigurasi logrotate secara manual untuk memastikan tidak ada kesalahan sintaks:
sudo logrotate -d /etc/logrotate.d/nginxParameter Penting dalam Konfigurasi Logrotate
Tabel berikut merinci fungsi dari setiap baris parameter yang digunakan dalam skrip konfigurasi logrotate Nginx di atas:
| Parameter | Fungsi Utama |
|---|---|
daily | Menjadwalkan rotasi file log dilakukan setiap hari. |
missingok | Mengabaikan pesan error jika file log tidak ditemukan tanpa menghentikan proses. |
rotate 14 | Menyimpan 14 arsip file log terakhir sebelum file paling lama dihapus. |
compress | Melakukan kompresi pada file log yang telah dirotasi (biasanya berformat .gz). |
delaycompress | Menunda kompresi file log hasil rotasi ke siklus rotasi berikutnya (berguna agar proses log aktif tidak terganggu). |
notifempty | Tidak melakukan rotasi jika ukuran file log kosong (0 bytes). |
create 0640 www-data adm | Membuat file log baru dengan izin akses 0640, owner www-data, dan group adm. |
sharedscripts | Menjalankan skrip postrotate hanya sekali setelah semua file log selesai dirotasi. |
postrotate ... endscript | Perintah eksekusi setelah rotasi selesai. Mengirim sinyal reload ke Nginx agar proses menulis log beralih ke file log baru. |
Troubleshooting Masalah Logrotate Nginx
Jika proses rotasi log tidak berjalan sebagaimana mestinya, lakukan beberapa pemeriksaan berikut di lingkungan server:
- Izin File Konfigurasi: Pastikan file di
/etc/logrotate.d/nginxmemiliki izin akses yang benar dan hanya dapat ditulis oleh root. - Uji Paksa (Force Run): Jalankan logrotate secara paksa untuk menguji apakah skrip berjalan tanpa error menggunakan perintah
sudo logrotate -f /etc/logrotate.d/nginx. - Periksa Log Sistem: Cek status eksekusi logrotate melalui log sistem utama dengan perintah
grep logrotate /var/log/syslogataujournalctl -u logrotate.