2009-03-20 23 views
5

Il nostro team ha un numero di processi che eseguiamo manualmente ma che possono essere eseguiti per molti giorni. I processi fanno cose diverse a un grande numero di entità (pagine web, righe di database, immagini, file, ecc.). Ovviamente di tanto in tanto ci sono dei fallimenti e dobbiamo progettare o processi per gestire questi fallimenti con garbo e procedere così che l'intero lavoro non venga abbattuto.Quali sono le migliori pratiche per tenere traccia di avvisi/errori nei processi di lunga durata?

A seconda del particolare processo in questione, la frequenza, la gravità e l'urgenza dei guasti varia. In alcuni casi inviamo email quando si verifica un errore raro ma importante, in altri casi lo registriamo e andiamo avanti, e così via.

Il problema è che abbiamo diversi codice di gestione degli errori sparsi ovunque e il più delle volte quando abbiamo "LOG e andare avanti" nessuno mai va indietro e legge i log, quindi non si sa mai che cosa si sono verificati problemi. Non è possibile impostare l'e-mail di default per tutti i problemi perché ci sarebbero semplicemente troppe email.

Questi sono processi a esecuzione prolungata ma non demoni in cui qualcosa come SNMP o Nagios potrebbe sembrare una buona soluzione. Sicuramente questo è un problema abbastanza comune ma non riesco a trovare molte soluzioni online. Ho sentito persone parlare dell'utilizzo di log4j (o altri pacchetti di registrazione simili) per accedere a un database, ecc., Che sembra possa essere un passo nella giusta direzione, ma sicuramente ci sono soluzioni più sofisticate là fuori ormai .. ? Sto immaginando qualcosa in cui il tuo logger scrive eventi in un database e c'è un'interfaccia web simile a Nagios che ti consente di vedere quali errori si verificano con i processi in tempo reale e di configurare avvisi via email per modelli specifici, ecc.

Esiste qualcosa del genere? In caso negativo, quali approcci avete utilizzato per affrontare con successo problemi simili?

(Per quello che vale la maggior parte del nostro codebase è in python ma immagino che qualsiasi implementazione decente di questa idea sia in gran parte non specifica per l'anguage e ovviamente anche qualsiasi soluzione concettuale).

Aggiornamento: Ho appena passato un po 'di tempo a guardare Chainsaw, che è una specie di cosa sto cercando, ma mi piacerebbe che fosse una webapp invece di un'app desktop e avessi funzionalità di avviso.

Aggiornamento: ho appena scoperto hoptoadapp e exceptional, che sono entrambi in qualche modo sulla falsariga di quello che stavo pensando, anche se entrambi sono specificamente indirizzati su Rails.

risposta

0

Penso che quello che ti serve qui sia troppo specifico per trovare qualcosa già costruito che si adatti alle tue esigenze. Ma...

Quello che hai descritto su log4j mi sembra perfetto: una volta che hai inserito gli errori nel DB, una semplice web-app ti permette di dare un'occhiata a loro, filtrare e impostare modelli per sparare e-mail come errori da un'app specifica, una soglia del livello di errore, un messaggio contenente alcune espressioni regolari, ecc.

Inoltre, sarà necessario un piccolo cronjob che si connetterebbe al DB, cercare nuovi record (basati sull'ultima verifica) che corrispondono ai criteri di posta elettronica e mandali fuori.

Codificare tutto ciò non dovrebbe richiedere più di qualche giorno nel peggiore dei casi e, per quello che vale, si finirà per avere uno strumento personalizzato al 100% per voi.

1

Bene, sembra che una soluzione praticabile sarebbe quella di digerire i log degli errori. Ogni notte un processo passa attraverso i log degli errori e arrotonda l'errore/avviso/ecc. Per il giorno e li inserisce in un messaggio di posta elettronica. Potresti anche raggrupparli per gravità e/o applicazione se lo desideri.

Alla fine si ottiene solo una e-mail al giorno con tutte le informazioni proprio lì a portata di mano. Non una soluzione "rapida" o anche elegante, ma potrebbe essere molto funzionale a lungo termine.

Anche questo non offre opzioni in tempo reale. Ma da questo si potrebbe far crescere in una soluzione più in tempo reale. Non sarebbe così difficile scrivere un processo che monitora i file di log per le modifiche e quindi attiva alcune regole in base all'ultimo messaggio di errore. È l'analisi che diventa complicata. ;) In bocca al lupo.

Problemi correlati