Cara Menyiapkan dan Mengurus Putaran Log Menggunakan Logrotat di Linux

Cara Menyiapkan dan Mengurus Putaran Log Menggunakan Logrotat di Linux

Salah satu direktori yang paling menarik (dan mungkin salah satu yang paling penting juga) dalam sistem Linux adalah /var/log. Menurut standard hierarki sistem fail, aktiviti kebanyakan perkhidmatan yang dijalankan dalam sistem ditulis ke dalam fail di dalam direktori ini atau salah satu subdirektorinya.

Fail tersebut dikenali sebagai log dan merupakan kunci untuk memeriksa bagaimana sistem beroperasi (dan bagaimana ia berkelakuan pada masa lalu). Log juga merupakan sumber maklumat pertama di mana pentadbir dan jurutera kelihatan semasa menyelesaikan masalah.

Sekiranya kita melihat kandungan /var/log di atas Centos/rhel/fedora dan Debian/Ubuntu (Untuk pelbagai) Kami akan melihat fail log dan subdirektori berikut.

Sila ambil perhatian bahawa hasilnya mungkin agak berbeza dalam kes anda bergantung pada perkhidmatan yang berjalan pada sistem anda dan masa mereka berjalan.

Di Rhel/Centos dan Fedora

# ls /var /log 
Log fail dan direktori di bawah CentOS 7

Di Debian dan Ubuntu

# ls /var /log 
Log fail dan direktori di Debian 8

Dalam kedua -dua kes, kita dapat melihat bahawa beberapa nama log berakhir seperti yang diharapkan dalam "Log", manakala yang lain sama ada dinamakan semula menggunakan tarikh (contohnya, Maillog-20160822 pada Centos) atau dimampatkan (pertimbangkan auth.log.2.Gz dan mysql.log.1.Gz pada Debian).

Ini bukan tingkah laku lalai berdasarkan pengagihan yang dipilih tetapi boleh diubah pada Will menggunakan arahan dalam fail konfigurasi, seperti yang akan kita lihat dalam artikel ini.

Sekiranya balak disimpan selama -lamanya, mereka akhirnya akan mengisi sistem fail di mana /var/log tinggal. Untuk mengelakkannya, pentadbir sistem boleh menggunakan utiliti yang bagus yang dipanggil Logrotate untuk membersihkan balak secara berkala.

Dalam beberapa perkataan, Logrotate akan menamakan semula atau memampatkan log utama apabila keadaan dipenuhi (lebih lanjut mengenai itu dalam satu minit) sehingga acara seterusnya direkodkan pada fail kosong.

Di samping itu, ia akan mengeluarkan "tua" fail log dan akan menyimpan yang paling terkini. Sudah tentu, kita dapat memutuskan apa "tua" bermaksud dan berapa kerap kita mahu logrotat membersihkan kayu balak untuk kita.

Memasang logrotat di linux

Untuk memasang Logrotate, Cukup gunakan pengurus pakej anda:

---------- Di Debian dan Ubuntu ---------- # Kemas kini Aptitude & & Aptitude Pasang Logrotat ---------- Di Centos, Rhel dan Fedora ---------- # yum kemas kini && yum pasang logrotat 

Ia bernilai dan baik untuk diperhatikan bahawa fail konfigurasi (/etc/logrotate.Conf) mungkin menunjukkan bahawa tetapan lain yang lebih spesifik boleh diletakkan pada individu .Conf fail di dalam /etc/logrotate.d.

Cadangan dibaca: Menguruskan log sistem (konfigurasikan, putar, dan import ke pangkalan data) menggunakan logrotat

Ini akan berlaku jika dan hanya jika baris berikut wujud dan tidak dikomentari:

Sertakan /etc /logrotate.d 

Kami akan berpegang dengan pendekatan ini, kerana ia akan membantu kami untuk menyimpan sesuatu dengan teratur, dan menggunakannya Debiakotak n untuk contoh berikut.

Konfigurasikan logrotat di linux

Menjadi alat yang sangat serba boleh, Logrotate menyediakan banyak arahan untuk membantu kita mengkonfigurasi kapan dan bagaimana kayu balak akan diputar, dan apa yang harus berlaku selepas itu.

Mari masukkan kandungan berikut di /etc/logrotate.d/apache2.Conf (perhatikan bahawa kemungkinan besar anda perlu membuat fail itu) dan memeriksa setiap baris untuk menunjukkan tujuannya:

apache2.Conf
/var/log/apache2/* mingguan berputar 3 saiz 10m compress delaycompress 

Baris pertama menunjukkan bahawa arahan di dalam blok digunakan untuk semua log di dalamnya /var/log/apache2:

  • setiap minggu bermaksud bahawa alat itu akan cuba memutar log setiap minggu. Nilai lain yang mungkin adalah setiap hari dan bulanan.
  • berputar 3 menunjukkan bahawa hanya 3 balak berputar yang harus disimpan. Oleh itu, fail tertua akan dikeluarkan pada larian berikutnya keempat.
  • saiz = 10m Menetapkan saiz minimum untuk putaran berlaku hingga 10m. Dengan kata lain, setiap log tidak akan diputar sehingga mencapai 10MB.
  • memampatkan dan DelayCompress digunakan untuk memberitahu bahawa semua balak berputar, kecuali yang paling baru, harus dimampatkan.

Mari kita jalankan kering untuk melihat apa yang akan dilakukan oleh logrotat jika sebenarnya dilaksanakan sekarang. Menggunakan -d pilihan diikuti dengan fail konfigurasi (anda sebenarnya boleh menjalankan logrotat dengan menghilangkan pilihan ini):

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

Hasilnya ditunjukkan di bawah:

Putar balak Apache dengan logrotat

Daripada memampatkan balak, kami dapat menamakan semula mereka selepas Tarikh Semasa mereka berputar. Untuk melakukan itu, kami akan menggunakan Dateext arahan. Sekiranya format tarikh kami selain daripada lalai yyyymmdd, kita boleh menentukannya menggunakan format tarikh.

Cadangan dibaca: Pasang 'atop' untuk memantau aktiviti pembalakan proses sistem linux

Perhatikan bahawa kita juga boleh menghalang putaran daripada berlaku jika log kosong notifempty. Di samping itu, mari kita beritahu Logrotate untuk menghantar log berputar kepada pentadbir sistem ([dilindungi e -mel] Dalam kes ini) untuk rujukannya (ini memerlukan pelayan mel untuk disediakan, yang keluar dari skop artikel ini).

Sekiranya anda ingin mendapatkan e -mel mengenai logrotat, anda boleh menyiapkan pelayan mel postfix seperti yang ditunjukkan di sini: Pasang pelayan pos postfix

Kali ini kita akan menggunakan /etc/logrotate.D/sotong.Conf hanya berputar /var/log/sotong/akses.log:

cumi.Conf
/var/log/sotong/akses.Log Bulanan Buat 0644 Root Root Putar 5 Size = 1m Dateext DateFormat -%D%M%Y Notifempty Mail [E -mel dilindungi] 

Seperti yang dapat kita lihat dalam imej di bawah, log ini tidak perlu diputar. Walau bagaimanapun, apabila keadaan saiz dipenuhi (Saiz = 1m), log berputar akan dinamakan semula akses.Log-255082020 (Sekiranya log diputar 25 Ogos 2020) dan log utama (akses.log) akan dibuat semula dengan kebenaran akses yang ditetapkan ke 0644 Dan dengan akar sebagai pemilik dan pemilik kumpulan.

Akhirnya, apabila jumlah balak akhirnya sampai 6, Log tertua akan dihantar ke [dilindungi e -mel].

Putar kayu sotong dengan logrotat

Sekarang mari kita anggap anda ingin menjalankan arahan tersuai apabila putaran berlaku. Untuk melakukan itu, letakkan garis dengan arahan antara arahan postrotate dan endscript.

Contohnya, katakan kami ingin menghantar e -mel ke root apabila mana -mana log di dalamnya /var/log/myservice Diputar. Mari tambahkan garis merah ke /etc/logrotate.D/sotong.Conf:

cumi.Conf
/var/log/myservice/* Bulanan Buat 0644 Root Root Putar 5 Size = 1m postrotate echo "putaran baru berlaku."| Endscript Root Mail  

Akhir sekali, tetapi tidak penting, adalah penting untuk diperhatikan bahawa pilihan yang ada di /etc/logrotate.d/*.Conf mengatasi mereka dalam fail konfigurasi utama sekiranya berlaku konflik.

Logrotate dan Cron

Secara lalai, pemasangan logrotat membuat fail crontab di dalamnya /etc/cron.setiap hari Dinamakan Logrotate. Oleh kerana itu berlaku dengan fail crontab lain di dalam direktori ini, ia akan dilaksanakan setiap hari bermula pada 6:25 pagi Sekiranya Anacron tidak dipasang.

Cadangan dibaca: 11 Contoh Tugas Penjadualan Cron di Linux

Jika tidak, pelaksanaan akan bermula 7:35 pagi. Untuk mengesahkan, tonton garis yang mengandungi Cron.setiap hari sama ada /etc/crontab atau /etc/anacrontab.

Ringkasan

Dalam sistem yang menghasilkan beberapa balak, pentadbiran fail sedemikian dapat dipermudahkan dengan menggunakan logrotat. Seperti yang telah kita jelaskan dalam artikel ini, ia secara automatik akan memutar, memampatkan, mengeluarkan, dan mel log secara berkala atau apabila fail mencapai saiz yang diberikan.

Pastikan ia ditetapkan untuk dijalankan sebagai pekerjaan cron dan logrotat akan menjadikan perkara lebih mudah untuk anda. Untuk maklumat lanjut, rujuk halaman lelaki.

Adakah anda mempunyai sebarang pertanyaan atau cadangan mengenai artikel ini? Jangan ragu untuk memberitahu kami menggunakan borang komen di bawah.