Notre équipe a un certain nombre de processus que nous exécutons manuellement mais qui peuvent durer plusieurs jours. Ces processus effectuent diverses opérations sur un grand nombre d'entités (pages web, lignes de base de données, images, fichiers, etc.) Il est évident que de temps en temps, il y a des défaillances et nous devons concevoir nos processus pour gérer ces défaillances de manière gracieuse et passer à autre chose afin que l'ensemble du travail ne soit pas interrompu.
Le taux, la gravité et l'urgence des défaillances varient en fonction du processus en question. Dans certains cas, nous envoyons des courriers électroniques lorsqu'une erreur rare mais importante se produit, dans d'autres cas, nous l'enregistrons et passons à autre chose, etc.
Le problème est que nous avons différents codes de gestion des erreurs disséminés un peu partout et que, le plus souvent, lorsque nous "enregistrons et passons à autre chose", personne ne revient en arrière et ne lit les journaux, de sorte que personne ne sait jamais quels problèmes se sont posés. Nous ne pouvons pas utiliser le courrier électronique par défaut pour tous les problèmes, car il y aurait tout simplement trop de courriers électroniques.
Il s'agit de processus de longue durée, mais pas de démons pour lesquels quelque chose comme SNMP ou Nagios pourrait s'avérer approprié. Il s'agit certainement d'un problème assez courant, mais je n'arrive pas à trouver beaucoup de solutions en ligne. J'ai entendu des gens parler de l'utilisation de log4j (ou d'autres paquets de journalisation similaires) pour journaliser vers une base de données, etc. ce qui semble être un pas dans la bonne direction, mais il y a sûrement des solutions plus sophistiquées qui existent déjà ? J'imagine quelque chose où votre logger écrit les événements dans une base de données et où il y a une interface web de type Nagios qui vous permet de voir quelles erreurs se produisent avec quels processus en temps réel, ainsi que de configurer des alertes par courriel pour des modèles spécifiques, etc.
Une telle chose existe-t-elle ? Si ce n'est pas le cas, quelles approches avez-vous utilisées pour traiter avec succès des problèmes similaires ?
(Pour ce que ça vaut, la plupart de notre base de code est en python, mais j'imagine que toute implémentation décente de cette idée n'est pas spécifique à un langage et, évidemment, toute solution conceptuelle le serait aussi).
Mise à jour : je viens de passer un peu de temps à regarder Chainsaw, qui est un peu ce que je recherche, mais j'aimerais que ce soit une application web plutôt qu'une application de bureau, et qu'elle ait une fonctionnalité d'alerte.
Mise à jour : je viens de découvrir hoptoadapp y exceptionnel qui vont dans le même sens que ce à quoi je pensais, bien qu'ils ciblent tous deux spécifiquement Rails.