本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
关于在 Amazon EventBridge 中监控事件传送的最佳实践
为了确保事件驱动型应用程序中的业务逻辑能够可靠地执行,必须监控事件传送行为。EventBridge 提供的指标使您能够尽早监控、检测和缓解问题,从而确保可靠的事件传送。这些指标包括:
基于计数器的指标(例如
InvocationAttempts
、SuccessfulInvocationAttempts
、RetryInvocationAttempts
和FailedInvocations
),使您能够观察目标节流并计算错误率。基于延迟的指标(例如
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 未能传送到指定目标的事件。如果您的应用程序出现大量的 FailedInvocations
或 InvocationsSentToDlq
报告,建议您调查目标是否已正确扩展并能够接收给定的流量。
检测事件传送延迟问题
EventBridge 还提供了一个指标,可让您观察端到端延迟,即从事件摄取到成功传送到目标所需的时间。这可以通过 IngestionToInvocationSuccessLatency
指标实现。该指标会显示重试和延迟传送的影响,例如由于超时和目标响应缓慢。IngestionToInvocationSuccessLatency
包含目标成功响应事件传送所花费的时间。这样,即使没有目标节流或错误,您也可以监控 EventBridge 与目标之间的端到端延迟,并检测目标的性能变化和降级。