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.