【问题标题】:What are the best practices for tracking warnings/errors in long running processes?在长时间运行的进程中跟踪警告/错误的最佳实践是什么?
【发布时间】:2010-10-14 16:02:16
【问题描述】:

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

根据所讨论的特定过程,故障的发生率、严重性和紧迫性会有所不同。在某些情况下,我们会在发生罕见但重要的错误时发送电子邮件,在其他情况下,我们只是记录它并继续,等等。

问题是我们到处都有不同的错误处理代码,而且当我们“记录并继续”时,往往没有人回头阅读日志,所以没有人知道发生了什么问题。我们不能默认使用电子邮件解决所有问题,因为电子邮件太多了。

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

这样的东西存在吗?如果没有,您使用了哪些方法成功处理了类似问题?

(因为我们的大部分代码库都在 python 中是值得的,但我想这个想法的任何体面的实现在很大程度上都是非语言特定的,显然任何概念性的解决方案也是如此)。

更新:我刚刚花了一些时间研究 Chainsaw,这正是我正在寻找的东西,但我希望它是一个 web 应用而不是桌面应用,并具有警报功能。

更新:我刚刚发现 hoptoadappexceptional 都与我的想法有些相似,尽管它们都专门针对 Rails。

【问题讨论】:

    标签: logging monitoring


    【解决方案1】:

    嗯,一个可行的解决方案似乎是消化错误日志。每个晚上都有一个过程检查错误日志并将当天的错误/警告/等汇总起来,然后将它们放入电子邮件中。如果您愿意,您甚至可以按严重性和/或应用程序对它们进行分组。

    最终,您每天只收到一封电子邮件,所有信息都触手可及。不是“快速”甚至是优雅的解决方案,但从长远来看可能非常可行。

    这也不提供任何实时选项。但是,您可以将其发展为更实时的解决方案。编写一个监控日志文件的更改然后根据最后一条错误消息触发一些规则的进程并不难。解析变得棘手。 ;) 祝你好运。

    【讨论】:

      【解决方案2】:

      我认为您在这里需要的东西太具体了,无法找到适合您需求的已经构建好的东西。但是……

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

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

      编写所有这些代码最多只需要几天时间,而且,无论如何,您最终将拥有一个 100% 为您定制的工具。

      【讨论】:

        猜你喜欢
        • 2018-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多