特定时间的 Log Analytics 警报规则
Log Analytics alert rule at specific time
我有一个 DataFactory,其诊断设置已激活并将日志发送到 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 分钟
(如果触发 运行s 正确)警报将在上午 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:07AM 触发 运行 秒,并且警报扫描在10:20AM / 10:50AM,只有这2次才会发送提醒;如果在早上9点前运行秒触发,则不会发送提醒。
我有一个 DataFactory,其诊断设置已激活并将日志发送到 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 分钟
(如果触发 运行s 正确)警报将在上午 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:07AM 触发 运行 秒,并且警报扫描在10:20AM / 10:50AM,只有这2次才会发送提醒;如果在早上9点前运行秒触发,则不会发送提醒。