监控

Durable functions可以运行较长时间并跨越多次调用,因此监控对于理解其行为至关重要。

为什么监控很重要

标准 Lambda 函数通常在几秒内执行完毕并在单次调用中完成,这使得监控相对简单。然而,Durable functions引入了新的复杂性,需要采用不同的监控方法。单次Durable Functions执行可能跨越数小时甚至数天内的多次 Lambda 调用,每次调用都会重放之前的步骤后再继续向前执行。

这种执行模型带来了独特的监控挑战, 而且由于Durable functions可以长时间运行,它们会消耗存储空间用于检查点,并可能累积达到我们账户的并发执行配额限制。

如果没有适当的监控,我们可能不会注意到执行失败、配额接近上限或工作流耗时超出预期的情况。当我们发现问题时,可能已经积累了大量失败的工作流或被限流的执行。

Durable functions指标

Lambda 自动将指标发布到 CloudWatch,无需额外费用。Durable functions除了提供标准 Lambda 指标外,还提供额外指标,帮助我们监控长时间运行的工作流、状态管理和资源利用率。

Execution指标

指标 描述 使用场景
ApproximateRunningDurableExecutions 处于 RUNNING 状态的执行数量 监控活跃工作流
DurableExecutionStarted 已启动的执行数量 跟踪工作流创建速率
DurableExecutionSucceeded 成功完成的数量 衡量成功率
DurableExecutionFailed 失败的执行数量 检测错误
DurableExecutionTimedOut 超时的执行数量 识别超时问题
DurableExecutionStopped 手动停止的执行数量 跟踪取消情况
DurableExecutionDuration 处于 RUNNING 状态的实际时间 监控工作流持续时间

资源使用指标

指标 描述 使用场景
ApproximateRunningDurableExecutionsUtilization 已使用配额的百分比 防止配额耗尽
DurableExecutionOperations 每次执行的累计操作数 监控复杂度(限制:3,000)
DurableExecutionStorageWrittenBytes 每次执行的累计存储量 跟踪状态大小(限制:100 MB)

标准 Lambda 指标

指标 描述 使用场景
Invocations 函数调用次数(包含重放) 谨慎使用 - 包含重放
Duration 每次调用的执行时间 单个步骤性能
Errors 调用错误数量 标准 Lambda 错误跟踪

我们将用两个场景来说明如何使用这些指标:

场景 1:客户订单处理缓慢

问题:客户投诉原本 15 秒完成的订单现在需要 2 分钟以上:

image-20260301133947885这些指标可以帮助我们识别和排查性能下降问题:

主要指标

  • DurableExecutionDuration:显示工作流总耗时,从 15 秒到 120 秒以上的趋势

  • Duration:单个步骤的调用时间,用于确定哪个步骤耗时过长

次要指标

  • DurableExecutionOperations:检查工作流复杂度是否增加

  • CloudWatch Logs:查看 validate_order、process_payment 和 confirm_order 步骤的日志

说明DurableExecutionDuration 衡量整个工作流的耗时,而 Duration 显示单个步骤的性能。比较这两个指标随时间的变化,可以确定性能下降的起始时间以及瓶颈步骤。

场景 2:黑色星期五流量激增

生产问题:黑色星期五期间,我们的网站流量达到正常流量的 10 倍。新订单因"配额超限"错误而失败,客户在我们最重要的销售日无法完成购买。

image-20260301134017106

这些指标可以帮助我们了解订单被拒绝的原因以及如何解决该问题:

主要指标

  • ApproximateRunningDurableExecutionsUtilization:显示接近 100% 限制的百分比

  • ApproximateRunningDurableExecutions:显示实际并发执行次数

次要指标

  • DurableExecutionStarted:比较当前速率与正常流量下的速率

  • DurableExecutionDuration:检查订单执行时间是否延长,从而导致并发量增加

说明:Lambda 对并发持久执行的数量有限制。在流量高峰期,过多的订单会同时运行,从而达到配额限制。监控利用率可以避免这种情况,并考虑实施订单排队或优化工作流速度以减少并发执行时间。

在控制台中查看指标

在durable function中,选择 Monitor ,查看 Duration、Error count 和 success rate Lambda 指标,以及 Durable executions started 和 Durable execution duration 指标:

image-20260301134543737

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

image-20260301135115802

image-20260301135019188