在 Amazon 中监控事件交付的最佳实践 EventBridge - Amazon EventBridge

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon 中监控事件交付的最佳实践 EventBridge

为确保事件驱动型应用程序中的业务逻辑能够可靠地执行,必须监控您的事件交付行为。 EventBridge 提供的指标使您能够尽早监控、检测和缓解问题,从而确保可靠的事件传送。这些指标包括:

  • 基于计数器的指标InvocationAttempts,例如SuccessfulInvocationAttemptsFailedInvocationsRetryInvocationAttempts和,使您能够观察目标限制并计算错误率。

  • 基于延迟的指标,例如IngestionToInvocationSuccessLatency,用于提供对事件交付和延迟的见解。

这些指标使您可以监控事件驱动架构的运行状况,并了解和缓解由性能不佳、规模不足或无响应的目标导致的事件交付问题。例如,目标的规模永久不足或受限可能会导致重试次数过多、事件交付延迟和永久交付失败。

我们建议您合并多个指标以获得全面的概览,并对其进行密切监控。通过设置适当的警报和仪表板,您可以尽早解决持续存在的问题。

有关特定指标的信息,请参阅EventBridge 指标

检测事件传送失败

EventBridge 包括您可以配置为根据规则报告目标调用(即事件传送尝试)的指标。

我们建议您在规则级别监控以下指标:

  • InvocationAttempts以观察 EventBridge 尝试调用目标的总次数,包括事件传送重试次数。

  • SuccessfulInvocationAttempts以获取 EventBridge 成功将事件传送到目标的调用尝试次数。

  • RetryInvocationAttempts表示事件传送重试次数的尝试次数。

    增加RetryInvocationAttempts可能是目标规模过小的早期迹象。

此外,由于重试尝试次数增加可能是交付问题的第一个迹象,因此我们还建议创建一个指标,用于跟踪成功目标调用占所有目标调用的百分比。例如, CloudWatch 您可以使用指标数学来创建这样的指标,名为SuccessfulInvocationRate,使用以下公式:

SuccessfulInvocationRate = SuccessfulInvocationAttempts / InvocationAttempts

然后,根据您的要求,您可以将 CloudWatch 警报配置为在达到特定阈值时创建通知。

尽管SuccessfulInvocationRate由于临时流量峰值或调用错误而偶尔出现的减少可以认为是正常的,但持续的不匹配表示目标配置错误,需要作为责任分担模型的一部分加以解决。

有关指标数学的更多信息,请参阅 Amazon CloudWatch 用户指南中的将数学表达式与 CloudWatch 指标配合使用

默认情况下, EventBridge 重试投递事件的时间为 24 小时,最多 185 次。在 EventBridge 用尽这些重试尝试之后, EventBridge 要么丢弃事件,要么将其发送到死信队列(如果已指定)。有关更多信息,请参阅 正在重试事件传送。为避免在事件交付失败时丢失,我们建议您为每个规则目标配置一个死信队列。有关更多信息,请参阅 使用死信队列

如果您为目标配置了死信队列,则会在FailedInvocations指标和InvocationsSentToDlq指标中报告 EventBridge 未能传送到指定目标的事件。如果您的应用程序遇到大量FailedInvocationsInvocationsSentToDlq报告,我们建议您调查目标是否已正确扩展并能够接收给定的流量。

检测事件传送延迟

EventBridge 还提供了一个指标,可让您观察 end-to-end 延迟,即从事件摄取到成功传送到目标所需的时间。这可以通过IngestionToInvocationSuccessLatency指标来实现。该指标显示了重试和延迟交付的影响,例如由于超时和目标响应缓慢所致。 IngestionToInvocationSuccessLatency包括目标成功响应事件交付所花费的时间。这样,即使没有目标限制或错误,您也可以监控目标之间的 end-to-end EventBridge 延迟,并检测目标的性能变化和降级。