如何获取Azure Data Factory中不可修改的内部子管道的报错详情
Azure Data Factory 父管道捕获内部管道Notebook错误方案
实现思路
无需修改内部管道,仅在父管道侧通过ADF官方REST API拉取内部管道的子活动运行日志,即可提取Notebook步骤的错误详情和对应错误页面URL。
具体操作步骤
- 在父管道的「执行内部管道」活动后,新增失败触发分支,仅当内部管道运行异常时才执行后续步骤
- 给你的ADF实例开启系统分配托管标识,为该标识分配当前数据工厂的
监视读者权限 - 在失败分支中添加Web活动,配置如下:
- 请求方法:
POST - 请求URL:
https://management.azure.com/subscriptions/{替换为你的订阅ID}/resourceGroups/{替换为你的资源组名}/providers/Microsoft.DataFactory/factories/{替换为你的ADF实例名}/pipelineruns/@{activity('你的执行内部管道活动名').output.pipelineRunId}/queryActivityRuns?api-version=2018-06-01 - 请求Body:
{ "lastUpdatedAfter": "@{addHours(pipeline().TriggerTime, -1)}", "lastUpdatedBefore": "@{addHours(pipeline().TriggerTime, 1)}" } - 身份验证方式选择
系统分配托管标识,资源字段填https://management.azure.com
- 请求方法:
- 解析Web活动返回的响应体,在
value数组中筛选活动类型为Notebook的条目:- 直接获取
error.message字段即为Notebook运行的错误详情 - 如需Notebook失败的详情页URL,可在同一条记录的
portalUrl字段中获取
- 直接获取
- 后续将提取到的错误信息写入目标数据库即可
离线批量获取方案
如果不需要实时写入错误,也可以配置ADF日志同步到Log Analytics工作区,通过KQL语句关联父管道运行ID、内部管道运行ID,批量筛选出Notebook活动的错误信息,定时同步到数据库即可。
内容的提问来源于stack exchange,提问作者d2907
相关产品推荐
相关产品推荐

