

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

# 亚马逊 SQS 的可用 CloudWatch 指标
<a name="sqs-available-cloudwatch-metrics"></a>

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

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

## Amazon SQS 指标
<a name="sqs-metrics"></a>

Amazon SQS 会自动在命名空间 CloudWatch下向[`AWS/SQS`亚马逊](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)发布运营指标。这些指标可帮助您监控队列运行状况和性能。由于 SQS 的分布式特性，许多值都是近似值，但对于大多数运营决策来说足够准确。

**注意**  
仅当队列处于活动状态时，所有指标才会输出非负值。
有些指标（例如 `SentMessageSize`）要等到至少发送一条消息后才会输出。


| 指标 | 说明 | 单位 | 报告行为 | 关键说明 | 
| --- | --- | --- | --- | --- | 
| ApproximateAgeOfOldestMessage | 队列中最早的未处理消息的期限。 | 秒 | 报告队列中是否至少包含一条活动消息。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 
| ApproximateNumberOfGroupsWithInflightMessages | 仅适用于 FIFO。包含一条或多条传输中消息的消息组数量。 | 计数 | 报告 FIFO 队列是否处于活动状态。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 
| ApproximateNumberOfMessagesDelayed |  队列中延迟且无法立即检索的消息数量。  | 计数 | 报告队列中是否存在延迟消息。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 
| ApproximateNumberOfMessagesNotVisible | 已接收但尚未删除或到期的传输中消息数量。 | 计数 | 报告是否存在传输中消息。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 
| ApproximateNumberOfMessagesVisible | 当前可供检索和处理的消息数量。 | 计数 | 报告队列是否处于活动状态。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 
| NumberOfEmptyReceives¹ | 未返回任何消息的 [ReceiveMessage](https://docs.amazonaws.cn/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)API 调用次数。 | 计数 | 在接收操作期间报告。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 
| NumberOfDeduplicatedSentMessages | 仅适用于 FIFO。经过重复数据删除且未添加到队列的已发送消息数量。 | 计数 | 报告是否检测到重复的 MessageDeduplicationId 值或内容。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 
| NumberOfMessagesDeleted¹ |  从队列中成功删除的消息数量。  | 计数 | 报告每个经过有效接收处理的删除请求。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 
| NumberOfMessagesReceived¹ | [ReceiveMessage](https://docs.amazonaws.cn/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)API 返回的消息数量。 | 计数 | 在接收操作期间报告。 |  [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html)  | 
|  NumberOfMessagesSent¹ | 成功添加到队列的消息数量。 | 计数 | 报告每次成功手动发送。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 
|  SentMessageSize¹  |  成功发送到队列的消息的大小。  | 字节 | 至少发送一条消息后才会输出。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 
|  ApproximateNumberOfNoisyGroups | 公平队列中被视为嘈杂邻居的消息组的数量。嘈杂消息组表示多租户队列中的嘈杂邻居租户。 | 计数 | [如果队列处于活动状态](monitoring-using-cloudwatch.md)，则报告非负值。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 
|  ApproximateNumberOfMessagesVisibleInQuietGroups | 可见消息数量，不包括来自嘈杂消息组的消息。 | 计数 | [如果队列处于活动状态](monitoring-using-cloudwatch.md)，则报告非负值。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 
|  ApproximateNumberOfMessagesNotVisibleInQuietGroups | 传输中消息数量，不包括来自嘈杂消息组的消息。 | 计数 | [如果队列处于活动状态](monitoring-using-cloudwatch.md)，则报告非负值。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 
|  ApproximateNumberOfMessagesDelayedInQuietGroups | 延迟且无法立即读取的消息数量，不包括来自嘈杂消息组的消息。如果队列被配置为[延迟队列](sqs-delay-queues.md)，或者发送消息时使用了延迟参数，则会出现延迟消息。 | 计数 | [如果队列处于活动状态](monitoring-using-cloudwatch.md)，则报告非负值。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 
|  ApproximateAgeOfOldestMessageInQuietGroups | 队列中最早的未删除消息的期限，不包括来自嘈杂消息组的消息。 | 秒 | [如果队列处于活动状态](monitoring-using-cloudwatch.md)，则报告非负值。 | [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) | 

¹ 这些指标反映的是系统级别的活动，可能包括重试、重复或延迟消息。如果不考虑消息生命周期行为，请勿使用原始计数来估算实时队列状态。

## 死信队列 (DLQs) 和指标 CloudWatch
<a name="dlq-cloudwatch-metrics"></a>

使用时 DLQs，重要的是要了解 Amazon SQS 指标的行为方式：
+ **`NumberOfMessagesSent`**— 此指标在以下方面的行为有所不同： DLQs
  + **手动发送** – 此指标将捕获手动发送到 DLQ 的消息。
  + **自动重新驱动** – 此指标**不**捕获由于处理失败而自动移到 DLQ 的消息。因此，`NumberOfMessagesSent`和`NumberOfMessagesReceived`指标可能会显示出差异。 DLQs
+ **推荐的指标 DLQs**-要监控 DLQ 的状态，请使用该`ApproximateNumberOfMessagesVisible`指标。此指标表示 DLQ 中当前可供处理的消息数量。

## 公平的队列和 CloudWatch 指标
<a name="fair-queues-cloudwatch-metrics"></a>

当您使用[公平队列](sqs-fair-queues.md)时，Amazon SQS 会输出以下额外指标：
+ `ApproximateNumberOfNoisyGroups`
+ `ApproximateNumberOfMessagesVisibleInQuietGroups`
+ `ApproximateNumberOfMessagesNotVisibleInQuietGroups`
+ `ApproximateNumberOfMessagesDelayedInQuietGroups`
+ `ApproximateAgeOfOldestMessageInQuietGroups`

**注意**  
每个 `QuietGroup` 指标都是等效标准队列级别 `Approximate` 指标的子集，但不包括来自嘈杂邻居组的消息。

**嘈杂组**  
嘈杂消息组表示多租户队列中的嘈杂邻居租户。

**安静组**  
嘈杂组以外的消息组。

**观察 SQS 公平队列行为**

要监控 Amazon SQS 公平队列的影响，您可以将 `Approximate..InQuietGroups` 指标与标准队列级别指标进行比较。在特定租户的流量激增期间，队列级别的一般指标可能会显示积压的消息增加或消息停留时间延长。但是，如果单独查看安静组，您可以确定大多数非嘈杂消息组或租户都没有受到影响，并估算出受影响的消息组总数。

 虽然通过这些新指标可以了解 Amazon SQS 公平队列行为，但了解哪个特定租户导致了负载问题可能会有所帮助。[Amazon CloudWatch 贡献者见解](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/ContributorInsights.html)允许您查看有关前 N 个贡献者、独立贡献者总数及其使用情况的指标。这在处理数千个租户的场景中特别有用，否则在输出传统指标时会导致高基数数据（和成本）。

 有关公平队列监控配置的示例，请参阅中的示例[GitHub](https://github.com/aws-samples/sample-amazon-sqs-fair-queues)。

## Amazon SQS 指标的维度
<a name="sqs-metric-dimensions"></a>

Amazon SQS 指标 CloudWatch 使用单一维度:. **`QueueName`** 所有指标数据均按队列名称进行分组和筛选。

## 监控提示
<a name="monitoring-tips"></a>

使用关键指标和 CloudWatch 警报有效地监控 SQS，以检测队列积压、优化性能并保持在服务限制之内。
+ 根据 catch 设置[CloudWatch 警报](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)`ApproximateNumberOfMessagesVisible`以捕捉待办事项增长情况。
+ 通过监控 `NumberOfEmptyReceives` 来调整轮询频率并降低 API 成本。
+ 在 FIFO 队列中使用 `ApproximateNumberOfGroupsWithInflightMessages` 来诊断吞吐量限制。
+ 查看 [SQS 配额](sqs-quotas.md)以了解指标阈值和服务限制。