azure-log-analytics - 查询有时会为正在运行的服务提供警报
问题描述
我正在为 Windows 服务设置 som 警报。使用下面的代码。但有时我会收到状态为“正在运行”的服务的警报。我们无法确定服务在该期限内停止或重新启动。有谁知道可能出了什么问题?或者我应该将查询更改为其他内容吗?
我希望每次服务停止时都会发出警报,以便支持团队采取行动。
ConfigurationData
| project Computer, SvcName, SvcDisplayName, SvcState, TimeGenerated
| where (SvcName =~ "W3SVC")
| project Computer, SvcName, SvcDisplayName, SvcState, TimeGenerated
| where SvcState != "Running"
解决方案
更新:
您的查询中存在潜在问题,如下所示:
如果 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"
推荐阅读
- javascript - 引导程序中的按钮未按预期工作
- azure - Azure Monitor Application Insights 中的数据摄取采样说明
- javascript - 我想知道如何在提交表单后清除输入字段,因为我阻止了页面刷新
- spring - Spring Boot - Keycloak:“无法将代码转换为令牌” SSL
- api - 我可以从 Instagram 图片网址获取用户 ID 吗?
- vbscript - IBM PCOMM - 无法从另一个 vbs 宏中调用 vbs 宏
- scala - 如何使用 Scala 在 Akka Actor 中查找意外消息的来源
- sql - SQL - 如何删除两个相互引用的实体
- r - 在R中将字符日期(“01OCT2014”)转换为DATE格式
- php - 读取 CSV 文件的行并将值放入数组