我正在尝试在 Azure 中部署一个基于自定义日志搜索的警报,该警报正在寻找某个时间段内某个事件的遗漏,例如,如果此特定查询在时间窗口中未返回任何结果,则发出警报。
在门户中手动生成警报时,我们可以看到它触发了。当通过 ARM 模板生成相同的警报时,警报不会触发(两个警报都使用相同的操作组)。不幸的是,门户“导出 ARM 模板”没有显示差异,并建议使用相同的 ARM(2021-02-01-preview
两者都使用 API 版本)。注意:用于部署的 ARM 实际上使用的是microsoft 文档2020-05-01-preview
当前推荐的API 版本。
比较两者确实提出了一些问题。手动创建的警报呈现为“编辑警报规则”,并且在配置条件时,图表位于顶部,然后是搜索查询和警报逻辑(结果数等于 0)。ARM 创建的警报呈现为“编辑警报规则(预览)”,并且在配置条件时,图表在查询、测量(表行计数 1 天)、按维度拆分和警报逻辑(等于 0)之后位于底部.
此外,“最终警报查询”不同。
手动创建:
customEvents
| where name like 'MyCustomEvent' and timestamp >= now(-24h)
| count
ARM 创建:
customEvents
| where name like 'MyCustomEvent' and timestamp >= now(-24h)
| where timestamp > ago(1d)
| summarize AggregatedValue = count() by bin(timestamp, 1d)
在这两种情况下,最后一行都是由工具添加的,前两行来自我们实际的自定义查询。直接执行这两个查询会导致不同的行为。第一个显然返回一个计数行,其中为零。第二个(ARM Created)根本不返回任何结果。如果有要返回的结果,则第二个查询将它们按天分组返回(由于bin(timestamp, 1d)
调用)。
因此,我怀疑从 ARM 部署的版本中显示的“新”样式中基于零的警报实际上不起作用——因为没有返回行而不是值为 0 的行以匹配阈值?
ARM 部署的阈值为零的警报是否应该部署在不同的 API 版本中?还有其他需要检查的吗?