在长时间运行的流程中跟踪警告/错误的最佳做法是什么?

Joh*_*ohn 5 logging monitoring

我们的团队有许多流程,我们手动运行,但可能会运行很多天.这些过程会对大量实体(网页,数据库行,图像,文件等)执行各种操作.显然有时会出现故障,我们必须设计或处理以优雅地处理这些故障并继续前进,这样整个工作就不会失败.

根据所讨论的特定过程,故障的发生率,严重程度和紧急程度会有所不同.在某些情况下,我们会在发生罕见但重要的错误时发送电子邮件,在其他情况下,我们只需记录并继续,依此类推.

问题是我们有不同的错误处理代码分散在各处,而且当我们"记录并继续"时,没有人回过头来读取日志,因此没有人知道发生了什么问题.我们不能默认发送所有问题的电子邮件,因为只会有太多的电子邮件.

这些是长时间运行的进程,但不是守护程序,如SNMP或Nagios之类的东西可能是合适的.当然这是一个相当普遍的问题,但我似乎无法在网上找到很多解决方案.我听说有人在谈论使用log4j(或其他类似的日志包)来登录数据库等,这似乎可能是朝着正确方向迈出的一步,但是现在肯定还有更复杂的解决方案. ?我正在想象你的记录器将事件写入数据库的东西,并且有一个类似Nagios的Web界面,可以让你看到实时的哪些进程发生了什么错误,以及为特定模式配置电子邮件警报等.

这样的事情存在吗?如果没有,您用什么方法成功处理类似的问题?

(对于我们的大部分代码库都是在python中值得的,但我想这个想法的任何体面实现都基本上是非语言特定的,显然任何概念解决方案都是如此).

更新:我只是花了一些时间看Chainsaw,这是我正在寻找的东西,但我希望它是一个webapp而不是桌面应用程序,并具有警报功能.

更新:我刚刚发现了hoptoadapp例外,它们都与我的想法有所不同,尽管两者都是专门针对Rails的.

Seb*_*Seb 0

我认为您在这里需要的东西太具体,无法找到已经构建的能够很好地满足您需求的东西。但...

您对 log4j 的描述对我来说似乎很棒:一旦您将错误记录到数据库中,一个简单的网络应用程序就可以让您查看它们,过滤并设置模式来触发电子邮件,例如来自特定应用程序的错误,错误级别阈值、包含某些正则表达式的消息等。

此外,您还需要一些小的 cronjob 来连接到数据库,搜索与电子邮件条件匹配的新记录(基于上次检查的记录)并将其发送出去。

编写所有这些内容最坏情况下也不会超过几天,而且无论其价值如何,您最终都会拥有一个 100% 定制的工具。