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

Azure Data Factory管道超65分钟运行的Kusto查询告警需求

解决Azure Data Factory运行中管道超时长告警问题

需求回顾

需实现:

  • Azure Data Factory管道运行未完成且运行时长超过60分钟时发送告警邮件,因告警逻辑需5分钟缓冲,实际判断运行时长是否超过65分钟
  • 每个管道实例(RunId)仅发送一次告警,即使管道仍在运行也只触发一次

原查询问题分析

原查询未明确过滤管道的运行状态(Status),导致仅在管道成功完成时触发告警,无法覆盖运行中的场景,同时未针对“仅发送一次告警”做针对性处理。

修改后的Kusto查询

let PipelineOriginalStart = ADFPipelineRun
    | summarize OriginalStart = min(Start) by RunId
    | project RunId, OriginalStart;
ADFPipelineRun
| summarize arg_max(TimeGenerated, *) by RunId  // 获取每个RunId的最新状态记录
| join kind=innerunique PipelineOriginalStart on RunId
| extend Duration = case(
    Status == "InProgress", now() - OriginalStart,  // 运行中时,计算从启动到当前的时长
    End > OriginalStart, End - OriginalStart,       // 已完成时,计算实际运行时长
    0s                                              // 异常情况默认0秒
)
// 过滤条件:运行中、时长超过65分钟、指定管道名,且启动时间在最近120分钟内(避免旧数据干扰)
| where Status == "InProgress" 
    and Duration >= 65m 
    and PipelineName == "TEST_ALERT"
    and OriginalStart > ago(120m)
| extend DurationMinutes = round(Duration / 1m, 1)
// 生成唯一标识用于告警抑制,确保每个RunId只触发一次告警
| extend AlertKey = strcat(RunId, "_LongRunningAlert")
| project RunId, PipelineName, OriginalStart, DurationMinutes, AlertKey, Status

告警规则配置补充

为实现“告警仅发送一次”,需在Azure Monitor告警规则中配置:

  • 在抑制规则里,选择按AlertKey字段进行抑制,抑制时长设置为管道可能的最大运行时长(比如24小时),确保同一个RunId不会重复触发告警

说明

  • 明确过滤Status == "InProgress",仅针对运行中的管道触发告警
  • 时长判断使用Duration >= 65m,满足5分钟缓冲的要求
  • 通过AlertKey字段结合告警抑制规则,确保每个管道实例仅发送一次告警
  • 保留OriginalStart > ago(120m)避免查询过久之前的旧数据,提升查询效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 03:07:09