Durable functions可以运行较长时间并跨越多次调用,因此监控对于理解其行为至关重要。
标准 Lambda 函数通常在几秒内执行完毕并在单次调用中完成,这使得监控相对简单。然而,Durable functions引入了新的复杂性,需要采用不同的监控方法。单次Durable Functions执行可能跨越数小时甚至数天内的多次 Lambda 调用,每次调用都会重放之前的步骤后再继续向前执行。
这种执行模型带来了独特的监控挑战, 而且由于Durable functions可以长时间运行,它们会消耗存储空间用于检查点,并可能累积达到我们账户的并发执行配额限制。
如果没有适当的监控,我们可能不会注意到执行失败、配额接近上限或工作流耗时超出预期的情况。当我们发现问题时,可能已经积累了大量失败的工作流或被限流的执行。
Lambda 自动将指标发布到 CloudWatch,无需额外费用。Durable functions除了提供标准 Lambda 指标外,还提供额外指标,帮助我们监控长时间运行的工作流、状态管理和资源利用率。
| 指标 | 描述 | 使用场景 |
|---|---|---|
ApproximateRunningDurableExecutions |
处于 RUNNING 状态的执行数量 | 监控活跃工作流 |
DurableExecutionStarted |
已启动的执行数量 | 跟踪工作流创建速率 |
DurableExecutionSucceeded |
成功完成的数量 | 衡量成功率 |
DurableExecutionFailed |
失败的执行数量 | 检测错误 |
DurableExecutionTimedOut |
超时的执行数量 | 识别超时问题 |
DurableExecutionStopped |
手动停止的执行数量 | 跟踪取消情况 |
DurableExecutionDuration |
处于 RUNNING 状态的实际时间 | 监控工作流持续时间 |
| 指标 | 描述 | 使用场景 |
|---|---|---|
ApproximateRunningDurableExecutionsUtilization |
已使用配额的百分比 | 防止配额耗尽 |
DurableExecutionOperations |
每次执行的累计操作数 | 监控复杂度(限制:3,000) |
DurableExecutionStorageWrittenBytes |
每次执行的累计存储量 | 跟踪状态大小(限制:100 MB) |
| 指标 | 描述 | 使用场景 |
|---|---|---|
Invocations |
函数调用次数(包含重放) | 谨慎使用 - 包含重放 |
Duration |
每次调用的执行时间 | 单个步骤性能 |
Errors |
调用错误数量 | 标准 Lambda 错误跟踪 |
我们将用两个场景来说明如何使用这些指标:
问题:客户投诉原本 15 秒完成的订单现在需要 2 分钟以上:
这些指标可以帮助我们识别和排查性能下降问题:
主要指标:
DurableExecutionDuration:显示工作流总耗时,从 15 秒到 120 秒以上的趋势
Duration:单个步骤的调用时间,用于确定哪个步骤耗时过长
次要指标:
DurableExecutionOperations:检查工作流复杂度是否增加
CloudWatch Logs:查看 validate_order、process_payment 和 confirm_order 步骤的日志
说明:DurableExecutionDuration 衡量整个工作流的耗时,而 Duration 显示单个步骤的性能。比较这两个指标随时间的变化,可以确定性能下降的起始时间以及瓶颈步骤。
生产问题:黑色星期五期间,我们的网站流量达到正常流量的 10 倍。新订单因"配额超限"错误而失败,客户在我们最重要的销售日无法完成购买。

这些指标可以帮助我们了解订单被拒绝的原因以及如何解决该问题:
主要指标:
ApproximateRunningDurableExecutionsUtilization:显示接近 100% 限制的百分比
ApproximateRunningDurableExecutions:显示实际并发执行次数
次要指标:
DurableExecutionStarted:比较当前速率与正常流量下的速率
DurableExecutionDuration:检查订单执行时间是否延长,从而导致并发量增加
说明:Lambda 对并发持久执行的数量有限制。在流量高峰期,过多的订单会同时运行,从而达到配额限制。监控利用率可以避免这种情况,并考虑实施订单排队或优化工作流速度以减少并发执行时间。
在durable function中,选择 Monitor ,查看 Duration、Error count 和 success rate Lambda 指标,以及 Durable executions started 和 Durable execution duration 指标:

在cloudwatch metric的Lambda监控页面,能找到和Durable Function相关的limit指标:

