Logrotate adalah perangkat lunak yang telah diinstal sebelumnya di sebagian besar distribusi Linux, yang memungkinkan Anda mengelola penyimpanan dan pengaturan file log jangka panjang.
Aplikasi dalam sistem sering merekam log operasi atau masalah disk. Jika tidak dihapus secara berkala, file-file ini dapat bertambah besar, mengisi disk, dan menyebabkan malfungsi.
Logrotate adalah solusi paling umum untuk memeriksa file log secara berkala dan secara otomatis mengelola rotasi, kompresi, dan penghapusannya ketika ukuran dan/atau usia tertentu terlampaui.
Konfigurasi dasar
Logrotate memungkinkan untuk menentukan beberapa parameter dasar yang akan digunakan oleh semua konfigurasi file selanjutnya di jalur /etc/logrotate.conf:
# Set a weekly rotation
weekly
# Set the number of rotations to save
rotate 4
# make new log file
create
# Include all configurations files
include /etc/logrotate.d
Dalam ekstrak logrotate.conf ini, selain menerapkan semua parameter yang dijelaskan di atas, membaca semua konfigurasi yang ada di direktori /etc/logrotate.d juga disarankan. Dengan demikian, Anda dapat membagi setiap konfigurasi berdasarkan aplikasi dan/atau konteks.
Konfigurasi logrotate menentukan kumpulan aturan untuk 1 file atau lebih:
[FILE] [FILE?] [FILE?] {
[SETTINGS]
}
Contoh klasik adalah konfigurasi / var / log / pesan:
/var/log/messages {
# Save 5 rotations
rotate 5
# Rotating files every week
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
Dalam contoh di atas, hanya file pesan yang diperhitungkan. . dan rotasinya diatur setiap minggu, p maksimal 5. Oleh karena itu, pada akhir rotasi kelima, file-file log:
-rw-r----- 1 root adm 1215 Jul 29 06:47 messages
-rw-r----- 1 root adm 3895 Jul 28 06:49 messages.1
-rw-r----- 1 root adm 454 Jul 21 06:37 messages.2.gz
-rw-r----- 1 root adm 506 Jul 15 06:40 messages.3.gz
-rw-r----- 1 root adm 456 Jul 7 06:41 messages.4.gz
Beberapa setelan terpenting adalah:
harian, bulanan, mingguan, tahunan:menunjukkan seberapa sering memutar file log
kompres, nocompress:apakah akan mengompresi rotasi file lama atau tidak
maksage:Setelah berapa hari rotasi lama dihilangkan
size:Mengatur rotasi hanya jika file yang ditunjukkan lebih besar dari ukuran yang ditentukan. Sufiks dapat digunakan untuk menunjukkan format ukuran (misalnya "k" untuk kilobyte, "M" untuk megabyte)
rotate:Jumlah log yang diputar yang harus disimpan sebelum dihapus secara permanen. Jika disetel ke 0, file log akan dihapus tanpa diputar.
Jika Anda ingin menetapkan aturan yang sama untuk beberapa file, Anda dapat menambahkan beberapa jalur, dengan memisahkannya dengan koma. Misalnya:
/var/log/custom_log, /var/log/alternative_log_file, /var/log/another_log {
…
}
Konfigurasi ini akan digunakan untuk file custom_log, alternative_log_file dan another_log.
Atau Anda dapat menggunakan masker file seperti:
/var/custom/logs/*, /var/log/custom_log {
# This configuration will rotate all the files in the directory.
# /var/custom/logs/* e il file /var/log/custom_log
...
}
Menggunakan pengaturan dateext
Setelan dateext memungkinkan Anda menambahkan tanggal rotasi ke nama file, sehingga data log dapat dikenali dengan mudah .
/var/log/custom.log {
size 100M
dateext
rotate 3
compress
maxage 100
}
Konfigurasi yang ditunjukkan di atas akan mengarsipkan file custom.log segera setelah mencapai 100 juta, hingga maksimum 3 kali atau setelah 100 hari. Melalui opsi kompres, file yang diarsipkan juga akan dikompresi dalam format gzip.
Setelah diputar, nama file akan memiliki tanggal rotasi seperti yang ditunjukkan di bawah ini:
# ls /var/log
-rw-r--r-- 1 user user 8980 2019-06-09 22:10 custom.log-20180609.gz
-rwxrwxrwx 1 user user 0 2019-06-09 22:11 custom.log
Log email
Logrotate memungkinkan Anda menjalankan skrip yang disesuaikan saat peristiwa tertentu terjadi, seperti setelah setiap rotasi log, dengan menggunakan kata kunci postrotate / endscript.
Satu kemungkinan penggunaan adalah mengirim log melalui email saat menyelesaikan rotasi. Untuk melanjutkan, pertama, buat skrip untuk mengirim file ke alamat email Anda:
#!/bin/bash
# Get all logs
tar -cvf /tmp/logpack.tar /var/log/messages*
# Send logs as attachment
echo "Log" | mail -s "log" [email protected] -A /tmp/logpack.tar
Simpan file di atas di direktori home Anda, misalnya /home/map.com username_s//endend.sh dan pastikan Anda mengaktifkan izin yang diperlukan melalui:
# sudo chmod u+x /home/user/sendlog.sh
Sekarang, edit file konfigurasi logrotate sebagai berikut:
/var/log/messages {
...
postrotate
…
/home/user/sendlog.sh
endscript
}
Simpan konfigurasi untuk menerapkan perubahan.
Setelah selesai, Anda akan menerima email dengan arsip log yang dijelaskan di atas pada setiap rotasi log.