Cara Mengatur dan Mengelola Rotasi Log Menggunakan Logrotate Di Linux

Cara Mengatur dan Mengelola Rotasi Log Menggunakan Logrotate Di Linux

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

File seperti itu dikenal sebagai log dan apakah kunci untuk memeriksa bagaimana sistem beroperasi (dan bagaimana perilaku itu di masa lalu). Log juga merupakan sumber informasi pertama di mana administrator dan insinyur terlihat saat pemecahan masalah.

Jika kita melihat isinya /var/log pada suatu Centos/rhel/fedora Dan Debian/Ubuntu (untuk variasi) kita akan melihat file log dan subdirektori berikut.

Harap dicatat bahwa hasilnya mungkin agak berbeda dalam kasus Anda tergantung pada layanan yang berjalan pada sistem Anda dan waktu yang telah mereka jalankan.

Di rhel/centos dan fedora

# ls /var /log 
File log dan direktori di bawah Centos 7

Di Debian dan Ubuntu

# ls /var /log 
File log dan direktori di debian 8

Dalam kedua kasus, kita dapat mengamati bahwa beberapa nama log berakhir seperti yang diharapkan "catatan", sementara yang lain berganti nama menggunakan tanggal (misalnya, Maillog-20160822 pada Centos) atau terkompresi (pertimbangkan auth.catatan.2.GZ Dan mysql.catatan.1.GZ pada Debian).

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

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

Dalam beberapa kata, Logrotate Akan mengganti nama atau mengompres log utama saat suatu kondisi dipenuhi (lebih lanjut tentang itu dalam satu menit) sehingga acara berikutnya direkam pada file kosong.

Selain itu, itu akan menghapus "tua" file log dan akan menyimpan yang terbaru. Tentu saja, kita harus memutuskan apa "tua" berarti dan seberapa sering kami ingin Logrotate membersihkan log untuk kami.

Menginstal Logrotate di Linux

Untuk memasang Logrotate, Cukup gunakan manajer paket Anda:

---------- Di Debian dan Ubuntu ---------- # aptitude update && aptitude instal logrotate ---------- Di Centos, Rhel dan Fedora ---------- # yum update && yum install logrotate 

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

Disarankan baca: Kelola Log Sistem (Konfigurasikan, Putar, dan Impor ke dalam Basis Data) Menggunakan Logrotate

Ini akan menjadi kasus jika dan hanya jika baris berikut ada dan tidak dikomentari:

termasuk /etc /logrotate.D 

Kami akan tetap dengan pendekatan ini, karena itu akan membantu kami menjaga keadaan, dan menggunakan Debian kotak untuk contoh berikut.

Konfigurasikan Logrotate di Linux

Menjadi alat yang sangat fleksibel, Logrotate menyediakan banyak arahan untuk membantu kami mengonfigurasi kapan dan bagaimana log akan diputar, dan apa yang harus terjadi sesudahnya.

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

Apache2.conf
/var/log/apache2/* mingguan putar 3 ukuran 10m compress delaycompress 

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

  • mingguan berarti bahwa alat akan mencoba memutar log setiap minggu. Nilai lain yang mungkin dilakukan setiap hari dan bulanan.
  • Putar 3 menunjukkan bahwa hanya 3 log yang diputar yang harus disimpan. Dengan demikian, file tertua akan dihapus pada proses keempat berikutnya.
  • ukuran = 10m Menetapkan ukuran minimum agar rotasi berlangsung hingga 10m. Dengan kata lain, setiap log tidak akan diputar sampai mencapai 10MB.
  • kompres Dan Delaycompress digunakan untuk mengatakan bahwa semua log yang diputar, dengan pengecualian yang terbaru, harus dikompresi.

Mari kita jalankan dry-run untuk melihat apa yang akan dilakukan Logrotate jika benar-benar dieksekusi sekarang. Menggunakan -D Opsi diikuti oleh file konfigurasi (Anda benar -benar dapat menjalankan Logrotate dengan menghilangkan opsi ini):

# LOGROTATE -D /ETC /LOGROTATE.d/apache2.conf 

Hasilnya ditunjukkan di bawah ini:

Putar log apache dengan Logrotate

Alih -alih mengompres log, kami dapat mengganti nama setelah tanggal Saat mereka diputar. Untuk melakukan itu, kami akan menggunakan datext pengarahan. Jika format tanggal kami selain default yyyymmdd, kami dapat menentukannya menggunakan format tanggal.

Disarankan baca: Instal 'atop' untuk memantau aktivitas logging proses sistem linux

Perhatikan bahwa kita bahkan dapat mencegah rotasi terjadi jika log kosong Notifmempty. Selain itu, mari kita beri tahu Logrotate untuk mengirimkan log yang diputar ke administrator sistem ([Email dilindungi] Dalam hal ini) untuk rujukannya (ini akan membutuhkan server surat untuk diatur, yang berada di luar ruang lingkup artikel ini).

Jika Anda ingin mendapatkan email tentang Logrotate, Anda dapat mengatur server surat postfix seperti yang ditunjukkan di sini: Instal Server Postfix Mail

Kali ini kami akan menggunakan /etc/logrotate.D/Squid.conf hanya berputar /var/log/cumi/akses.catatan:

cumi-cumi.conf
/var/log/cumi/akses.Log Bulanan Buat 0644 Root Root Rotate 5 SIZE = 1M DATEEXT DATEFORMAT -%D%m%y notifempty mail [email dilindungi] 

Seperti yang dapat kita lihat pada gambar di bawah ini, log ini tidak perlu diputar. Namun, saat kondisi ukuran terpenuhi (ukuran = 1m), log yang diputar akan diganti namanya mengakses.LOG-25082020 (Jika log diputar 25 Agustus 2020) dan log utama (mengakses.catatan) akan diciptakan kembali dengan izin akses yang ditetapkan 0644 dan dengan akar Sebagai pemilik dan pemilik kelompok.

Akhirnya, ketika jumlah log akhirnya mencapai 6, log tertua akan dikirimkan ke [Email dilindungi].

Putar log cumi dengan logrotate

Sekarang anggaplah Anda ingin menjalankan perintah khusus saat rotasi terjadi. Untuk melakukan itu, tempatkan baris dengan perintah tersebut antara arahan postrotate dan endscript.

Misalnya, anggaplah kita ingin mengirim email ke root ketika salah satu log di dalam /var/log/myService diputar. Mari tambahkan garis dalam warna merah ke /etc/logrotate.D/Squid.conf:

cumi-cumi.conf
/var/log/myService/* bulanan membuat 0644 root root rotate 5 size = 1m Postrotate Echo "Rotasi baru saja terjadi."| Mail root endscript  

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

Logrotate dan Cron

Secara default, instalasi Logrotate membuat file crontab di dalamnya /etc/cron.sehari-hari bernama Logrotate. Seperti halnya dengan file crontab lainnya di dalam direktori ini, itu akan dieksekusi setiap hari mulai 6:25 pagi Jika Anacron tidak terpasang.

Disarankan baca: 11 contoh penjadwalan cron di Linux

Kalau tidak, eksekusi akan dimulai 7:35 pagi. Untuk memverifikasi, perhatikan garis yang berisi cron.sehari-hari keduanya /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 dalam artikel ini, itu akan secara otomatis memutar, mengompres, menghapus, dan mengirimkan log secara berkala atau ketika file mencapai ukuran yang diberikan.

Pastikan itu diatur untuk berjalan sebagai pekerjaan cron dan Logrotate akan membuat segalanya lebih mudah bagi Anda. Untuk detail lebih lanjut, lihat halaman Manusia.

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