

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

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

\$1[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)部分。  |  持续时间\$1  | 
| ErrorType |  进行调用尝试时发生的错误类型。 以下是可能的值： [\[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)`。此值以每秒字节数为单位。 请注意，此指标仅测量从 `ResponseTransformer` 或 `AsyncResponseTransformer` 内读取的字节。计算中不包括在转换器外部读取的数据（例如，当响应流作为转换器的结果返回时）。  | 双精度 | 
| WriteThroughput |  客户端的写入吞吐量，定义为`RequestBytesWritten / (LastByteWrittenTime - FirstByteWrittenTime)`。此值以每秒字节数为单位。 该指标衡量 SDK 向 HTTP 客户端提供请求正文的速率。它不包括连接设置、TLS 握手时间和服务器处理时间。仅针对具有流媒体主体（例如 S3）的请求报告此指标 PutObject。 请注意，此指标未考虑 HTTP 客户端层中的缓冲情况。如果 HTTP 客户端在发送数据之前缓冲数据，则实际网络传输速率可能会更低。该指标代表网络吞吐量的上限。  | 双精度 | 
|  ServiceCallDuration  |  连接到服务（或从连接池中获取连接）、发送序列化请求和接收初始响应（例如 HTTP 状态码和标头）的持续时间。这不包括从服务中读取整个响应的时间。  |  持续时间\$1  | 
|  SigningDuration  |  签署 HTTP 请求的持续时间。  |  持续时间\$1  | 
| TimeToFirstByte | 从将 HTTP 请求发送到服务（包括获取连接），到接收响应中标头的第一个字节的持续时间。 | 持续时间\$1 | 
| TimeToLastByte |  从将 HTTP 请求发送到服务（包括获取连接），到接收响应的最后一个字节的持续时间。 请注意，对于 APIs 返回的流媒体响应，此指标跨越了直到`ResponseTransformer`或`AsyncResponseTransformer`完成的时间。  | 持续时间\$1 | 
|  UnmarshallingDuration  |  将 HTTP 响应解组到 SDK 响应的持续时间。 注意：对于流式操作，这不包括读取响应有效载荷的时间。  |  持续时间\$1  | 

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

\$1[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)`)