亚马逊 SQS 的可用 CloudWatch 指标 - Amazon Simple Queue Service

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

亚马逊 SQS 的可用 CloudWatch 指标

Amazon SQS 将以下指标发送至。 CloudWatch

注意

由于 Amazon SQS 采用分布式架构,某些指标的结果为近似值。在大多数情况下,该计数应接近队列中的实际消息数。

Amazon SQS 指标

AWS/SQS 命名空间包括以下指标。

指标 描述
ApproximateAgeOfOldestMessage 队列中最旧的未删除消息的大约存在时间。
注意
  • 在收到一条消息三次(或更多)且未被处理后,该消息将移到队列的后面,该ApproximateAgeOfOldestMessage指标指向收到次数不超过三次的第二古老消息。即使队列具有重新驱动策略,也会发生此操作。

  • 由于单条 “毒丸” 消息(多次接收但从未删除)可能会扭曲该指标,因此在成功使用此类消息之前,不会包含其存在时间。

  • 当队列有重新驱动策略时,消息将在配置的最大接收次数之后移至死信队列 (DLQ)。当邮件移至 DLQ 时,DLQ 的ApproximateAgeOfOldestMessage度量表示邮件移至 DLQ 的时间,而不是消息的原始发送时间。

  • 对于 FIFO 队列,消息不会移到队列的后面,因为这将违反 FIFO 顺序保证。相反,如果配置了 DLQ,则该消息将发送到 DLQ;否则,它将阻塞该消息组,直到成功删除或到期。

报告标准:如果队列处于活动状态,则报告非负值。

单位:

有效统计数据:平均值、最小值、最大值、总计、数据样本(在 Amazon SQS 控制台中显示为样本数)

ApproximateNumberOfGroupsWithInflightMessages 包含传输中消息的消息组的大致数量,其中,已被使用者从队列中接收但尚未从队列中删除的消息被视为传输中消息。该指标可以帮助您通过增加 FIFO 消息组或扩大使用者规模来排查问题和优化 FIFO 队列吞吐量。

报告标准:如果队列处于活动状态,则报告非负值。

单位:计数

有效统计数据:平均值、最小值、最大值、总计、数据样本(在 Amazon SQS 控制台中显示为样本数)

有关当前 FIFO 吞吐量和传输中消息的数量限制,请参阅Amazon SQS 消息配额
ApproximateNumberOfMessagesDelayed 队列中延迟且无法立即读取的消息数量。如果队列被配置为延迟队列,或者使用了延迟参数来发送消息,则会出现这种情况。

报告标准:如果队列处于活动状态,则报告非负值。

单位:计数

有效统计数据:平均值、最小值、最大值、总计、数据样本(在 Amazon SQS 控制台中显示为样本数)

ApproximateNumberOfMessagesNotVisible 处于空中状态的消息的数量。如果消息已发送到客户端,但尚未删除或尚未到达其可见性窗口末尾,则消息被视为处于飞行状态

报告标准:如果队列处于活动状态,则报告非负值。

单位:计数

有效统计数据:平均值、最小值、最大值、总计、数据样本(在 Amazon SQS 控制台中显示为样本数)

ApproximateNumberOfMessagesVisible 要处理的消息数。

报告标准:如果队列处于活动状态,则报告非负值。

单位:计数

有效统计数据:平均值、最小值、最大值、总计、数据样本(在 Amazon SQS 控制台中显示为样本数)

发送给流程的消息数量没有限制,但是您可以将此积压限制在保留期内。
NumberOfEmptyReceives¹ 未返回消息的 ReceiveMessage API 调用数量。

报告标准:如果队列处于活动状态,则报告非负值。

单位:计数

有效统计数据:平均值、最小值、最大值、总计、数据样本(在 Amazon SQS 控制台中显示为样本数)

NumberOfDeduplicatedSentMessages 发送到队列中并且已删除重复数据的消息数。该指标有助于确定创建者是否向 Amazon SQS FIFO 队列发送了重复的消息。

报告标准:如果队列处于活动状态,则报告非负值。

单位:计数

有效统计数据:平均值、最小值、最大值、总计、数据样本(在 Amazon SQS 控制台中显示为样本数)

NumberOfMessagesDeleted¹ 从队列删除的消息数量。

报告标准:如果队列处于活动状态,则报告非负值。

单位:计数

有效统计数据:平均值、最小值、最大值、总计、数据样本(在 Amazon SQS 控制台中显示为样本数)

Amazon SQS 会针对使用有效接收句柄的每一次成功删除操作(包括删除重复项)发布 NumberOfMessagesDeleted 指标。以下情形可能会使 NumberOfMessagesDeleted 指标值高于预期:
  • 在属于相同消息的不同接收句柄上调用 DeleteMessage 操作:如果该消息未在可见性超时过期之前处理,则该消息将对其他可对其执行处理和再次删除操作的使用者可用,从而使 NumberOfMessagesDeleted 指标值增大。

  • 在相同接收句柄上调用 DeleteMessage 操作:如果该信息已被处理和删除,但是您若使用相同的接收句柄再次调用 DeleteMessage 操作,将返回一个成功状态,使 NumberOfMessagesDeleted 指标值增大。

NumberOfMessagesReceived¹ 调用 ReceiveMessage 操作返回的消息数量。

报告标准:如果队列处于活动状态,则报告非负值。

单位:计数

有效统计数据:平均值、最小值、最大值、总计、数据样本(在 Amazon SQS 控制台中显示为样本数)

NumberOfMessagesSent¹ 添加到队列的消息数量。

如果您手动向 DLQ 发送消息,则该消息会被该NumberOfMessagesSent指标捕获。但是,如果消息由于处理尝试失败(例如,由于超过而自动移动maxReceiveCount)而发送到 DLQ,则该指标不会捕获该消息。因此,NumberOfMessagesSent和的值可能会NumberOfMessagesReceived有所不同。

报告标准:如果队列处于活动状态,则报告非负值。

单位:计数

有效统计数据:平均值、最小值、最大值、总计、数据样本(在 Amazon SQS 控制台中显示为样本数)

SentMessageSize¹ 添加到队列的消息大小。

报告标准:如果队列处于活动状态,则报告非负值。

单位:字节

有效统计数据:平均值、最小值、最大值、总计、数据样本(在 Amazon SQS 控制台中显示为样本数)

注意

直到至少一条消息发送至相应的队列之前,SentMessageSize 在 CloudWatch 控制台中不会显示为可用指标。

¹ 这些指标是从服务角度计算的,可能包括重试。不要依赖这些指标的绝对值,也不要使用它们来估算当前队列状态。

死信队列 (DLQs) 和指标 CloudWatch

使用时 DLQs,重要的是要了解 Amazon SQS 指标的行为方式:

  • NumberOfMessagesSent— 此指标在以下方面的行为有所不同: DLQs

    • 手动发送-此指标捕获手动发送到 DLQ 的邮件。

    • 自动重新驱动-此指标捕获由于处理失败而自动移至 DLQ 的邮件。因此,NumberOfMessagesSentNumberOfMessagesReceived指标可能会显示出差异。 DLQs

  • 推荐的指标 DLQs-要监控 DLQ 的状态,请使用该ApproximateNumberOfMessagesVisible指标。此指标指示 DLQ 中当前可供处理的消息数量。

Amazon SQS 指标的维度

Amazon SQS 发送到 CloudWatch 的唯一维度是。QueueName这表示所有可用统计信息会通过 QueueName 进行筛选。