2009-03-20 7 views
5

Notre équipe a un certain nombre de processus que nous exécutons manuellement mais qui peuvent fonctionner pendant plusieurs jours. Les processus font diverses choses pour un grand nombre d'entités (pages Web, lignes de base de données, images, fichiers, etc.). Évidemment, de temps en temps, il y a des échecs et nous devons concevoir ou traiter ces défaillances de manière gracieuse et passer à autre chose afin que tout le travail ne soit pas éliminé.Quelles sont les meilleures pratiques pour le suivi des avertissements/erreurs dans les processus de longue durée?

Selon le processus particulier en question, le taux, la gravité et l'urgence des pannes varie. Dans certains cas, nous envoyons des e-mails lorsqu'une erreur rare mais importante se produit, dans d'autres cas, nous l'enregistrons et passons à autre chose, et ainsi de suite. Le problème est que nous avons différents codes de gestion des erreurs dispersés partout et plus souvent qu'autrement lorsque nous "enregistrons et passons" personne ne retourne jamais et lit les journaux, donc personne ne sait jamais quels problèmes se sont produits. Nous ne pouvons pas par défaut envoyer un e-mail pour tous les problèmes car il y aurait simplement trop de courriels.

Ce sont des processus de longue durée, mais pas des démons où quelque chose comme SNMP ou Nagios peut sembler un bon ajustement. Sûrement c'est un problème assez commun mais je n'arrive pas à trouver beaucoup de solutions en ligne. J'ai entendu des gens parler d'utiliser log4j (ou d'autres paquets de journalisation similaires) pour se connecter à une base de données, etc., ce qui semble être un pas dans la bonne direction, mais il existe sûrement des solutions plus sophistiquées. ? J'imagine quelque chose où votre enregistreur écrit des événements dans une base de données et 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 email pour des motifs spécifiques.

Est-ce que quelque chose comme ça existe? Si non, quelles approches avez-vous utilisées pour traiter avec succès des problèmes similaires?

(Pour ce que ça vaut le plus de notre base de code est en python mais j'imagine que toutes les implémentations décentes de cette idée sont largement non spécifiques à l'angulation et évidemment toutes les solutions conceptuelles seraient aussi bien).

Mise à jour: Je viens de passer du temps à regarder la tronçonneuse, ce que je cherche, mais j'aimerais que ce soit une webapp au lieu d'une application de bureau et des fonctionnalités d'alerte.

Mise à jour: Je viens de découvrir hoptoadapp et exceptional qui sont à la fois un peu dans le sens de ce que je pensais, bien que les deux Rails cible spécifiquement.

Répondre

0

Je pense que ce dont vous avez besoin ici est trop spécifique pour trouver quelque chose de déjà construit qui conviendrait parfaitement à vos besoins. Mais...Ce que vous avez décrit à propos de log4j me semble bien: une fois que vous avez enregistré les erreurs dans la base de données, une simple application Web vous permet de les regarder, de filtrer et de configurer des modèles pour envoyer des courriels comme des erreurs. une application spécifique, un seuil de niveau d'erreur, un message contenant une certaine regex, etc.

De plus, vous aurez besoin d'un petit cronjob qui se connecterait à la base de données, rechercher de nouveaux enregistrements (basés sur la dernière vérification) correspondant aux critères de messagerie et envoyez-les.

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

1

Eh bien, il semble que la solution serait de digérer les journaux d'erreurs. Chaque nuit, un processus passe par les journaux d'erreurs et retranscrit l'erreur/avertissement/etc pour la journée et les met dans un e-mail. Vous pouvez même les regrouper par gravité et/ou application si vous le souhaitez. En fin de compte, vous obtenez un seul email par jour avec toutes les informations à portée de main. Ce n'est pas une solution «rapide» ou même élégante, mais elle pourrait être très efficace à long terme.

Ceci n'offre pas non plus d'options en temps réel. Mais à partir de cela, vous pouvez le développer en une solution plus en temps réel. Il ne serait pas si difficile d'écrire un processus qui surveille les changements dans les fichiers journaux, puis élimine certaines règles en fonction du dernier message d'erreur. C'est l'analyse qui devient difficile. ;) Bonne chance.

Questions connexes