你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Durable Task SDK 中的诊断

用于诊断持久任务 SDK 问题的选项取决于所使用的Azure计算,例如Azure 容器应用、Azure Kubernetes 服务群集或Azure 应用服务应用。 建议启用 Application InsightsDurable Task Scheduler 监视仪表板 ,以便完全了解业务流程状态和故障。

Application Insights

Application Insights 是监视 Durable Task SDK 上运行的应用的建议方法。 可以在 Azure 门户中使用 Application Insights Analytics 工具查找和查询这些跟踪事件。

业务流程实例的每个生命周期事件都会将跟踪事件写入 Application Insights 中的 跟踪 集合。 使用这些事件的自定义维度(如 prop__instanceIdprop__nameprop__runtimeStatus)筛选和查询特定的编排流程。

计算服务 诊断日志记录说明
Azure 容器应用 使用 Log Analytics 监视 Azure 容器应用 中的日志
Azure App 服务 为 Azure 应用服务中的应用启用诊断日志
Azure Kubernetes 服务 监视 Azure Kubernetes 服务

示例查询

启用 Application Insights 后,请在 日志 中使用以下 KQL 查询调查业务流程行为:

查找失败的业务流程:

traces
| where customDimensions.prop__runtimeStatus == "Failed"
| project timestamp, customDimensions.prop__instanceId, customDimensions.prop__name, message
| order by timestamp desc
| take 50

按名称列出的编排操作持续时间(过去 24 小时):

traces
| where timestamp > ago(24h)
| where customDimensions.prop__runtimeStatus == "Completed"
| extend duration = todatetime(customDimensions.prop__completedTime) - todatetime(customDimensions.prop__createdTime)
| summarize avg(duration), max(duration), count() by tostring(customDimensions.prop__name)

使用 OpenTelemetry 的分布式跟踪

持久任务 SDK 支持 OpenTelemetry 分布式跟踪,让你以相关跨度形式跨业务流程、活动和子业务流程获得端到端可见性。 可以将跟踪导出到任何与 OpenTelemetry 兼容的后端,包括 Application Insights、Jaeger 或 Zipkin。

有关所有受支持语言的代码示例设置说明,请参阅使用持久任务计划程序进行 OpenTelemetry 和分布式跟踪

持久任务计划程序监控仪表板

Durable Task Scheduler 仪表板允许你监视业务流程状态、检查输入/输出、查看执行时间线以及管理业务流程(开始、暂停、恢复、终止)。 它适用于本地模拟器和Azure托管计划程序。

访问仪表板

  • 本地模拟器:无需身份验证。 仪表板位于 http://localhost:8082
  • Azure 托管计划程序持久任务数据参与者角色分配给你的标识,然后通过 Azure 门户中或 https://dashboard.durabletask.io/ 位置的任务中心终结点 URL 来访问仪表板。

有关完整的设置和使用说明,请参阅 使用 Durable Task Scheduler 仪表板调试和管理业务流程

常见问题

症状 可能的原因 解决方案
业务流程卡在“运行中”状态 活动引发未经处理的异常,未配置重试策略 检查 Application Insights 中的异常详细信息;添加重试策略或在业务流程协调程序中使用 try/catch
活动会无限期地重试 重试策略没有 maxNumberOfAttempts 限制 在重试策略配置中设置最大重试计数
业务流程未启动 辅助角色未轮询正确的任务中心 验证连接字符串的任务中心名称是否与调度程序资源匹配
Application Insights 中无踪迹 未配置连接字符串或 SDK 未发出遥测数据 确保 APPLICATIONINSIGHTS_CONNECTION_STRING 已设置;确保 OpenTelemetry Microsoft.DurableTask 源已注册
仪表板显示无业务流程 角色分配缺失或选择了错误的任务中心 确认您具有 持久任务数据参与者 角色,检查仪表板 URL 中的任务中心名称。
编排已完成,但结果为空 活动返回 null 或序列化失败 检查仪表板历史记录视图中的活动输出;检查序列化程序配置

后续步骤