如何解决特定时间的 Log Analytics 警报规则
我有一个带有诊断设置激活并将日志发送到 Log Analytics 工作区的数据工厂。
如果事件触发器在上午 9 点之后没有运行,我想创建一个仅触发一次的警报。
我认为有些查询是这样的:
let StartTime =startofday(now());
let EndTime =now();
let CheckHour = 9;
ADFTriggerRun
| where ResourceId contains toupper("DataFactory_Name")
| where TriggerName == "Trigger_Name"
| where TimeGenerated > StartTime and TimeGenerated < EndTime
| extend Hour = datetime_part("hour",TimeGenerated)
| where Hour < CheckHour
但是如果我为警报设置以下设置,我会发现一些问题:
- 小于 0 的结果数
- 时间 = 30 分钟
- 频率 = 30 分钟
(如果触发器正确运行)警报将在上午 9 点之前触发 18 次。
(如果触发器没有运行)警报将在一天内触发 48 次。
是否有一些查询可以避免这种情况?也许有一些if条件?
解决方法
没有这样的方案可以直接解决这个问题。
我建议您可以设置 2 个提醒:
警报 1: 如果触发器未全天运行,则发送警报。您可以在问题中使用您的查询,只需设置 Period = 1440 minutes
、Frequency = 1440 minutes
、Number of results less than 0
。然后,如果触发器根本没有运行,它只会发送一封警报电子邮件。
警报 2:通过添加 iff() function 使用以下查询:
let StartTime =startofday(now());
let EndTime =now();
let CheckHour = 9;
ADFTriggerRun
| where ResourceId contains toupper("DataFactory_Name")
| where TriggerName == "trigger1"
| where TimeGenerated > StartTime and TimeGenerated < EndTime
| extend Hour = datetime_part("hour",TimeGenerated)
| extend isFailed = iff(Hour < CheckHour,"Success","Failed")
| where isFailed == "Failed"
然后设置 Period = 30 minutes
、Frequency = 30 minutes
、Number of results Equal to 1
。通过使用此查询/设置,如果触发器在上午 9 点之后运行,您最多会收到 2 个电子邮件警报(例如,如果触发器在上午 10:07 运行,并且警报扫描在上午 10:20 / 10:50,则仅在这 2次,它会发送警报;如果触发器在上午 9 点之前运行,则不会发送警报)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。