

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

# AWS SDK for Java 2.x：全面的指标参考
<a name="metrics-list"></a>

借助 AWS SDK for Java 2.x，您可以从应用程序中的服务客户端收集指标，然后将这些指标发布（输出）到 [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)。

这些表列出了您可以收集的指标以及任何 HTTP 客户端使用要求。

有关为 SDK 启用和配置指标的更多信息，请参阅[启用 SDK 指标](metrics.md)。

## 每次请求收集的指标
<a name="metrics-perrequest"></a>


| 指标名称 | 说明 | Type | 
| --- | --- | --- | 
| ApiCallDuration | API 调用的持续时间。这包括所有已发起的调用尝试。 | 持续时间\* | 
| ApiCallSuccessful | 如果 API 调用成功则为 true，否则为 false。 | 布尔值 | 
| CredentialsFetchDuration | 获取 API 调用的签名凭证的持续时间。 | 持续时间\* | 
| EndpointResolveDuration | 解析 API 调用所用端点的持续时间。 | 持续时间\* | 
| MarshallingDuration | 将 SDK 请求封送到 HTTP 请求的持续时间。 | 持续时间\* | 
| OperationName | 所调用服务操作的名称。 | 字符串 | 
| RetryCount | SDK 在执行请求时自动重试的次数。0 表示该请求第一次就成功了，没有进行任何重试。<br />有关配置重试行为的更多信息，请参阅[重试策略](retry-strategy.md#retry-strategies)。 | 整数 | 
| ServiceId | 服务的唯一 ID。 | 字符串 | 
| ServiceEndpoint | 服务的端点。 | URI | 
| TokenFetchDuration | 获取 API 调用的签名凭证的持续时间。 | 持续时间\* | 

\*[java.time.Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html)。

## 为每次请求尝试收集的指标
<a name="metrics-perattempt"></a>

每个 API 调用可能需要多次尝试才能收到响应。每次尝试都会收集这些指标。

### 核心指标
<a name="metrics-perattempt-core"></a>


| 指标名称 | 说明 | Type | 
| --- | --- | --- | 
| AwsExtendedRequestId | 服务请求的扩展请求 ID。 | 字符串 | 
| AwsRequestId | 服务请求的请求 ID。 | 字符串 | 
| BackoffDelayDuration | 在这次 API 调用尝试之前 SDK 已等待的持续时间。该值基于客户端上 `[https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/retries/api/BackoffStrategy.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/retries/api/BackoffStrategy.html)` 设置。有关更多信息，请参阅本指南的[重试策略](retry-strategy.md#retry-strategies)部分。 | 持续时间\* | 
| ErrorType | 进行调用尝试时发生的错误类型。<br />以下是可能的值：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/sdk-for-java/latest/developer-guide/metrics-list.html) | 字符串 | 
| ReadThroughput | 客户端的读取吞吐量，定义为 `NumberOfResponseBytesRead / (TTLB - TTFB)`。此值以每秒字节数为单位。<br />请注意，此指标仅测量从 `ResponseTransformer` 或 `AsyncResponseTransformer` 内读取的字节。计算中不包括在转换器外部读取的数据（例如，当响应流作为转换器的结果返回时）。 | 双精度 | 
| WriteThroughput | 客户端的写入吞吐量，定义为`RequestBytesWritten / (LastByteWrittenTime - FirstByteWrittenTime)`。此值以每秒字节数为单位。<br />该指标衡量 SDK 向 HTTP 客户端提供请求正文的速率。它不包括连接设置、TLS 握手时间和服务器处理时间。仅针对具有流媒体主体（例如 S3）的请求报告此指标 PutObject。<br />请注意，此指标未考虑 HTTP 客户端层中的缓冲情况。如果 HTTP 客户端在发送数据之前缓冲数据，则实际网络传输速率可能会更低。该指标代表网络吞吐量的上限。 | 双精度 | 
| ServiceCallDuration | 连接到服务（或从连接池中获取连接）、发送序列化请求和接收初始响应（例如 HTTP 状态码和标头）的持续时间。这不包括从服务中读取整个响应的时间。 | 持续时间\* | 
| SigningDuration | 签署 HTTP 请求的持续时间。 | 持续时间\* | 
| TimeToFirstByte | 从将 HTTP 请求发送到服务（包括获取连接），到接收响应中标头的第一个字节的持续时间。 | 持续时间\* | 
| TimeToLastByte | 从将 HTTP 请求发送到服务（包括获取连接），到接收响应的最后一个字节的持续时间。<br />请注意，对于 APIs 返回的流媒体响应，此指标跨越了直到`ResponseTransformer`或`AsyncResponseTransformer`完成的时间。 | 持续时间\* | 
| UnmarshallingDuration | 将 HTTP 响应解组到 SDK 响应的持续时间。<br />注意：对于流式操作，这不包括读取响应有效载荷的时间。 | 持续时间\* | 

\*[java.time.Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html)。

### HTTP 指标
<a name="metrics-perattempt-http"></a>


| 指标名称 | 说明 | Type | 需要 HTTP 客户端\* | 
| --- | --- | --- | --- | 
| AvailableConcurrency | 在不与目标服务器建立新连接的情况下，HTTP 客户端支持的额外并发请求数。<br />对于 HTTP/1 操作，这等于与服务建立的空闲 TCP 连接的数量。对于 HTTP/2 操作，这等于空闲流的数量。<br />注意：此值因 HTTP 客户端实现而异：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/sdk-for-java/latest/developer-guide/metrics-list.html)<br />该值的范围限定于单个 HTTP 客户端实例，不包括同一 JVM 中其他 HTTP 客户端的并发。 | 整数 | Apache、Netty、CRT | 
| ConcurrencyAcquireDuration | 从连接池中获取通道的持续时间。<br />对于 HTTP/1 操作，通道等于 TCP 连接。对于 HTTP/2 操作，通道等于 HTTP/2 流通道。<br />获取新通道可能包括以下时间：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/sdk-for-java/latest/developer-guide/metrics-list.html) | 持续时间\* | Apache、Netty、CRT | 
| HttpClientName | 用于请求的 HTTP 的名称。 | 字符串 | Apache、Netty、CRT | 
| HttpStatusCode | HTTP 响应的状态代码。 | 整数 | 任何 | 
| LeasedConcurrency | HTTP 客户端当前执行的请求数。<br />对于 HTTP/1 操作，这等于与服务建立的活跃 TCP 连接的数量（不包括空闲连接）。对于 HTTP/2 操作，这等于服务的活动 HTTP 流的数量（不包括空闲流容量）。<br />注意：此值因 HTTP 客户端实现而异：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/sdk-for-java/latest/developer-guide/metrics-list.html)<br />该值的范围限定于单个 HTTP 客户端实例，不包括同一 JVM 中其他 HTTP 客户端的并发。 | 整数 | Apache、Netty、CRT | 
| LocalStreamWindowSize | 执行此请求的流的本地 HTTP/2 窗口大小（以字节为单位）。 | 整数 | Netty | 
| MaxConcurrency | HTTP 客户端支持的最大并发请求数。<br />对于 HTTP/1 操作，这等于 HTTP 客户端可以汇集的最大 TCP 连接数。对于 HTTP/2 操作，这等于 HTTP 客户端可以汇集的最大流数。<br />注意：此值因 HTTP 客户端实现而异：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/sdk-for-java/latest/developer-guide/metrics-list.html)<br />该值的范围限定于单个 HTTP 客户端实例，不包括同一 JVM 中其他 HTTP 客户端的并发。 | 整数 | Apache、Netty、CRT | 
| PendingConcurrencyAcquires | 等待 HTTP 客户端并发的请求数。<br />对于 HTTP/1 操作，这等于等待 TCP 连接建立或从连接池返回的请求数。对于 HTTP/2 操作，这等于等待来自连接池的新流（可能还有新 HTTP/2 连接）的请求数。<br />注意：此值因 HTTP 客户端实现而异：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/sdk-for-java/latest/developer-guide/metrics-list.html)<br />该值的范围限定于单个 HTTP 客户端实例，不包括同一 JVM 中其他 HTTP 客户端的并发。 | 整数 | Apache、Netty、CRT | 
| RemoteStreamWindowSize | 执行此请求的流的远程 HTTP/2 窗口大小（以字节为单位）。 | 整数 | Netty | 

\*[java.time.Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html)。

列中所用术语解释：
+ Apache：基于 Apache 的 HTTP 客户端（`[ApacheHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache/ApacheHttpClient.html)`）
+ Netty：基于 Netty 的 HTTP 客户端（`[NettyNioAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/nio/netty/NettyNioAsyncHttpClient.html)`）
+ CRT： AWS 基于 CRT 的 HTTP 客户端 () `[AwsCrtAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.html)`
+ 任意：指标数据的收集不依赖于 HTTP 客户端；这包括 URLConnection基于的 HTTP 客户端 (`[UrlConnectionHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/urlconnection/UrlConnectionHttpClient.html)`)