如何在Azure Data Factory中终止超时运行的管道并发送邮件告警?
Azure Data Factory管道超时终止+邮件通知解决方案
第一步:设置管道自动超时终止
在ADF管道的常规设置中,找到「超时」选项,设置具体时长(格式为ISO 8601,比如PT1H代表1小时),管道运行超过这个时间会自动终止,状态标记为「失败(超时)」。
方法一:用ADF自带警报规则发通知(最简单)
- 进入Azure Portal的ADF资源,左侧菜单选择「警报」→「创建警报规则」
- 配置信号逻辑:
- 信号名称选择「管道运行失败」
- 添加筛选条件:「失败原因」包含
Pipeline run timed out(ADF超时失败的默认原因关键词)
- 配置动作组:
- 新建或选择已有动作组,添加「电子邮件/短信/推送/语音」类型,填写收件邮箱
- 保存规则后,管道超时失败时会自动发送邮件通知。
方法二:用Logic App实现精准控制(解决你之前的配置问题)
你之前的问题大概率是用错了触发器,不用手动存RunID到表,直接用ADF的事件触发:
- 新建Logic App,选择触发器「当Azure Data Factory管道运行失败时」
- 配置触发器:选择你的ADF资源,在「高级选项」中添加筛选条件:「失败原因」包含
Pipeline run timed out - 添加「发送电子邮件」动作(比如用Office 365 Outlook连接器),邮件内容可插入动态参数:
- 管道名称:
@{triggerBody()?['pipelineName']} - 运行ID:
@{triggerBody()?['runId']} - 触发时间:
@{triggerBody()?['triggerTime']}
- 管道名称:
- 保存Logic App后,只要管道因超时失败,就会自动触发发邮件。
进阶:主动终止超时运行的管道(如果需要提前干预)
如果ADF自带的超时设置满足不了需求,比如需要定时检查并终止:
- 新建Logic App,用「定期」触发器(比如每15分钟运行一次)
- 添加「获取Azure Data Factory管道运行」动作:
- 筛选条件:「运行状态」等于
InProgress,「触发时间」小于@{addToTime(utcNow(), -1, 'Hour')}(这里以1小时超时为例,即触发时间超过1小时前的运行)
- 筛选条件:「运行状态」等于
- 加入「应用到每个」循环,遍历筛选出的运行中管道
- 循环内添加「取消Azure Data Factory管道运行」动作,传入对应RunID
- 取消后添加发送邮件动作,通知相关人员管道已被主动终止。
内容的提问来源于stack exchange,提问作者Priyom
相关产品推荐
相关产品推荐

