Come stai analizzando i file di registro dalle macchine UNIX / Linux? Eseguiamo diverse centinaia di server che generano tutti i propri file di registro, direttamente o tramite syslog. Sto cercando una soluzione decente per aggregare questi e selezionare eventi importanti. Questo problema si suddivide in 3 componenti:
1) Trasporto dei messaggi
Il modo classico è utilizzare syslog per registrare i messaggi su un host remoto. Funziona bene per le applicazioni che accedono a syslog ma meno utile per le app che scrivono in un file locale. Le soluzioni per questo potrebbero includere il collegamento dell'applicazione in un FIFO collegato a un programma per inviare il messaggio tramite syslog o scrivendo qualcosa che eseguirà il grep dei file locali e invierà l'output all'host syslog centrale. Tuttavia, se dovessimo preoccuparci di scrivere strumenti per inserire messaggi in syslog, sostituiremmo meglio l'intero lotto con qualcosa come Facebook Scribe che offre maggiore flessibilità e affidabilità rispetto a syslog?
2) Aggregazione dei messaggi
Le voci del registro sembrano rientrare in uno dei due tipi: per host e per servizio. I messaggi per host sono quelli che si verificano su una macchina; pensa a guasti del disco o accessi sospetti. I messaggi per servizio si verificano sulla maggior parte o su tutti gli host che eseguono un servizio. Ad esempio, vogliamo sapere quando Apache trova un errore SSI ma non vogliamo lo stesso errore da 100 macchine. In tutti i casi vogliamo vedere solo uno di ogni tipo di messaggio: non vogliamo 10 messaggi che affermino che lo stesso disco non è riuscito e non vogliamo un messaggio ogni volta che viene colpito un SSI rotto.
Un approccio per risolvere questo problema consiste nell'aggregare più messaggi dello stesso tipo in uno su ciascun host, inviare i messaggi a un server centrale e quindi aggregare i messaggi dello stesso tipo in un evento globale. SER può farlo ma è scomodo da usare. Anche dopo un paio di giorni di violinismo, ho lavorato solo su aggregazioni rudimentali e ho dovuto cercare costantemente la logica che SER utilizzava per correlare gli eventi. È roba potente ma difficile: ho bisogno di qualcosa che i miei colleghi possano raccogliere e usare nel più breve tempo possibile. Le regole SER non soddisfano tale requisito.
3) Generazione di avvisi
Come facciamo a dire ai nostri amministratori quando succede qualcosa di interessante? Invia la posta in arrivo al gruppo? Iniettare in Nagios?
Allora, come stai risolvendo questo problema? Non mi aspetto una risposta su un piatto; Riesco a capire i dettagli da solo, ma una discussione di alto livello su quello che sicuramente è un problema comune sarebbe grande. Al momento stiamo usando un mix di cron job, syslog e chissà cos'altro per trovare gli eventi. Questo non è estensibile, mantenibile o flessibile e come tale ci manca un sacco di cose che non dovremmo.
Aggiornato: stiamo già utilizzando Nagios per il monitoraggio, il che è ottimo per i down host / servizi di test / ecc. Rilevati ma meno utile per lo scraping dei file di registro. So che ci sono plugin di log per Nagios, ma sono interessato a qualcosa di più scalabile e gerarchico degli avvisi per host.