Amazon SQS 的可用 CloudWatch 指标
Amazon SQS 会向 CloudWatch 发送以下指标。
注意
由于 Amazon SQS 采用分布式架构,某些指标的结果为近似值。在大多数情况下,该计数应接近队列中的实际消息数。
Amazon SQS 指标
Amazon SQS 会自动将运营指标发布到 AWS/SQS 命名空间下的 Amazon CloudWatch。这些指标可帮助您监控队列运行状况和性能。由于 SQS 的分布式特性,许多值都是近似值,但对于大多数运营决策来说足够准确。
注意
-
仅当队列处于活动状态时,所有指标才会输出非负值。
-
有些指标(例如
SentMessageSize)要等到至少发送一条消息后才会输出。
| 指标 | 描述 | 单位 | 报告行为 | 关键说明 |
|---|---|---|---|---|
ApproximateAgeOfOldestMessage |
队列中最早的未处理消息的期限。 | 秒 |
报告队列中是否至少包含一条活动消息。 |
|
ApproximateNumberOfGroupsWithInflightMessages |
仅适用于 FIFO。包含一条或多条传输中消息的消息组数量。 | 计数 |
报告 FIFO 队列是否处于活动状态。 |
|
ApproximateNumberOfMessagesDelayed |
队列中延迟且无法立即检索的消息数量。 |
计数 |
报告队列中是否存在延迟消息。 |
|
ApproximateNumberOfMessagesNotVisible |
已接收但尚未删除或到期的传输中消息数量。 | 计数 |
报告是否存在传输中消息。 |
|
ApproximateNumberOfMessagesVisible |
当前可供检索和处理的消息数量。 | 计数 |
报告队列是否处于活动状态。 |
|
NumberOfEmptyReceives¹ |
未返回任何消息的 ReceiveMessage API 调用次数。 | 计数 |
在接收操作期间报告。 |
|
NumberOfDeduplicatedSentMessages |
仅适用于 FIFO。经过重复数据删除且未添加到队列的已发送消息数量。 | 计数 |
报告是否检测到重复的 MessageDeduplicationId 值或内容。 |
|
NumberOfMessagesDeleted¹ |
从队列中成功删除的消息数量。 |
计数 |
报告每个经过有效接收处理的删除请求。 |
|
NumberOfMessagesReceived¹ |
ReceiveMessage API 返回的消息数量。 | 计数 |
在接收操作期间报告。 |
|
NumberOfMessagesSent¹ |
成功添加到队列的消息数量。 | 计数 |
报告每次成功手动发送。 |
|
SentMessageSize¹ |
成功发送到队列的消息的大小。 |
字节 |
至少发送一条消息后才会输出。 |
|
ApproximateNumberOfNoisyGroups |
公平队列中被视为嘈杂邻居的消息组的数量。嘈杂消息组表示多租户队列中的嘈杂邻居租户。 |
计数 |
如果队列处于活动状态,则报告非负值。 |
|
ApproximateNumberOfMessagesVisibleInQuietGroups |
可见消息数量,不包括来自嘈杂消息组的消息。 |
计数 |
如果队列处于活动状态,则报告非负值。 |
|
ApproximateNumberOfMessagesNotVisibleInQuietGroups |
传输中消息数量,不包括来自嘈杂消息组的消息。 | 计数 |
如果队列处于活动状态,则报告非负值。 |
|
ApproximateNumberOfMessagesDelayedInQuietGroups |
延迟且无法立即读取的消息数量,不包括来自嘈杂消息组的消息。如果队列被配置为延迟队列,或者发送消息时使用了延迟参数,则会出现延迟消息。 | 计数 |
如果队列处于活动状态,则报告非负值。 |
|
ApproximateAgeOfOldestMessageInQuietGroups |
队列中最早的未删除消息的期限,不包括来自嘈杂消息组的消息。 | 秒 |
如果队列处于活动状态,则报告非负值。 |
|
¹ 这些指标反映的是系统级别的活动,可能包括重试、重复或延迟消息。如果不考虑消息生命周期行为,请勿使用原始计数来估算实时队列状态。
死信队列(DLQ)和 CloudWatch 指标
使用 DLQ 时,了解 Amazon SQS 指标的行为非常重要:
-
NumberOfMessagesSent– 对于 DLQ,此指标的行为有所不同:-
手动发送 – 此指标将捕获手动发送到 DLQ 的消息。
-
自动重新驱动 – 此指标不捕获由于处理失败而自动移到 DLQ 的消息。因此,对于 DLQ,
NumberOfMessagesSent和NumberOfMessagesReceived指标可能存在差异。
-
-
DLQ 的推荐指标 – 要监控 DLQ 的状态,请使用
ApproximateNumberOfMessagesVisible指标。此指标表示 DLQ 中当前可供处理的消息数量。
公平队列和 CloudWatch 指标
当您使用公平队列时,Amazon SQS 会输出以下额外指标:
-
ApproximateNumberOfNoisyGroups -
ApproximateNumberOfMessagesVisibleInQuietGroups -
ApproximateNumberOfMessagesNotVisibleInQuietGroups -
ApproximateNumberOfMessagesDelayedInQuietGroups -
ApproximateAgeOfOldestMessageInQuietGroups
注意
每个 QuietGroup 指标都是等效标准队列级别 Approximate 指标的子集,但不包括来自嘈杂邻居组的消息。
- 嘈杂组
-
嘈杂消息组表示多租户队列中的嘈杂邻居租户。
- 安静组
-
嘈杂组以外的消息组。
观察 SQS 公平队列行为
要监控 Amazon SQS 公平队列的影响,您可以将 Approximate..InQuietGroups 指标与标准队列级别指标进行比较。在特定租户的流量激增期间,队列级别的一般指标可能会显示积压的消息增加或消息停留时间延长。但是,如果单独查看安静组,您可以确定大多数非嘈杂消息组或租户都没有受到影响,并估算出受影响的消息组总数。
虽然通过这些新指标可以了解 Amazon SQS 公平队列行为,但了解哪个特定租户导致了负载问题可能会有所帮助。Amazon CloudWatch Contributor Insights 使您能够查看有关前 N 个贡献者、独特贡献者总数及其使用情况的指标。这在处理数千个租户的场景中特别有用,否则在输出传统指标时会导致高基数数据(和成本)。
有关监控公平队列配置的示例,请参阅 GitHub
Amazon SQS 指标的维度
CloudWatch 中的 Amazon SQS 指标使用单一维度:QueueName。所有指标数据均按队列名称进行分组和筛选。
监控提示
使用关键指标和 CloudWatch 警报有效地监控 SQS,以检测队列积压情况、优化性能并保持在服务限制范围内。
-
基于
ApproximateNumberOfMessagesVisible设置 CloudWatch 警报,以了解积压增长情况。 -
通过监控
NumberOfEmptyReceives来调整轮询频率并降低 API 成本。 -
在 FIFO 队列中使用
ApproximateNumberOfGroupsWithInflightMessages来诊断吞吐量限制。 -
查看 SQS 配额以了解指标阈值和服务限制。