首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当许多机器中有一台无法报告心跳时,如何创建一个触发警报?

当许多机器中有一台无法报告心跳时,如何创建一个触发警报?
EN

Stack Overflow用户
提问于 2022-05-19 19:12:27
回答 1查看 258关注 0票数 2

总的来说,我正试图设置一个天蓝色警报,当一台电脑通过“心跳表”关机时,我会发电子邮件给我。

假设我的Azure订阅中有5台机器,它们每分钟向一张名为Heart节拍的桌子报告一次,所以看起来如下:

目前,我可以查询“==‘Computer’name‘computer’name‘TimeGenerated >ago(500万)”,并找出一台计算机在过去5分钟内没有报告,并且已经停机(感谢您对这篇伟大的文章的查询。)。

我对任何查询语言都不是很有经验,所以我想知道是否有一个查询可以检查是否有任何计算机在最后5-10分钟期间停止发送它的日志,因此会被关闭。Azure使用KQL或Kusto查询语言进行查询,上面的链接中有文档。

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-19 19:20:05

一种选择是计算每台计算机的最大报告时间,然后筛选到最大报告时间大于5分钟的计算机:

代码语言:javascript
复制
let all_computers_lookback = 12h
;
let monitor_looback = 5m
;
Heartbeat
| where TimeGenerated > ago(all_computers_lookback)
| summarize last_reported = max(TimeGenerated) by computer
| where last_reported < ago(monitor_looback)

另一种选择:

  • 第一部分创建一个“清单”,列出至少在最后一次报告(例如12小时)的所有计算机。
  • 第二部分查找所有在最后一次报告至少一次(例如5分钟)的计算机。
  • 第三部分,也就是最后一部分,找出两者之间的区别(即所有在最后5分钟内没有报告的计算机)

注意:如果您有超过100万台计算机,则可以使用join运算符而不是in()运算符。

代码语言:javascript
复制
let all_computers_lookback = 12h
;
let monitor_looback = 5m
;
let all_computers = 
    Heartbeat
    | where TimeGenerated > ago(all_computers_lookback)
    | distinct computer
;
let reporting_computers = 
    Heartbeat
    | where TimeGenerated > ago(monitor_looback)
    | distinct computer
;
let non_reporting_computers =
    all_computers
    | where computer !in(reporting_computers)
;
non_reporting_computers
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72309970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档