为ADF管道挂起状态配置告警方案
ADF管道挂起停滞的告警与自动重启方案
一、配置精准的告警规则
1. 基于Log Analytics的停滞检测查询
用以下Kusto查询筛选挂起的管道实例——正常运行的管道会持续生成日志,停滞的则不会有新记录,这个查询能精准定位这类异常:
ADFPipelineRun | where Status == "InProgress" | where TimeGenerated < ago(1h) // 可根据管道正常运行时长调整阈值,比如短管道设30分钟 | project PipelineName, RunId, Status, TimeGenerated, ResourceGroupName | summarize arg_max(TimeGenerated, *) by RunId
将该查询添加到Azure Monitor告警规则中,设置触发条件为「返回记录数大于0」,一旦出现挂起的管道就触发告警。
2. 告警动作组配置
- 配置邮件/短信通知,让运维人员第一时间收到告警提醒
- 添加逻辑应用到动作组,用于实现自动重启管道的逻辑
二、自动重启管道的实现(逻辑应用)
- 新建逻辑应用,触发方式选择「Azure Monitor 警报」
- 在逻辑应用中添加以下步骤:
- 解析告警消息中的关键信息:管道名、运行ID、资源组名、ADF工厂名
- 可选步骤:调用ADF终止运行API,先停止挂起的管道实例:
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelineruns/{runId}/cancel?api-version=2018-06-01 - 核心步骤:调用ADF创建运行API,重启目标管道:
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelines/{pipelineName}/createRun?api-version=2018-06-01
- 给逻辑应用分配Data Factory Contributor角色,确保它拥有操作ADF管道运行的权限
三、额外排查与优化建议
- 排查管道依赖的外部资源:比如数据库连接是否超时、存储账户是否正常响应,这类外部资源异常是管道挂起的常见根源
- 确认ADF诊断设置已开启,确保所有管道运行日志都流向Log Analytics,避免因日志缺失导致告警误判
- 根据管道实际运行时长调整告警阈值:比如仅需10分钟的短管道,将停滞阈值设为30分钟即可;长运行管道可设为2小时
- 针对频繁挂起的管道,检查活动的重试次数、超时设置,优化活动执行逻辑,从根源减少挂起情况
内容的提问来源于stack exchange,提问作者Mukteswar Patnaik
相关产品推荐
相关产品推荐

