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

如何通过Log Analytics查询运行超24小时的ADF管道详情?

解决方案

该需求完全可以通过Log Analytics查询实现。
你原有查询返回结果不符合预期,核心原因有两点:

  • 查询首行| where TimeGenerated > ago(1d)直接将日志检索范围限制在了过去24小时内生成的记录,无法获取到启动时间早于24小时、持续运行至今的管道数据
  • 仅单独筛选了状态包含progress的零散日志条目,没有按管道运行实例做聚合,也没有计算运行实例的实际启动时间与持续时长,甚至没有携带唯一运行ID做区分,会把不同批次的同名管道运行记录混为一谈。

正确查询逻辑

要筛选持续运行超过24小时的进行中ADF管道,核心思路是按唯一管道运行ID聚合每个运行实例的全量日志,提取实例的最早启动时间、最新上报状态,再筛选启动时间距现在超过24小时、且最新状态仍为进行中的实例即可,参考查询语句如下:

// 检索范围可根据你要排查的最长运行时长调整,比如要排查最长运行7天的管道就设为ago(7d)
ADFPipelineRun
| where TimeGenerated > ago(3d)
// 按管道唯一运行ID分组聚合
| summarize 
    StartTime = min(TimeGenerated), // 取该运行实例最早的日志时间作为启动时间
    LatestStatus = arg_max(TimeGenerated, Status)[0].Status, // 取最新上报的状态
    PipelineName = any(PipelineName),
    DataFactoryName = split(any(ResourceId), '/')[-1]
    by PipelineRunId
// 筛选仍在进行中、且运行时长超过24小时的实例
| where LatestStatus == "InProgress"
| where datetime_diff('hour', now(), StartTime) > 24
| project StartTime, DataFactoryName, PipelineName, PipelineRunId, LatestStatus, ContinuousRunHours = datetime_diff('hour', now(), StartTime)
| sort by ContinuousRunHours desc

注意事项

  • 如果你要排查的是活动级别而非管道级别的长运行任务,只需将查询的表替换为ADFActivityRun,分组维度从PipelineRunId替换为ActivityRunId,补充ActivityName字段投影即可
  • 检索的时间范围(即where TimeGenerated > ago(xx)的取值)要大于你要排查的最长运行时长,否则启动时间早于检索范围的长运行实例会被漏掉
  • 不要直接用管道名做唯一分组维度,ADF中同名管道可以多次触发运行,不带唯一运行ID的统计结果会完全失真
  • 请确保Log Analytics工作区的日志保留期覆盖你要排查的最长运行周期,超过保留期被清理的启动日志无法用于准确计算运行时长

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 00:45:38