首页 > 解决方案 > 查询有时会为正在运行的服务提供警报

问题描述

我正在为 Windows 服务设置 som 警报。使用下面的代码。但有时我会收到状态为“正在运行”的服务的警报。我们无法确定服务在该期限内停止或重新启动。有谁知道可能出了什么问题?或者我应该将查询更改为其他内容吗?

我希望每次服务停止时都会发出警报,以便支持团队采取行动。

ConfigurationData
| project Computer, SvcName, SvcDisplayName, SvcState, TimeGenerated
| where (SvcName =~ "W3SVC")

| project Computer, SvcName, SvcDisplayName, SvcState, TimeGenerated
| where SvcState != "Running"

标签: azure-log-analytics

解决方案


更新:

您的查询中存在潜在问题,如下所示:

如果 SvcState 状态在 停止2019/09/06 1:00 PM,则通过重新启动它来解决问题。假设它再次运行在2019/09/06 2:00 PM. 但是在您的查询中,例如,查询从 运行2019/09/06 1:00 PM,它总是会返回一个结果表明服务已停止(这实际上是下午 1:00 的旧状态,但最新状态是在下午 2:00 运行)

所以你应该使用 获取最新的 SvcState top 1 by TimeGenerated,默认情况下在 TimeGenerated 中按 desc 排序。


请尝试以下代码:

ConfigurationData
| top 1 by TimeGenerated
| project Computer, SvcName, SvcDisplayName, SvcState, TimeGenerated
| where (SvcName =~ "W3SVC") and SvcState != "Running"

推荐阅读