0

我有一个在我们的一台服务器上运行 24/7 的 Windows 服务。

它连接到一家外部公司,因为最近该公司一直在倒闭。

我需要设置一些东西,以便在最后一分钟在此服务的错误日志中监控我们何时出现 25 个错误。

我猜我将不得不创建一个表并将这些错误插入到表中,因为它们正在被记录,然后设置一些东西,通过 tsql 查询检查最后一分钟是否发生了 25?(然后发送电子邮件或更新仪表板监控页面以获得支持)

真的,我的问题是有人有比这更好的主意吗?过去一定有人做过比这更好的事情。我想我从来没有尝试直接从日志中读取。也许那会是一条更好的路线。

任何想法方向都非常感谢这一点。谢谢。

4

2 回答 2

1

我的 Windows 服务定期调用的外部 Web API 也有类似的问题。

我的解决方案是仅使用 NLog 将错误写入文本日志文件,并在服务本身中保留一个计数器,以记录未成功的失败次数。如果计数器超过了可配置的阈值,我将向 NLog 写入关键条目而不是错误条目,并将 NLog 配置为通过电子邮件发送一个别名,当出现关键事件时,操作团队中的几个人会收到该别名。

如果您需要严格实现“最后一分钟出现 25 个错误”语义,您可以将错误写入内存受限(最多 25 个项目)队列。如果队列长度达到 25,请检查队列中的第一项是否在最后一分钟内。如果是这样,请将严重错误写入日志。

于 2012-08-28T21:47:01.123 回答
1

记录很有趣。:/

您的选择基本上是:

  1. 登录到数据库服务器 - 优点:易于从其他位置读取。缺点:需要数据库服务器。如果项目还没有包含一个,可能会很痛苦。此外,如果网络连接出现问题,则日志记录会失败。

  2. 记录到事件日志 - 优点:本地写入速度快。可以远程读取..具有正确的用户权限。缺点:你会经常查询这个,而事件日志并不是为此而构建的。

  3. 记录到文件 - 优点:写入速度极快。缺点:需要大量权限设置才能访问远程代码。可能已损坏/丢失/删除等。

  4. 使用其他软件,例如 System Center Operations Manager。优势:这正是为之构建的类型。缺点:成本/设置。


这些是我的优先顺序。

于 2012-08-28T21:49:34.417 回答