Alat rotasi log mana yang Anda sukai?
Alat rotasi log mana yang Anda sukai?
Jawaban:
Dalam pengalaman saya, logrotate sangat bagus. Ini sangat fleksibel, dan bekerja dengan baik dengan sebagian besar perangkat lunak.
Namun, ada beberapa masalah dengan itu, dan karena cronolog terutama merupakan fasilitas rotasi log web, saya akan menuliskan pengalaman saya dengan logrotate + apache yang bermasalah:
Saat memutar log, kita harus memberi tahu apache bahwa log sedang diputar, karena meskipun logrotate mengganti nama access.log ke access.log.1, apache akan terus menulis ke access.log.1, karena ia menulis ke inode, dan mengganti nama file tidak mempengaruhi nomor inode.
Pada debian etch (dan mungkin banyak distro lainnya), logrotate digunakan untuk memutar log apache. Sekarang, apache memiliki restart yang anggun yang menyarankan anak proses apache untuk keluar setelah mereka selesai melayani koneksi yang ada, apache kemudian membaca kembali konfigurasi itu, memunculkan proses anak baru, yang mulai menulis ke file log baru (Dalam kasus yang sebelumnya adalah diputar).
Ini terdengar seperti solusi yang bagus, namun restart yang anggun tidak selalu berfungsi dalam kondisi tertentu (seperti beban yang berat), jadi pengembang debian memutuskan untuk menggunakan restart apache alih-alih restart yang anggun, dalam konfigurasi log apache apache. Sayangnya ini menyebabkan semua koneksi terputus sekaligus, yang sangat buruk untuk situs yang sarat muatan. Selain itu, apache restart juga dapat menyebabkan masalah seperti apache berhenti dan tidak mulai (juga dalam situasi memuat tertentu), lihat tautan bug di bawah ini untuk detailnya.
Intinya adalah, logrotate hebat, tetapi dapat menyebabkan masalah tertentu untuk program tertentu. Saya tidak punya banyak pengalaman dengan cronolog, tetapi ketika ia menulis log melalui pipa, itu tidak memerlukan apache ketika memuat file log yang berputar, yang pada dasarnya menyelesaikan semua yang dijelaskan di atas.
Bug debian logrotate / apache terkait:
Saya lebih suka kronolog, tapi itu bukan preferensi yang kuat.
logrotate di mana dimulai oleh cron, dan jika sistem mati karena suatu alasan ketika rotate seharusnya terjadi, maka file log Anda tidak akan diputar.
Saya juga suka memiliki file log yang memiliki tanggal (% Y% m.combined.access.log) di namanya karena saya menyimpan log itu untuk waktu yang lama. Pada kebanyakan sistem, secara default, apache logrotate akan memberi nama file access.log, access.log.1, dll. Dimungkinkan untuk menggunakan tanggal di file log dengan logrotate, tapi saya tidak tahu bagaimana melakukan terakhir kali saya melihat.
Hanya pernah menggunakan logrotate. Itu yang digunakan Debian secara default dan saya tidak pernah punya keluhan dengannya.
Saya hampir secara eksklusif menggunakan cronolog
lebih logrotate
.
logrotate
datang dengan Debian, dan saya mengizinkannya tetap bekerja untuk layanan sistem seperti log server surat. Tetapi untuk Apache dan lighttpd
file log, itu saja cronolog
.
Salah satu alasan mengapa saya menggunakan cronolog
adalah bahwa semua konfigurasi terjadi di baris log-file dari konfigurasi server web
misal dalam lighttpd
file config, Anda bisa meletakkan:
accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%W-access.log"
Dan semua mendapatkan file log baru setiap minggu tanpa konfigurasi lainnya. Atau Anda bisa menjadi kreatif dan melakukan sesuatu seperti:
accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%m/%a-access.log"
Dan dapatkan file log yang menunjukkan lalu lintas berdasarkan hari dalam seminggu. misal semua hari Minggu, semua hari Selasa.
Apa yang lebih baik adalah bahwa bahkan jika server turun untuk jumlah waktu berapa pun, file log yang benar akan digunakan saat restart.