我有一个带有诊断设置的DataFactory,激活并将日志发送到。
我希望创建一个警报,如果事件触发器在上午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但是,如果将下列设置设置为警报,则会发现一些问题:
(如果触发器正确运行)警报将在上午9点前发射18次。
(如果触发器没有运行)警报将在一天内触发48次。
有什么疑问来避免这种情况吗?如果有条件的话?
发布于 2021-03-23 09:24:51
没有这样的解决办法直接解决这个问题。
我建议您可以设置两个警报:
警报1:如果触发器没有一整天运行,将发送警报。您可以在问题中使用您的查询,只需设置Period = 1440 minutes、Frequency = 1440 minutes、Number of results less than 0。然后,它只会发送一个警报电子邮件,如果触发器没有运行。
警报2:通过添加iff()函数使用下面的查询
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点后运行(例如,触发器在上午10:07运行,警报在10:20 at /10:50 at扫描,只有在这2次时,它才会发送警报;如果触发器在上午9点之前运行,则不会发送警报)。
https://stackoverflow.com/questions/66750981
复制相似问题