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

如何自动将ADF管道中各活动的运行日志保存至ADLS?

ADF活动级运行日志自动导出到ADLS的可行方案

不用给每个活动加变量,也不用手动导出,这几个方案可以解决你的需求:

方案一:Azure Monitor日志+自动导出到ADLS

这是最省心的方案,无需修改现有管道:

  • 给你的ADF实例配置诊断设置,把ActivityRuns和PipelineRuns日志发送到Log Analytics工作区
  • 在Log Analytics里写Kusto查询提取需要的字段,示例:
    ActivityRuns
    | where PipelineName == "你的目标管道名称"
    | project 
        活动名称 = ActivityName,
        活动类型 = ActivityType,
        运行状态 = Status,
        运行时长 = totimespan(DurationMs/1000)
    | order by StartTime desc
    
  • 配置Log Analytics的数据导出规则,把查询结果自动导出到指定的ADLS容器,可设置按固定频率导出(比如每小时),或基于日志生成时间触发

方案二:ADF管道内加Web活动调用API获取日志

直接在现有管道末尾追加处理逻辑,流程紧凑:

  1. 添加一个Web活动,调用Azure Monitor的活动运行查询API,URL用ADF系统变量自动生成:
    @concat('https://management.azure.com/subscriptions/', subscription(), '/resourceGroups/', resourceGroup(), '/providers/Microsoft.DataFactory/factories/', factory(), '/pipelineruns/', pipeline().RunId, '/queryActivityruns?api-version=2018-06-01')
    
  2. 给Web活动配置ADF服务主体的权限(需要Data Factory Contributor或自定义权限,允许查询活动运行日志)
  3. 用Parse JSON活动解析Web返回的JSON数据,提取activityName、activityType、status、durationMs等字段
  4. 用Copy活动把解析后的数据写入ADLS,支持CSV、JSON等格式

方案三:Azure Function+事件网格触发

适合需要复杂日志处理的场景:

  • 给ADF配置事件网格触发器,当管道运行完成(成功/失败)时,触发Azure Function
  • 在Function中调用Azure Monitor API,传入当前管道的RunId,获取所有活动的运行详情
  • 对数据做清洗、格式转换后,直接写入ADLS容器

注意事项

  • 不管用哪个方案,都要确保相关服务(Log Analytics、Azure Function、ADLS)的权限配置正确,避免访问被拒
  • 如果需要实时导出,方案二和三更合适;如果是批量归档,方案一的自动导出更省力

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:17:56