我有一个在我们的服务器上全天候运行的Windows服务。
它最近连接到一家外部公司,该公司已经下降了很多。
我需要设置一些内容,以便在我们在此服务的错误日志中的最后一分钟内有25个错误时进行监控。
我猜我必须创建一个表并在记录它们时将这些错误插入到表中,然后设置一些通过tsql查询检查是否在最后一分钟发生了25次? (然后发送电子邮件或更新仪表板监控页面以获得支持)
真的我的问题是,是否有人有比这更好的想法?过去,某人必须做得比这更好。我想我从未试图直接从日志中读取。也许这将是一条更好的路线。
任何想法的方向都非常感谢。感谢。
答案 0 :(得分:1)
我的Windows服务定期调用外部Web API存在类似问题。
我的解决方案是只使用NLog将错误写入文本日志文件,并在服务本身中保留一个失败次数的计数器而不成功。如果计数器超过可配置的阈值,我会向NLog写一个Critical条目而不是Error条目,并将NLog配置为通过电子邮件发送操作团队中有几个人在发生严重事件时获得的别名。
如果您需要严格执行“最后一分钟内的25个错误”语义,您可以将错误写入内存中约束(最多25个项目)队列。如果队列长度达到25,请检查队列中的第一项是否在最后一分钟内。如果是这样,请将严重错误写入日志。
答案 1 :(得分:1)
记录很有趣。 :/
您的选择基本上是:
登录数据库服务器 - 优点:易于从其他位置读取。缺点:您需要一个数据库服务器。如果项目还没有包含一个,可能会很痛苦。此外,如果网络连接出现问题,则记录失败。
登录事件日志 - 优势:快速在本地写入。可以使用正确的用户权限远程读取..缺点:您将对此进行大量查询,并且事件日志并非完全基于此构建。
登录文件 - 优点:写入速度极快。缺点:需要许多权限设置才能访问远程代码。可能已损坏/丢失/删除等。
使用其他软件,例如System Center Operations Manager。优点:这正是为此而构建的类型。缺点:成本/设置。
这些是我的偏好顺序。