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 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 的分布式跟踪

Durable Task SDK 支持 OpenTelemetry 分布式跟踪,使你能够跨编排、活动和子编排(作为相关跨度)实现端到端可见性。 可以将跟踪导出到任何与 OpenTelemetry 兼容的后端,包括 Application Insights、Jaeger 或 Zipkin。

有关所有受支持语言的代码示例的设置说明,请参阅 使用 Durable Task Scheduler 的 OpenTelemetry 和分布式跟踪

Durable Task Scheduler 任务调度程序监视仪表板

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 或序列化失败 检查仪表板历史记录视图中的活动输出;检查序列化程序配置

后续步骤