GNU/Linux >> Belajar Linux >  >> Linux

Contoh konfigurasi dan pemecahan masalah logrotate

Menerapkan pengetahuan

Artikel sebelumnya Memahami utilitas logrotate menjelaskan apa yang dilakukan logrotate dan bagaimana Anda dapat mengonfigurasinya. Artikel ini menerapkan pengetahuan ini untuk membuat solusi rotasi log untuk satu atau beberapa host virtual kustom. Artikel ini juga mengidentifikasi beberapa opsi untuk pengujian dan pemecahan masalah rotasi log.

Mengikat semuanya bersama-sama:log host virtual

Untuk menunjukkan bagaimana Anda dapat menggunakan logrotate untuk aplikasi Anda, berikut adalah contoh yang akan berguna bagi banyak orang:memutar log untuk host virtual kustom Anda. Contoh menggunakan Apache ®, tetapi Anda dapat mengubahnya untuk server web lain seperti nNinx® atau Lightpd® , biasanya hanya dengan mengubah skrip pasca-putar.

Pertama, buat file untuk menyimpan konfigurasi yang memberi tahulogrotate apa yang harus dilakukan dengan file log host virtual. Jangan mengedit file konfigurasi utama atau file konfigurasi server web karena peningkatan paket di masa mendatang mungkin ingin menimpa konfigurasi. Sebagai gantinya, buat file Anda sendiri dengan perintah berikut:

/etc/logrotate.d/virtualhosts

Contoh ini memasukkan semua virtual host ke dalam satu file, tetapi jika Anda memiliki satu host yang lebih sibuk daripada yang lain, Anda mungkin ingin membuat file konfigurasi terpisah untuk menangani kebutuhan domain Anda yang berbeda. Contoh menentukan beberapa item yang mungkin sudah diatur dalam konfigurasi utama Anda, hanya untuk mencakup semua basis.

File

Katakanlah Anda memiliki dua domain virtual, domain1.com dan domain2.com , dan bahwa file log untuk masing-masing ada di /home/demo/public_html/(nama domain)/log .File konfigurasi Anda perlu memberi tahu logrotate di mana menemukan file-file log, kemudian mulai blok konfigurasi untuk mereka:

/home/demo/public_html/domain1.com/log/*log /home/demo/public_html/domain2.com/log/*log {

Jika Anda memiliki lebih banyak direktori log atau file untuk ditambahkan, masukkan ke dalam daftar tersebut.

Putar

Selanjutnya, pastikan logrotate hanya menyimpan log lama sebanyak yang Anda inginkan:

rotate 14

Contoh ini menggunakan 14 file untuk menyimpan log selama dua minggu, tetapi Anda dapat menyesuaikan jumlah tersebut untuk memenuhi kebutuhan Anda.

Interval

Sekarang, beri tahu server web untuk memutar log ini setiap hari (sekali lagi, ubah jika Anda menginginkan interval yang lebih lama):

daily

Ukuran (opsional)

Pengaturan ukuran menentukan ukuran maksimum untuk log Anda. Saat log mencapai ukuran itu, rotasi log dipicu.

size 50M

Pengaturan ukuran adalah opsional di sini karena mengesampingkan kondisi rotasi berbasis waktu apa pun. Anda dapat menentukan interval waktu dan ukuran maksimal, tetapi jika Anda melakukannya, logrotate mengabaikan pengaturan interval waktu.

Kompresi

Tentukan apakah Anda ingin mengompresi log ini saat diarsipkan. Contoh ini menggunakan delaycompress perintah untuk memperhitungkan restart Apache yang anggun, yang berarti Anda juga perlu mengaktifkan kompresi:

compress
delaycompress

Skrip Bersama

Anda mungkin memiliki beberapa host virtual, dan itu berarti beberapa log berputar. Untuk memastikan server web hanya dihidupkan ulang setelah semua rotasi selesai, tambahkan baris berikut:

sharedscripts

Postrotate

Tentukan skrip postrotate untuk memulai ulang server web:

postrotate
        /usr/sbin/apachectl graceful > /dev/null
endscript

Dan terakhir, tutup blok konfigurasi dengan kurung kurawal:

}

Seluruh file

Berikut ini adalah file konfigurasi lengkapnya:

/home/demo/public_html/domain1.com/log/*log /home/demo/public_html/domain2.com/log/*log {
        rotate 14
        daily
        compress
        delaycompress
        sharedscripts
        postrotate
                /usr/sbin/apachectl graceful > /dev/null
        endscript
}

Uji skrip baik dengan melihat hal-hal ketika pekerjaan cron malam berjalan atau dengan menjalankanlogrotate secara manual dengan perintah berikut:

/usr/sbin/logrotate /etc/logrotate.conf

Jika Anda tidak mendapatkan kesalahan kembali, Anda seharusnya baik-baik saja. Tetapi jika Anda ingin memastikan, Anda dapat menjalankan beberapa tes berikut.

Pengujian logrotate

Jika Anda menduga logrotate mengalami beberapa masalah, atau Anda hanya ingin memastikan konfigurasi baru yang Anda buat berfungsi, Anda dapat melewati beberapa tanda yang berguna untuk logrotate saat Anda menjalankannya dari baris perintah:

Verbose

Bendera verbose, -v , memberitahu logrotate untuk mengatakan setiap operasi yang dijalankannya. Ini membantu ketika Anda ingin mengetahui mengapa logrotate tidak memutar log seperti yang diharapkan.

Debug

Bendera debug, -d , memberitahu logrotate untuk melakukan gerakan memutar logtetapi tidak sebenarnya memutar mereka. Ini dapat berguna jika Anda bekerja di server produksi dan Anda ingin menguji file konfigurasi baru tetapi tidak ingin rotasi log aktual berjalan saat Anda menjalankan pengujian.

Debug juga memeriksa apakah file konfigurasi diformat dengan benar dan logrotate dapat menemukan file log yang akan dirotasi. Namun, karena tidak menjalankan rotasi, ia tidak menguji beberapa bagian proses seperti skrip pasca-rotasi.

Kekuatan

Bendera kekuatan, -f , memaksa logrotate untuk memutar semua log saat dijalankan, baik log tersebut biasanya perlu diputar pada saat itu atau tidak. Jika Anda ingin menguji konfigurasi logrotate secara menyeluruh, ini adalah tanda yang digunakan. Ingatlah bahwa rotasi log memutar log dan menghapus log lama sesuai dengan konfigurasi, jadi jangan secara tidak sengaja merotasi log terbaru yang perlu Anda simpan.

Ini juga dapat berguna jika Anda yakin bahwa logrotate harus memutar log, tetapi sebenarnya tidak. Memaksakan masalah membantu Anda mengidentifikasi:

  • Jika masalahnya adalah logrotate tidak menganggap log perlu dirotasi (jika Anda menjalankan force flagdan log dirotasi)
  • Jika masalahnya adalah logrotate tidak dapat memengaruhi file log (jika Anda menjalankannya dan tidak terjadi apa-apa pada log).

Catatan: Jika Anda mengonfigurasi logrotate untuk menambahkan tanggal ke nama log yang diarsipkan, bahkan menggunakan flag force membuat logrotate membuat arsip baru pada hari yang sama. Karena nama yang perlu digunakan untuk arsip kedua sudah diambil dalam kasus tersebut, Anda mungkin perlu mengganti nama arsip terbaru sebelum Anda dapat memaksa rotasi log.

Menggabungkan flag

Anda dapat menggunakan flag pengujian bersama-sama dengan cukup efektif. Agar logrotate memberi tahu Anda apa yang akan dilakukannya jika Anda membuatnya memutar semuanya, tetapi tidak sebenarnya putar apa saja, Anda dapat menggabungkan ketiganya:

/usr/sbin/logrotate -vdf /etc/logrotate.conf

Perintah ini menyediakan daftar panjang hal-hal yang akan dilakukan logrotate, termasuk file log mana yang akan dirotasi dan apa yang akan dilakukan selama proses tersebut.

Jika Anda ingin menguji semua konfigurasi rotasi secara keseluruhan, termasuk skrip yang dijalankan setelah rotasi, Anda dapat menjalankan logrotate tanpa tanda debug:

/usr/sbin/logrotate -vf /etc/logrotate.conf

Logrotate memutar semua log. Skimming output akan membantu Anda menangkap masalah yang jelas. Anda juga harus memastikan bahwa semua layanan Anda masih berjalan dengan baik, tidak ada yang salah dengan skrip pascarotasi, dan semua log dirotasi.

Bagaimana logrotate mengingat

Jika Anda menemukan bahwa log tidak berputar meskipun sudah cukup tua dari yang seharusnya, jalankan logrotate secara manual dengan -f bendera. Tetapi jika Anda ingin tahu mengapa ada yang tidak beres, ada satu file lagi yang dapat Anda periksa sebelum memaksa rotasi:

/var/lib/logrotate.status

Logrotate menyimpan informasi tentang kapan terakhir kali setiap file log diputar di file status. Jika Anda melihat ke dalam, Anda melihat sesuatu seperti:

logrotate state -- version 2
"/var/log/acpid.log" 2010-6-18
"/var/log/iptables.log" 2010-6-18
"/var/log/uucp.log" 2010-6-29
...

Ini adalah format langsung, lokasi file log di sebelah kiri, dan tanggal terakhir diputar ada di sebelah kanan. Terkadang, tanggal di server Anda menjadi bingung (jika Anda mengutak-atik layanan NTP atau sejenisnya), dan tanggal saat log terakhir diputar akan menjadi tanggal yang akan datang. Jika itu terjadi, Anda melihatnya di file status ini.

Jika Anda ingin memeriksa logrotate dengan file log tertentu tetapi tidak ingin memaksa semuanya berputar, Anda dapat menghapus entri log dari file status logrotate. Kemudian ketika Anda menjalankan logrotate secara normal, itu akan membuat entri baru untuk log dengan tanggal hari ini (meskipun mungkin tidak benar-benar memutar log - ia menggunakan run pertama sebagai baseline jika hanya berbasis interval).

Ringkasan

Untuk sesuatu yang berjalan dengan tenang di latar belakang dan hanya benar-benar melakukan satu jenis tugas, logrotate melakukan sedikit. Anda harus dapat mengatur file konfigurasi newlogrotate untuk tujuan Anda sendiri, baik membuatnya dari awal atau menyalin konfigurasi yang ada dan memodifikasinya dengan tepat. Dan yang paling penting, Anda dapat menjaga agar log Anda tidak lepas kendali.


Linux
  1. Putar dan arsipkan log dengan perintah Linux logrotate

  2. LVM dan multipathing – contoh string filter LVM

  3. Logrotate tidak menghapus log lama

  1. Pemecahan Masalah Jaringan Linux Dan Debugging?

  2. Cara:Replikasi dan Konfigurasi DRBD

  3. Lokasi File Log Umum dan File Konfigurasi untuk Layanan cPanel

  1. Konfigurasi logrotate di Redhat Linux

  2. Cara:MTR – Memahami dan Mengatasi Masalah Konektivitas Jaringan

  3. Menonaktifkan Peringatan dan Pemberitahuan Penghentian PHP