Pertanyaan: Saya ingin secara otomatis memutar apache access_log dan error_log file. Bisakah Anda menjelaskan dengan contoh bagaimana melakukan ini?
Jawaban: Ini dapat dicapai dengan menggunakan utilitas logrotate seperti yang dijelaskan di bawah ini.
Tambahkan file berikut ke direktori /etc/logrotate.d.
# vi /etc/logrotate.d/apache /usr/local/apache2/logs/access_log /usr/local/apache2/logs/error_log { size 100M compress dateext maxage 30 postrotate /usr/bin/killall -HUP httpd ls -ltr /usr/local/apache2/logs | mail -s "$HOSTNAME: Apache restarted and log files rotated" [email protected] endscript }
Catatan: Lihat tutorial logrotate kami (dengan 15 contoh) yang menjelaskan detail selengkapnya tentang cara menggunakan opsi logrotate.
Dalam contoh /etc/logrotate.d/apache di atas:
- ukuran 100M – Setelah access_log, dan error_log mencapai 100M, maka akan dirotasi. Anda juga dapat menggunakan 100k (untuk Kb), 100G (untuk GB). Selain ukuran, Anda juga dapat merotasi log apache menggunakan frekuensi (harian, mingguan, bulanan).
- kompres – Menunjukkan bahwa file log yang diputar akan dikompresi. Secara default ini menggunakan gzip. Jadi, file yang dirotasi akan berekstensi .gz.
- teks tanggal – Menambahkan tanggal dalam format YYYYMMDD ke file log yang diputar. yaitu Alih-alih access_log.1.gz, itu membuat access_log-20110616.gz
- maksimum – Menunjukkan berapa lama file log yang diputar harus disimpan. Dalam contoh ini, itu akan disimpan selama 30 hari.
- postrotate dan endscript – Setiap perintah yang berada di antara kedua parameter ini akan dieksekusi setelah log diputar.
Penting: Setelah Anda memutar file log, Anda ingin Apache menulis pesan log baru ke access_log dan error_log yang baru dibuat. Jadi, Anda perlu mengirim sinyal HUP ke apache seperti yang ditunjukkan di sini. Pastikan untuk melakukan /usr/bin/killall -HUP httpd, yang akan memulai ulang apache setelah memutar file log (Baca lebih lanjut tentang kill).
Juga, Anda mungkin ingin mengirim email ke diri Anda sendiri yang menunjukkan bahwa file log diputar, bersama dengan output dari perintah ls -ltr sebagai badan email. yaitu Tambahkan yang berikut ini di antara opsi “postrotate” dan “endscript” (setelah perintah killall).
ls -ltr /usr/local/apache2/logs | mail -s "$HOSTNAME: Apache restarted and log files rotated" [email protected]
Skrip /etc/cron.daily/logrotate berjalan setiap hari yang akan melakukan rotasi log semua file sebagaimana ditentukan dalam /etc/logrotate.conf dan semua file di bawah direktori /etc/logrotate.d.
Setelah menambahkan file /etc/logrotate.d/apache di atas, untuk tujuan pengujian, Anda dapat memanggil skrip logrotate secara manual seperti yang ditunjukkan di bawah ini.
# /etc/cron.daily/logrotate
Setelah file log diputar, lakukan ls untuk memverifikasinya. Seperti yang kami jelaskan di atas, file log yang dirotasi akan disimpan selama 30 hari.
# ls /usr/local/apache2/logs access_log error_log access_log-20110716.gz error_log-20110716.gz