我们的团队有许多流程,我们手动运行但可能会运行很多天。这些过程会对大量实体(网页,数据库行,图像,文件等)执行各种操作。显然有时会出现故障,我们必须设计或处理这些故障并优雅地处理这些故障并继续前进,以免整个工作失效。
根据所涉及的具体流程,故障的发生率,严重程度和紧急程度会有所不同。在某些情况下,我们会在发生罕见但重要的错误时发送电子邮件,在其他情况下,我们只需记录并继续,依此类推。
问题是我们有不同的错误处理代码散布在各处,而且当我们“记录并继续”时,没有人会回来读取日志,所以没有人知道发生了什么问题。我们不能默认发送所有问题的电子邮件,因为只会有太多的电子邮件。
这些是长时间运行的进程,但不是守护进程,而像SNMP或Nagios这样的东西可能是合适的。当然这是一个相当普遍的问题,但我似乎无法在网上找到很多解决方案。我听说有人在谈论使用log4j(或其他类似的日志包)来登录数据库等,这似乎可能是朝着正确方向迈出的一步,但是现在肯定还有更复杂的解决方案。 ?我正在想象你的记录器将事件写入数据库的东西,并且有一个类似Nagios的Web界面,可以让你实时查看哪些进程发生了什么错误,以及为特定模式配置电子邮件警报等。
这样的事情存在吗?如果没有,您使用了哪些方法成功处理类似问题?
(因为我们的代码库中的大部分代码都是在python中,但我认为这个想法的任何体面实现都基本上都是非语言特定的,显然任何概念解决方案都是如此)。
更新:我只是花了一些时间看Chainsaw,这是我正在寻找的东西,但我希望它是一个webapp而不是桌面应用程序,并具有警报功能。
更新:我刚刚发现了hoptoadapp和exceptional,它们都与我的想法有所不同,尽管两者都是专门针对Rails的。
答案 0 :(得分:1)
好吧,似乎可行的解决方案是消化错误日志。每个晚上都有一个进程通过错误日志并汇总当天的错误/警告/等,并将其放入电子邮件中。如果您愿意,您甚至可以按严重性和/或应用程序对它们进行分组。
最后,您每天只需收到一封电子邮件,所有信息都在您的指尖。这不是一个“快速”甚至是优雅的解决方案,但从长远来看可能非常适用。
这也不能提供任何实时选项。但是从这里你可以把它变成一个更实时的解决方案。编写监视日志文件以进行更改的进程并根据上一条错误消息触发某些规则并不难。解析变得棘手。 ;)祝你好运。
答案 1 :(得分:0)
我认为你需要的东西太具体了,找不到适合你需要的东西。但...
你对log4j所描述的内容对我来说似乎很棒:一旦你将错误登录到数据库中,一个简单的网络应用程序就可以让你看看它们,过滤和设置模式来触发电子邮件,例如来自的错误特定应用程序,错误级别阈值,包含一些正则表达式的消息等。
此外,您需要一些小的cronjob,它们将连接到数据库,搜索符合电子邮件条件的新记录(基于上次检查)并将其发送出去。
对所有这些进行编码不应该花费超过几天的时间,并且,为了它的价值,您将最终拥有100%的自定义工具。