如何用Kusto查询获取逻辑应用失败工作流的错误详情
调整Kusto查询获取Logic Apps失败工作流的详细错误信息
你当前的查询只能拿到顶层的"BadRequest",是因为AzureDiagnostics的WorkflowRuntime类别里,code_s和error_message_s只存了最外层的错误摘要,详细的statusCode、错误消息和innerError都藏在动态JSON字段里,比如error_d或者details_d。试试下面的调整方案:
方案一:从AzureDiagnostics提取详细错误
直接解析表中的动态错误字段,把嵌套的详细信息取出来:
AzureDiagnostics | where ResourceProvider == "MICROSOFT.LOGIC" | where Category == "WorkflowRuntime" | where status_s == "Failed" | extend ResourceName = coalesce(resource_actionName_s, resource_triggerName_s) // 解析动态错误字段 | extend ErrorDetails = parse_json(error_d) // 提取嵌套的错误信息,兼容字段不存在的情况 | extend StatusCode = coalesce(tostring(ErrorDetails.statusCode), tostring(parse_json(details_d)[0].statusCode)), DetailedErrorMessage = coalesce(tostring(ErrorDetails.message), tostring(parse_json(details_d)[0].message)), InnerError = coalesce(tostring(ErrorDetails.innerError), tostring(parse_json(details_d)[0].innerError)) | project LogicAppName = resource_workflowName_s, ResourceName, LogicAppRunId = resource_runId_s, TopLevelErrorCode = code_s, StatusCode, DetailedErrorMessage, InnerError
如果你的环境里动态字段名称不一样,先跑AzureDiagnostics | getschema查看所有字段,找到存储详细错误的JSON字段(比如可能叫errorDetails_d),替换上面的error_d或details_d即可。
方案二:用专门的诊断表(更精准)
如果你的Logic Apps已经开启了WorkflowRunAction类别的诊断日志,直接用LogicAppWorkflowRunActionDiagnostics表查询会更简单,这个表专门存储动作和触发器的详细错误:
LogicAppWorkflowRunActionDiagnostics | where Status == "Failed" | extend ResourceName = coalesce(ActionName, TriggerName), ErrorDetails = parse_json(Error) | extend StatusCode = tostring(ErrorDetails.statusCode), DetailedErrorMessage = tostring(ErrorDetails.message), InnerError = tostring(ErrorDetails.innerError) | project LogicAppName = WorkflowName, ResourceName, LogicAppRunId = RunId, StatusCode, DetailedErrorMessage, InnerError
注意事项
- 得确认你的Logic Apps诊断设置里,已经勾选了
WorkflowRuntime(方案一)和WorkflowRunAction(方案二)这两个日志类别,不然表中不会有对应数据 - 如果
innerError是多层嵌套的JSON,可以继续用parse_json逐层提取,比如tostring(ErrorDetails.innerError.message)来拿到更内层的错误内容
内容的提问来源于stack exchange,提问作者sergioMoreno
相关产品推荐
相关产品推荐

