Bagaimana Anda menganalisis file log dari mesin UNIX / Linux? Kami menjalankan beberapa ratus server yang semuanya menghasilkan file log mereka sendiri, baik secara langsung atau melalui syslog. Saya mencari solusi yang layak untuk mengumpulkan ini dan memilih acara penting. Masalah ini dipecah menjadi 3 komponen:
1) Pengiriman pesan
Cara klasik adalah dengan menggunakan syslog untuk mencatat pesan ke host jarak jauh. Ini berfungsi dengan baik untuk aplikasi yang masuk ke syslog tetapi kurang berguna untuk aplikasi yang menulis ke file lokal. Solusi untuk ini mungkin termasuk memiliki log aplikasi ke FIFO yang terhubung ke program untuk mengirim pesan menggunakan syslog, atau dengan menulis sesuatu yang akan menangkap file lokal dan mengirim output ke host syslog pusat. Namun, jika kita kesulitan menggunakan alat tulis untuk mengirim pesan ke syslog, apakah kita akan lebih baik mengganti semuanya dengan sesuatu seperti Facebook Scribe yang menawarkan lebih banyak fleksibilitas dan keandalan daripada syslog?
2) Agregasi pesan
Entri log tampaknya jatuh ke dalam salah satu dari dua jenis: per-host dan per-layanan. Pesan per-host adalah yang terjadi pada satu mesin; pikirkan kegagalan disk atau login yang mencurigakan. Pesan per-layanan terjadi pada sebagian besar atau semua host yang menjalankan layanan. Misalnya, kami ingin tahu kapan Apache menemukan kesalahan SSI tetapi kami tidak ingin kesalahan yang sama dari 100 mesin. Dalam semua kasus, kami hanya ingin melihat satu dari setiap jenis pesan: kami tidak ingin 10 pesan mengatakan disk yang sama telah gagal, dan kami tidak ingin pesan setiap kali SSI yang rusak dipukul.
Salah satu pendekatan untuk memecahkan masalah ini adalah dengan menggabungkan beberapa pesan dari jenis yang sama menjadi satu pada setiap host, mengirim pesan ke server pusat dan kemudian menggabungkan pesan-pesan dari jenis yang sama ke dalam satu peristiwa keseluruhan. SER dapat melakukan ini tetapi canggung untuk digunakan. Bahkan setelah beberapa hari mengutak-atik saya hanya memiliki agregasi dasar yang berfungsi dan harus terus mencari logika yang digunakan SER untuk mengkorelasikan peristiwa. Ini hal yang kuat tapi rumit: Saya butuh sesuatu yang dapat diambil dan digunakan rekan saya dalam waktu sesingkat mungkin. Aturan SER tidak memenuhi persyaratan itu.
3) Menghasilkan peringatan
Bagaimana kita memberi tahu admin kita ketika sesuatu yang menarik terjadi? Kirim kotak masuk grup? Menyuntikkan ke Nagios?
Jadi, bagaimana Anda memecahkan masalah ini? Saya tidak mengharapkan jawaban di atas piring; Saya dapat mengerjakan sendiri perinciannya tetapi beberapa diskusi tingkat tinggi tentang apa yang pasti merupakan masalah umum akan sangat bagus. Saat ini kami menggunakan mishmash pekerjaan cron, syslog dan siapa yang tahu apa lagi yang bisa menemukan acara. Ini tidak dapat diperpanjang, dipelihara atau fleksibel dan karena itu kami kehilangan banyak hal yang tidak seharusnya.
Diperbarui: kami sudah menggunakan Nagios untuk memantau yang sangat bagus untuk mendeteksi host / layanan pengujian / dll tetapi kurang berguna untuk mengikis file log. Saya tahu ada plugin log untuk Nagios tapi saya tertarik pada sesuatu yang lebih skalabel dan hierarkis daripada peringatan per-host.