Mengelola file log secara efektif adalah tugas penting bagi sysadmin Linux.
Dalam artikel ini, mari kita bahas cara melakukan operasi file log berikut menggunakan UNIX logrotate utilitas.
- Memutar file log saat ukuran file mencapai ukuran tertentu
- Lanjutkan menulis informasi log ke file yang baru dibuat setelah memutar file log lama
- Kompres file log yang diputar
- Tentukan opsi kompresi untuk file log yang diputar
- Memutar file log lama dengan tanggal pada nama file
- Jalankan skrip shell khusus segera setelah rotasi log
- Hapus file log lama yang diputar
1. Logrotate file Konfigurasi
Berikut adalah file kunci yang harus Anda ketahui agar logrotate berfungsi dengan baik.
/usr/sbin/logrotate – Perintah logrotate itu sendiri.
/etc/cron.daily/logrotat e – Skrip shell ini menjalankan perintah logrotate setiap hari.
$ cat /etc/cron.daily/logrotate #!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
/etc/logrotate.conf – Konfigurasi rotasi log untuk semua file log ditentukan dalam file ini.
$ cat /etc/logrotate.conf weekly rotate 4 create include /etc/logrotate.d /var/log/wtmp { monthly minsize 1M create 0664 root utmp rotate 1 }
/etc/logrotate.d – Ketika paket individu diinstal pada sistem, mereka menjatuhkan informasi konfigurasi rotasi log di direktori ini. Sebagai contoh, informasi konfigurasi yum log rotate ditampilkan di bawah ini.
$ cat /etc/logrotate.d/yum /var/log/yum.log { missingok notifempty size 30k yearly create 0600 root root }
2. Opsi ukuran logrotate:Putar file log saat ukuran file mencapai batas tertentu
Jika Anda ingin memutar file log (misalnya, /tmp/output.log) untuk setiap 1 KB, buat logrotate.conf seperti yang ditunjukkan di bawah ini.
$ cat logrotate.conf /tmp/output.log { size 1k create 700 bala bala rotate 4 }
Konfigurasi logrotate ini memiliki tiga opsi berikut:
- ukuran 1k – logrotate hanya berjalan jika ukuran file sama dengan (atau lebih besar dari) ukuran ini.
- buat – putar file asli dan buat file baru dengan izin, pengguna, dan grup yang ditentukan.
- rotate – membatasi jumlah rotasi file log. Jadi, ini hanya akan menyimpan 4 file log terbaru yang dirotasi.
Sebelum logrotasi, berikut adalah ukuran dari output.log:
$ ls -l /tmp/output.log -rw-r--r-- 1 bala bala 25868 2010-06-09 21:19 /tmp/output.log
Sekarang, jalankan perintah logrotate seperti yang ditunjukkan di bawah ini. Option -s menentukan nama file untuk menulis status logrotate.
$ logrotate -s /var/log/logstatus logrotate.conf
Catatan :setiap kali Anda membutuhkan rotasi log untuk beberapa file, siapkan konfigurasi logrotate dan jalankan perintah logroate secara manual.
Setelah logrotasi, berikut adalah ukuran output.log:
$ ls -l /tmp/output* -rw-r--r-- 1 bala bala 25868 2010-06-09 21:20 output.log.1 -rwx------ 1 bala bala 0 2010-06-09 21:20 output.log
Pada akhirnya, ini akan tetap mengikuti penyiapan file log yang dirotasi.
- keluaran.log.4.
- keluaran.log.3
- keluaran.log.2
- keluaran.log.1
- keluaran.log
Harap diingat bahwa setelah rotasi log, file log yang sesuai dengan layanan akan tetap menunjuk ke file yang diputar (output.log.1) dan terus menulis di dalamnya. Anda dapat menggunakan metode di atas, jika Anda ingin memutar apache access_log atau error_log setiap 5 MB.
Idealnya, Anda harus memodifikasi /etc/logrotate.conf untuk menentukan informasi logrotate untuk file log tertentu.
Juga, jika Anda memiliki file log besar, Anda dapat menggunakan:10 Contoh Luar Biasa untuk Melihat File Log Besar di Unix
3. Opsi logrotate copytruncate:Lanjutkan untuk menulis informasi log di file yang baru dibuat setelah memutar file log lama.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate rotate 4 }
copytruncate menginstruksikan logrotate untuk membuat salinan file asli (yaitu memutar file log asli) dan memotong file asli ke ukuran nol byte. Ini membantu masing-masing layanan milik file log itu dapat menulis ke file yang tepat.
Saat memanipulasi file log, Anda mungkin menemukan pengganti sed, tips menghapus sed berguna.
4. Opsi kompres logrotate:Kompres file log yang diputar
Jika Anda menggunakan opsi kompres seperti yang ditunjukkan di bawah ini, file yang diputar akan dikompresi dengan utilitas gzip.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate create 700 bala bala rotate 4 compress }
Output dari file log terkompresi:
$ ls /tmp/output* output.log.1.gz output.log
5. Opsi logrotate dateext:Putar file log lama dengan tanggal di nama file log
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate create 700 bala bala dateext rotate 4 compress }
Setelah konfigurasi di atas, Anda akan melihat tanggal dalam file log yang diputar seperti yang ditunjukkan di bawah ini.
$ ls -lrt /tmp/output* -rw-r--r-- 1 bala bala 8980 2010-06-09 22:10 output.log-20100609.gz -rwxrwxrwx 1 bala bala 0 2010-06-09 22:11 output.log
Ini akan bekerja hanya sekali dalam sehari. Karena ketika mencoba untuk memutar waktu berikutnya pada hari yang sama, file yang diputar sebelumnya akan memiliki nama file yang sama. Jadi, logrotate tidak akan berhasil setelah dijalankan pertama kali di hari yang sama.
Biasanya Anda dapat menggunakan tail -f untuk melihat output dari file log secara realtime. Anda bahkan dapat menggabungkan beberapa output tail -f dan menampilkannya pada satu terminal.
6. Logrotate opsi bulanan, harian, mingguan:Putar file log mingguan/harian/bulanan
Untuk melakukan rotasi setiap bulan sekali,
$ cat logrotate.conf /tmp/output.log { monthly copytruncate rotate 4 compress }
Tambahkan kata kunci mingguan seperti yang ditunjukkan di bawah ini untuk rotasi log mingguan.
$ cat logrotate.conf /tmp/output.log { weekly copytruncate rotate 4 compress }
Tambahkan kata kunci harian seperti yang ditunjukkan di bawah ini untuk rotasi log setiap hari. Anda juga dapat memutar log setiap jam.
$ cat logrotate.conf /tmp/output.log { daily copytruncate rotate 4 compress }
7. Opsi skrip logrotate postrotate:Jalankan skrip shell khusus segera setelah rotasi log
Logrotate memungkinkan Anda untuk menjalankan skrip shell kustom Anda sendiri setelah menyelesaikan rotasi file log. Konfigurasi berikut menunjukkan bahwa ia akan mengeksekusi myscript.sh setelah logrotasi.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate rotate 4 compress postrotate /home/bala/myscript.sh endscript }
8. Opsi logrotate maxage:Hapus file log lama yang diputar
Logrotate secara otomatis menghapus file yang diputar setelah beberapa hari tertentu. Contoh berikut menunjukkan bahwa file log yang dirotasi akan dihapus setelah 100 hari.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate rotate 4 compress maxage 100 }
9. Logrotate missingok option:Jangan kembalikan kesalahan jika file log hilang
Anda dapat mengabaikan pesan kesalahan saat file sebenarnya tidak tersedia dengan menggunakan opsi ini seperti yang ditunjukkan di bawah ini.
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate rotate 4 compress missingok }
10. Logrotate compresscmd dan opsi compressext:Tentukan perintah kompresi untuk rotasi file log
$ cat logrotate.conf /tmp/output.log { size 1k copytruncate create compress compresscmd /bin/bzip2 compressext .bz2 rotate 4 }
Opsi kompresi berikut ditentukan di atas:
- kompres – Menunjukkan bahwa kompresi harus dilakukan.
- compresscmd – Tentukan jenis perintah kompresi apa yang harus digunakan. Misalnya:/bin/bzip2
- compressext – Tentukan ekstensi pada file log yang diputar. Tanpa opsi ini, file yang diputar akan memiliki ekstensi default sebagai .gz. Jadi, jika Anda menggunakan bzip2 compressioncmd, tentukan ekstensi sebagai .bz2 seperti yang ditunjukkan pada contoh di atas.