

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

# 在 Amazon 中监控事件交付的最佳实践 EventBridge
<a name="eb-monitoring-events-best-practices"></a>

为确保事件驱动型应用程序中的业务逻辑能够可靠地执行，必须监控您的事件交付行为。 EventBridge 提供的指标使您能够尽早监控、检测和缓解问题，从而确保可靠的事件传送。这些指标包括：
+ 基于计数器的指标（例如 `InvocationAttempts`、`SuccessfulInvocationAttempts`、`RetryInvocationAttempts` 和 `FailedInvocations`），使您能够观察目标节流并计算错误率。
+ 基于延迟的指标（例如 `IngestionToInvocationSuccessLatency`），用于提供对事件传送和延迟的洞察。

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

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

有关特定指标的更多信息，请参阅 [EventBridge 指标](eb-monitoring.md#eb-metrics)。

## 检测事件传送失败问题
<a name="eb-monitoring-events-best-practices-delivery-failures"></a>

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

建议您在规则级别监控以下指标：
+ `InvocationAttempts`以观察 EventBridge 尝试调用目标的总次数，包括事件传送重试次数。
+ `SuccessfulInvocationAttempts`以获取 EventBridge 成功将事件传送到目标的调用尝试次数。
+ `RetryInvocationAttempts`，表示事件传送重试次数。

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

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

`SuccessfulInvocationRate` = `SuccessfulInvocationAttempts` / ` InvocationAttempts`

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

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

有关指标数学的更多信息，请参阅 *Amazon CloudWatch 用户指南*中的将[数学表达式与 CloudWatch 指标配合使用](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)。

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

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

## 检测事件传送延迟问题
<a name="eb-monitoring-events-best-practices-delivery-latency"></a>

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