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

如何以编程方式从Azure Synapse管道各次运行中检索错误消息

编程式获取Azure Synapse管道运行错误消息的可行方案

优先方案:无需修改现有管道

1. 通过Azure Monitor日志查询+API获取

利用Azure Monitor对Synapse管道运行的日志采集能力,编写Kusto查询过滤失败运行的错误信息,再通过API编程调用查询结果,完全不需要改动现有管道。

关键步骤:

  • 确保Synapse工作区已启用诊断设置,将SynapsePipelineRuns日志发送到Azure Monitor Log Analytics工作区
  • 编写Kusto查询定位失败运行:
SynapsePipelineRuns
| where Status == "Failed"
// 过滤每日触发的运行,可根据实际触发时间调整范围
| where StartTime > ago(24h)
// 可选:批量指定要监控的管道,或去掉该行监控所有管道
| where PipelineName in ("DailyETLPipeline", "DataSyncPipeline")
| project 
    PipelineName, 
    RunId, 
    ErrorMessage = tostring(Properties.Error.Message),
    StartTime,
    EndTime
  • 编程调用Azure Monitor Logs API执行该查询,获取结构化的错误数据。可使用Azure SDK(如.NET的Azure.Monitor.Query、Python的azure-monitor-query)简化认证和调用流程,用服务主体身份进行批量查询。

2. 直接调用Synapse管道运行历史API

通过Azure Resource Manager的Synapse管道运行API,遍历所有管道的运行记录,过滤失败实例并提取错误信息。

示例API请求(REST):

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}/pipelines/{pipelineName}/runs?api-version=2020-12-01&$filter=Status eq 'Failed' and StartTime gt '2024-05-20T00:00:00Z'

返回结果中,每个失败运行的properties.error字段包含完整错误消息。可通过Azure SDK(如Azure.ResourceManager.Synapse)批量遍历工作区内的所有管道,自动执行查询,适合大规模管道场景。

3. 用Azure Logic Apps自动化采集

创建定时触发的Logic Apps流程,无需修改管道即可自动完成:

  • 定时触发(每日对应管道触发后)
  • 调用Synapse管理API获取当日失败的管道运行
  • 提取错误消息后,发送到下游系统(如存储队列、SQL表、自定义API)
  • 可添加分支逻辑,根据错误类型触发不同的下游处理

可选方案:修改管道增强错误传递

如果允许调整现有管道,可添加失败分支的错误转发逻辑,直接将错误消息推送到下游:

  • 在管道的失败分支中添加Web活动或Azure Function活动
  • 使用表达式@pipeline().Error.Message获取当前管道的错误详情,可结合@pipeline().PipelineName、@pipeline().RunId传递上下文信息
  • 将错误数据发送到下游处理系统(如事件网格、服务总线、自定义业务API)
  • 该方案适合需要实时触发下游处理的场景,错误产生时立即推送数据

内容的提问来源于stack exchange,提问作者John Scott Stensland

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:15:16