2009-03-20 10 views
5

Nuestro equipo tiene una serie de procesos que ejecutamos manualmente pero que pueden durar varios días. Los procesos hacen varias cosas para un gran número de entidades (páginas web, filas de bases de datos, imágenes, archivos, etc.). Obviamente, de vez en cuando hay fallas y tenemos que diseñar o procesos para manejar estas fallas con gracia y seguir adelante para que no se reduzca todo el trabajo.¿Cuáles son las mejores prácticas para rastrear advertencias/errores en procesos de larga ejecución?

Dependiendo del proceso particular en cuestión, la velocidad, la gravedad y la urgencia de las fallas varían. En algunos casos, enviamos correos electrónicos cuando ocurre un error raro pero importante, en otros casos simplemente lo registramos y seguimos, y así sucesivamente.

El problema es que tenemos diferentes códigos de manejo de errores dispersos en todas partes y la mayoría de las veces cuando "registramos y avanzamos" nadie vuelve y lee los registros, por lo que nadie sabe qué problemas ocurrieron. No podemos enviar por correo electrónico todos los problemas porque simplemente habría demasiados correos electrónicos.

Estos son procesos de larga ejecución, pero no demonios en los que algo como SNMP o Nagios podrían parecer una buena opción. Sin duda, este es un problema bastante común, pero parece que no puedo encontrar muchas soluciones en línea. He escuchado a personas hablar sobre el uso de log4j (u otros paquetes de registro similares) para iniciar sesión en una base de datos, etc., lo que parece ser un paso en la dirección correcta, pero seguramente existen soluciones más sofisticadas por ahora. ? Me imagino algo donde tu registrador escribe eventos en una base de datos y hay una interfaz web similar a Nagios que te permite ver qué errores están sucediendo con qué procesos en tiempo real y configurar alertas por correo electrónico para patrones específicos, etc.

¿Existe algo como esto? De no ser así, ¿qué enfoques ha utilizado para abordar con éxito problemas similares?

(Por lo que vale la pena, la mayoría de nuestra base de código está en python, pero me imagino que cualquier implementación decente de esta idea es en gran medida no específica de idioma y obviamente cualquier solución conceptual sería así).

Actualización: Acabo de pasar un tiempo mirando Chainsaw, que es algo de lo que estoy buscando, pero me gustaría que fuera una aplicación web en lugar de una aplicación de escritorio, y tiene funcionalidad de alerta.

Actualización: Acabo de descubrir hoptoadapp y exceptional que son algo así como lo que estaba pensando, aunque ambos se enfocan específicamente en Rails.

Respuesta

0

Creo que lo que necesita aquí es demasiado específico para encontrar algo ya construido que se ajuste perfectamente a sus necesidades. Pero...

Lo que describiste sobre log4j me parece genial: una vez que tienes los errores iniciados en la base de datos, una simple aplicación web te permite echarles un vistazo, filtrar y configurar patrones para activar correos electrónicos como errores de una aplicación específica, umbral de nivel de error, mensaje que contiene algunos regex, etc.

Además, necesitará un pequeño cronjob que se conectaría al DB, buscará nuevos registros (basado en la última vez marcada) que coincidan con los criterios del correo electrónico y enviarlos.

La codificación de todo esto no debería tomar más de unos días en el peor y, por lo que sea, terminará teniendo una herramienta 100% personalizada para usted.

1

Bueno, parece que la solución viable sería digerir los registros de errores. Cada noche tiene un proceso que pasa por los registros de errores y acumula el error/advertencia/etc. del día y los coloca en un correo electrónico. Incluso podría agruparlos por gravedad y/o aplicación si así lo desea.

Al final solo recibe un correo electrónico al día con toda la información al alcance de su mano. No es una solución "rápida" o incluso elegante, pero podría ser muy viable a largo plazo.

Esto tampoco ofrece ninguna opción en tiempo real. Pero a partir de esto, podrías convertirlo en una solución más en tiempo real. No sería tan difícil escribir un proceso que supervise los cambios en los archivos de registro y luego desactive algunas reglas basadas en el último mensaje de error. Es el análisis lo que se vuelve complicado. ;) Buena suerte.

Cuestiones relacionadas