6 votes

Quelles sont les meilleures pratiques pour le suivi des avertissements/erreurs dans les processus de longue durée ?

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.

2voto

Craig Points 5169

Il semble qu'une solution viable consisterait à analyser les journaux d'erreurs. Tous les soirs, un processus passe en revue les journaux d'erreurs et rassemble les erreurs, avertissements et autres de la journée, puis les envoie par courrier électronique. Vous pourriez même les regrouper par gravité et/ou par application si vous le souhaitez.

Au final, vous ne recevez qu'un seul courriel par jour avec toutes les informations à portée de main. Ce n'est pas une solution "rapide" ni même élégante, mais elle pourrait être très efficace à long terme.

Cela ne permet pas non plus de disposer d'options en temps réel. Mais à partir de là, il est possible de développer une solution en temps réel. Il ne serait pas difficile d'écrire un processus qui surveille les fichiers journaux pour détecter les changements et qui déclenche ensuite des règles basées sur le dernier message d'erreur. C'est l'analyse qui est délicate ;) Bonne chance.

0voto

Seb Points 17238

Je pense que ce dont vous avez besoin ici est trop spécifique pour trouver quelque chose de déjà construit qui répondrait parfaitement à vos besoins. Mais...

Ce que vous avez décrit à propos de log4j me semble parfait : une fois les erreurs enregistrées dans la base de données, une simple application web vous permettrait de les consulter, de les filtrer et de mettre en place des modèles pour envoyer des courriels tels que des erreurs provenant d'une application spécifique, un seuil de niveau d'erreur, un message contenant une certaine expression rationnelle, etc.

Vous aurez également besoin d'un petit cronjob qui se connectera à la base de données, recherchera les nouveaux enregistrements (sur la base de la dernière vérification) correspondant aux critères de l'email et les enverra.

Le codage de tout cela ne devrait pas prendre plus de quelques jours au pire et, pour ce que cela vaut, vous finirez par avoir un outil 100% personnalisé pour vous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X