You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure ScheduledQueryRule:如何仅在查询中设置90天时间范围

解决Log Analytics警报规则中查询回溯时间被windowSize覆盖的问题

核心配置方案

要让查询完全控制时间范围,同时实现每日一次评估,需从警报规则参数配置和查询语句优化两方面入手:

1. 警报规则(scheduledQueryRule)参数配置

  • windowSize设置:将窗口大小设为与查询中最大回溯时间一致,即PT2160H(对应90天,计算方式:90×24=2160小时),避免规则窗口大小限制查询能获取的历史数据范围。
  • frequency设置:将评估周期设为P1D,实现每日一次的评估频率。
  • 关闭时间范围覆盖:在Azure门户创建警报时,找到「自定义日志搜索」的高级设置,关闭**"将查询时间范围限制为窗口大小"**选项;若用ARM模板/REST API,需将queryTimeRangeOverrideEnabled设为false,确保查询内的时间过滤条件完全生效,不受规则参数干扰。

2. 查询语句优化(修正原伪代码的逻辑问题)

原查询存在join冗余、语法不严谨的问题,优化后确保逻辑清晰且性能更优:

// 拉取90天的历史延迟数据,用于计算置信上限
let jobDurationTbl = latencyTbl
    | where name_s contains "latency_metrics" and TimeGenerated >= ago(90d);

// 按服务统计各服务的置信上限(平均值+2倍标准差)
let statisticsTbl = jobDurationTbl
    | summarize upperConfidenceLimit = avg(jobDuration_ms) + 2 * stdev(jobDuration_ms) by serviceName_s;

// 筛选当日数据,与置信上限对比,找出超标的记录
let alertTbl = latencyTbl
    | where name_s contains "latency_metrics" and TimeGenerated == today()
    | join kind=inner (statisticsTbl) on serviceName_s
    | where jobDuration_ms > upperConfidenceLimit
    | project serviceName_s, _ResourceId, TimeGenerated, jobDuration_ms, upperConfidenceLimit;

alertTbl

补充:API/ARM模板关键配置片段

若通过代码部署警报规则,需确保以下核心参数正确:

{
  "properties": {
    "frequency": "P1D",
    "windowSize": "PT2160H",
    "enabled": true,
    "source": {
      "query": "<上述优化后的Kusto查询>",
      "dataSourceId": "/subscriptions/[订阅ID]/resourceGroups/[资源组]/providers/Microsoft.OperationalInsights/workspaces/[工作区名称]",
      "queryTimeRangeOverrideEnabled": false
    },
    // 此处添加警报触发条件、动作组等其他配置
  }
}

内容的提问来源于stack exchange,提问作者DataBach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 21:06:20