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.