View a markdown version of this page

监控亚马逊事件交付的最佳实践 EventBridge - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

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

监控亚马逊事件交付的最佳实践 EventBridge

为了确保事件驱动应用程序中的业务逻辑可靠地执行,监控事件交付行为至关重要。 EventBridge 提供的指标使您能够及早监控、检测和缓解问题,以确保可靠的事件交付。这些指标包括:

  • Counter-based 指标,例如InvocationAttemptsSuccessfulInvocationAttempts、RetryInvocationAttempts和FailedInvocations,使您能够观察目标限制和计算错误率。

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

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

建议您组合使用多个指标以全面了解情况,并对其进行密切监控。通过设置适当的警报和控制面板,您可以尽早解决持续存在的问题。

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

检测事件传送失败问题

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

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

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

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

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

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

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

SuccessfulInvocationRate = SuccessfulInvocationAttempts / InvocationAttempts

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

偶尔出现的临时流量峰值或调用错误会降低 SuccessfulInvocationRate,尽管可以将这视为正常现象,但持续的不匹配将表明目标配置错误,需要将其作为责任共担模型的一部分加以解决。

有关指标数学的更多信息,请参阅《亚马逊 CloudWatch 用户指南》中的将数学表达式与 CloudWatch 指标结合使用。

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

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

检测事件传送延迟问题

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