GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengatur dan Mengelola Rotasi Log Menggunakan Logrotate di Linux

Salah satu direktori yang paling menarik (dan mungkin salah satu yang paling penting juga) dalam sistem Linux adalah /var/log . Menurut Filesystem Hierarchy Standard, aktivitas sebagian besar layanan yang berjalan di sistem ditulis ke file di dalam direktori ini atau salah satu subdirektorinya.

File tersebut dikenal sebagai log dan merupakan kunci untuk memeriksa bagaimana sistem beroperasi (dan bagaimana perilakunya di masa lalu). Log juga merupakan sumber informasi pertama yang dicari oleh administrator dan teknisi saat memecahkan masalah.

Jika kita melihat isi dari /var/log di CentOS/RHEL/Fedora dan Debian/Ubuntu (untuk variasi) kita akan melihat file log dan subdirektori berikut.

Harap perhatikan bahwa hasilnya mungkin agak berbeda dalam kasus Anda tergantung pada layanan yang berjalan di sistem Anda dan waktu berjalannya.

Di RHEL/CentOS dan Fedora

# ls /var/log

Di Debian dan Ubuntu

# ls /var/log

Dalam kedua kasus, kita dapat mengamati bahwa beberapa nama log diakhiri seperti yang diharapkan di “log” , sementara yang lain diganti namanya menggunakan tanggal (misalnya, maillog-20160822 di CentOS ) atau dikompresi (pertimbangkan auth.log.2.gz dan mysql.log.1.gz di Debian ).

Ini bukan perilaku default berdasarkan distribusi yang dipilih tetapi dapat diubah sesuka hati menggunakan arahan dalam file konfigurasi, seperti yang akan kita lihat di artikel ini.

Jika log disimpan selamanya, mereka akhirnya akan mengisi sistem file di mana /var/log tinggal. Untuk mencegahnya, administrator sistem dapat menggunakan utilitas bagus yang disebut logrotate untuk membersihkan log secara berkala.

Singkatnya, logrotate akan mengganti nama atau mengompresi log utama ketika suatu kondisi terpenuhi (lebih lanjut tentang itu dalam satu menit) sehingga acara berikutnya direkam pada file kosong.

Selain itu, ini akan menghapus “lama” log file dan akan menyimpan yang terbaru. Tentu saja, kita harus memutuskan apa yang “lama” artinya dan seberapa sering kita ingin logrotate membersihkan log untuk kita.

Menginstal Logrotate di Linux

Untuk memasang logrotate , cukup gunakan pengelola paket Anda:

---------- On Debian and Ubuntu ---------- 
# aptitude update && aptitude install logrotate 

---------- On CentOS, RHEL and Fedora ---------- 
# yum update && yum install logrotate

Perlu diperhatikan bahwa file konfigurasi (/etc/logrotate.conf ) dapat menunjukkan bahwa pengaturan lain yang lebih spesifik dapat ditempatkan pada .conf individu individual file di dalam /etc/logrotate.d .

Bacaan yang Disarankan :Kelola Log Sistem (Konfigurasi, Putar, dan Impor Ke Database) Menggunakan Logrotate

Ini akan terjadi jika dan hanya jika baris berikut ada dan tidak dikomentari:

include /etc/logrotate.d

Kami akan tetap menggunakan pendekatan ini, karena ini akan membantu kami untuk menjaga semuanya tetap teratur, dan menggunakan Debia n kotak untuk contoh berikut.

Konfigurasi Logrotate di Linux

Menjadi alat yang sangat serbaguna, logrotate menyediakan banyak arahan untuk membantu kami mengonfigurasi kapan dan bagaimana log akan diputar, dan apa yang harus terjadi setelahnya.

Mari kita masukkan konten berikut di /etc/logrotate.d/apache2.conf (perhatikan bahwa kemungkinan besar Anda harus membuat file itu) dan periksa setiap baris untuk menunjukkan tujuannya:

apache2.conf
/var/log/apache2/* {
    weekly
    rotate 3
    size 10M
    compress
    delaycompress
}

Baris pertama menunjukkan bahwa arahan di dalam blok berlaku untuk semua log di dalam /var/log/apache2 :

  • mingguan berarti alat akan mencoba memutar log setiap minggu. Nilai lain yang mungkin adalah harian dan bulanan.
  • putar 3 menunjukkan bahwa hanya 3 log yang diputar yang harus disimpan. Dengan demikian, file terlama akan dihapus pada proses keempat berikutnya.
  • ukuran=10M menyetel ukuran minimum agar rotasi berlangsung menjadi 10M. Dengan kata lain, setiap log tidak akan diputar hingga mencapai 10 MB.
  • kompres dan delaycompress digunakan untuk memberi tahu bahwa semua log yang diputar, kecuali yang terbaru, harus dikompresi.

Mari kita jalankan dry-run untuk melihat apa yang akan dilakukan logrotate jika itu benar-benar dieksekusi sekarang. Gunakan -d opsi diikuti oleh file konfigurasi (Anda sebenarnya dapat menjalankan logrotate dengan menghilangkan opsi ini):

# logrotate -d /etc/logrotate.d/apache2.conf

Hasilnya ditunjukkan di bawah ini:

Alih-alih mengompresi log, kami dapat mengganti namanya setelah tanggal ketika mereka diputar. Untuk melakukannya, kita akan menggunakan dateext pengarahan. Jika format tanggal kami selain dari yyyymmdd default , kita dapat menentukannya menggunakan dateformat .

Bacaan yang Disarankan :Instal 'di atas' untuk Memantau Aktivitas Pencatatan Proses Sistem Linux

Perhatikan bahwa kami bahkan dapat mencegah rotasi terjadi jika log kosong dengan notifempty . Selain itu, beri tahu logrotate untuk mengirimkan log yang dirotasi melalui email ke administrator sistem ([email protected] dalam hal ini) untuk referensinya (ini akan memerlukan server email yang harus disiapkan, yang berada di luar cakupan artikel ini).

Jika Anda ingin mendapatkan email tentang logrotate, Anda dapat mengatur server email Postfix seperti yang ditunjukkan di sini:Instal Server Email Postfix

Kali ini kita akan menggunakan /etc/logrotate.d/squid.conf untuk hanya memutar /var/log/squid/access.log :

squid.conf
/var/log/squid/access.log {
    monthly
    create 0644 root root
    rotate 5
    size=1M
    dateext
    dateformat -%d%m%Y
    notifempty
    mail [email protected]
}

Seperti yang bisa kita lihat pada gambar di bawah, log ini tidak perlu diputar. Namun, ketika kondisi ukuran terpenuhi (size=1M ), log yang diputar akan diganti namanya menjadi access.log-25082020 (jika log dirotasi pada 25 Agustus 2020 ) dan log utama (access.log ) akan dibuat ulang dengan izin akses yang disetel ke 0644 dan dengan root sebagai pemilik dan pemilik grup.

Akhirnya, ketika jumlah log akhirnya mencapai 6 , log terlama akan dikirimkan ke [email protected] .

Sekarang anggaplah Anda ingin menjalankan perintah khusus saat rotasi berlangsung. Untuk melakukannya, letakkan baris dengan perintah seperti itu di antara direktif postrotate dan endscript.

Misalnya, kita ingin mengirim email ke root ketika salah satu log di dalam /var/log/myservice akan diputar. Mari tambahkan garis merah ke /etc/logrotate.d/squid.conf :

squid.conf
/var/log/myservice/* {
	monthly
	create 0644 root root
	rotate 5
	size=1M
    	postrotate
   		echo "A rotation just took place." | mail root
    	endscript
}

Terakhir, namun tidak kalah pentingnya, penting untuk dicatat bahwa opsi ada di /etc/logrotate.d/*.conf menimpa yang ada di file konfigurasi utama jika terjadi konflik.

Logrot dan Cron

Secara default, instalasi logrotate membuat file crontab di dalam /etc/cron.daily bernama logrotate . Seperti halnya file crontab lain di dalam direktori ini, file tersebut akan dieksekusi setiap hari mulai 06:25 jika anacron tidak diinstal.

Bacaan yang Disarankan :11 Contoh Tugas Penjadwalan Cron di Linux

Jika tidak, eksekusi akan dimulai sekitar 07:35 . Untuk memverifikasi, perhatikan baris yang berisi cron.daily di /etc/crontab atau /etc/anacrontab .

Ringkasan

Dalam sistem yang menghasilkan beberapa log, administrasi file tersebut dapat sangat disederhanakan menggunakan logrotate. Seperti yang telah kami jelaskan di artikel ini, itu akan secara otomatis memutar, mengompres, menghapus, dan mengirimkan log secara berkala atau ketika file mencapai ukuran tertentu.

Pastikan itu diatur untuk dijalankan sebagai pekerjaan cron dan logrotate akan membuat segalanya lebih mudah bagi Anda. Untuk detail lebih lanjut, lihat halaman manual.

Apakah Anda memiliki pertanyaan atau saran tentang artikel ini? Jangan ragu untuk memberi tahu kami menggunakan formulir komentar di bawah.


Ubuntu
  1. Cara Menginstal dan Menggunakan logrotate untuk Mengelola File Log di Ubuntu 18.04 LTS

  2. Cara Menggunakan Logrotate untuk Mengelola Log di Ubuntu

  3. Cara Membuat Rotasi File Log Kustom dengan logrotate di Linux

  1. Putar dan arsipkan log dengan perintah Linux logrotate

  2. Cara Mengelola dan Mendaftar Layanan di Linux

  3. Cara Mengelola File Log Menggunakan Logrotate Di Linux

  1. Cara Melihat &Membaca File Log Linux

  2. Cara mengatur dan menggunakan Server FTP di Ubuntu Linux

  3. Cara Memantau dan Mencatat Lalu Lintas Jaringan di Linux Menggunakan vnStat