

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Publikasikan metrik SDK dari AWS SDK for Java 2.x
<a name="metrics"></a>

Dengan AWS SDK for Java 2.x Anda dapat mengumpulkan metrik tentang klien layanan dan permintaan dalam aplikasi Anda, menganalisis output di Amazon CloudWatch Logs, dan kemudian menindaklanjutinya.

Secara default, koleksi metrik dinonaktifkan di SDK. Topik ini membantu Anda mengaktifkan dan mengonfigurasinya.

## Memulai dengan metrik SDK
<a name="getting-started-with-metrics"></a>

Untuk mengaktifkan pengumpulan metrik dalam aplikasi Anda, pilih implementasi `[MetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/MetricPublisher.html)` antarmuka yang sesuai berdasarkan kasus penggunaan Anda dan ikuti petunjuk penyiapan terperinci:

**Untuk aplikasi yang berjalan lama:**
+ Gunakan `[CloudWatchMetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/cloudwatch/CloudWatchMetricPublisher.html)`
+ Lihat [Menerbitkan metrik SDK dari aplikasi yang sudah berjalan lama](metric-pub-impl-cwmp.md) untuk petunjuk penyiapan lengkap, contoh kode, dan opsi konfigurasi.

**Untuk AWS Lambda fungsi:**
+ Gunakan `[EmfMetricLoggingPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/emf/EmfMetricLoggingPublisher.html)`
+ Lihat [Menerbitkan metrik SDK untuk AWS Lambda fungsi untuk](metric-pub-impl-emf.md) petunjuk penyiapan lengkap, dependensi, dan konfigurasi khusus Lambda.

**Untuk pemecahan masalah dan keluaran konsol:**
+ Gunakan `[LoggingMetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/LoggingMetricPublisher.html)`
+ Lihat [Metrik SDK keluaran ke konsol untuk pengembangan dan debugging untuk](metric-pub-impl-logging.md) petunjuk penyiapan, opsi pemformatan, dan contoh untuk pengembangan dan pemecahan masalah lokal.

## Pratinjau implementasi cepat
<a name="quick-implementation-preview"></a>

Inilah yang mengaktifkan metrik untuk setiap kasus penggunaan:

**Aplikasi yang berjalan lama:**

```
MetricPublisher metricsPub = CloudWatchMetricPublisher.create();
DynamoDbClient ddb = DynamoDbClient.builder()
    .overrideConfiguration(c -> c.addMetricPublisher(metricsPub))
    .build();
```

**Fungsi Lambda:**

```
EmfMetricLoggingPublisher emfPublisher = EmfMetricLoggingPublisher.builder()
    .namespace("MyApp")
    .build();
DynamoDbClient dynamoDb = DynamoDbClient.builder()
    .overrideConfiguration(c -> c.addMetricPublisher(emfPublisher))
    .build();
```

**Pengembangan dan debugging:**

```
MetricPublisher loggingPublisher = LoggingMetricPublisher.create();
S3Client s3 = S3Client.builder()
    .overrideConfiguration(c -> c.addMetricPublisher(loggingPublisher))
    .build();
```

## Batasan metrik klien S3 AWS berbasis CRT
<a name="metrics-using-s3-crt-based-client"></a>

[Klien S3 AWS berbasis CRT](crt-based-s3-client.md) saat ini tidak mendukung pengumpulan metrik SDK. Builder untuk instance klien S3 AWS berbasis CRT, [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3CrtAsyncClientBuilder.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3CrtAsyncClientBuilder.html), tidak menyediakan metode untuk mengonfigurasi penerbit metrik.

## Kapan metrik tersedia?
<a name="when-are-metrics-available"></a>

Metrik umumnya tersedia dalam waktu 5-10 menit setelah SDK for Java memancarkannya. Untuk akurasi dan up-to-date metrik, periksa Cloudwatch setidaknya 10 menit setelah memancarkan metrik dari aplikasi Java Anda. 

## Informasi apa yang dikumpulkan?
<a name="what-information-is-collected"></a>

Koleksi metrik meliputi:
+ Jumlah permintaan API, termasuk apakah mereka berhasil atau gagal
+ Informasi tentang panggilan Layanan AWS Anda dalam permintaan API Anda, termasuk pengecualian yang dikembalikan
+ Durasi untuk berbagai operasi seperti Marshalling, Signing, dan permintaan HTTP
+ Metrik klien HTTP, seperti jumlah koneksi terbuka, jumlah permintaan yang tertunda, dan nama klien HTTP yang digunakan

**catatan**  
Metrik yang tersedia bervariasi menurut klien HTTP.

Untuk daftar lengkapnya, lihat [Metrik klien layanan](metrics-list.md).

## Bagaimana saya bisa menggunakan informasi ini?
<a name="how-can-i-use-this-information"></a>

Anda dapat menggunakan metrik yang dikumpulkan SDK untuk memantau klien layanan dalam aplikasi Anda. Anda dapat melihat tren penggunaan secara keseluruhan, mengidentifikasi anomali, meninjau pengecualian klien layanan yang dikembalikan, atau menggali untuk memahami masalah tertentu. Menggunakan Amazon CloudWatch Logs, Anda juga dapat membuat alarm untuk memberi tahu Anda segera setelah aplikasi Anda mencapai kondisi yang Anda tentukan.

Untuk informasi selengkapnya, lihat [Menggunakan Metrik CloudWatch Log Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) dan [Menggunakan Alarm CloudWatch Log Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) di [Panduan Pengguna CloudWatch Log Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/).

# Publikasikan metrik SDK dari aplikasi yang berjalan lama menggunakan AWS SDK for Java 2.x
<a name="metric-pub-impl-cwmp"></a>

Karena `[CloudWatchMetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/cloudwatch/CloudWatchMetricPublisher.html)` implementasi menggabungkan dan mengunggah metrik secara berkala ke Amazon CloudWatch dengan penundaan, penggunaannya paling cocok untuk aplikasi yang berjalan lama. 

Pengaturan default penerbit metrik dimaksudkan untuk meminimalkan penggunaan dan CloudWatch biaya memori, sambil tetap memberikan sejumlah wawasan yang berguna ke dalam data metrik.

## Set-up
<a name="prerequisitesmetrics"></a>

Sebelum Anda dapat mengaktifkan dan menggunakan metrik dengan menggunakan`CloudWatchMetricPublisher`, selesaikan langkah-langkah berikut.

### Langkah 1: Tambahkan ketergantungan yang diperlukan
<a name="cwmp-set-up-deps"></a>

Konfigurasikan dependensi proyek Anda (misalnya, di `build.gradle` file `pom.xml` atau Anda) untuk menggunakan versi `2.14.0` atau versi yang lebih baru. AWS SDK untuk Java

Sertakan `cloudwatch-metric-publisher` ArtifactID dengan `2.14.0` nomor versi atau yang lebih baru dalam dependensi proyek Anda.

Contoh:

```
<project>
  <dependencyManagement>
   <dependencies>
      <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>bom</artifactId>
        <version>[2.30.11](https://central.sonatype.com/artifact/software.amazon.awssdk/bom)</version>  <!-- Navigate the link to see the latest version. -->
        <type>pom</type>
        <scope>import</scope>
      </dependency>
   </dependencies>
  </dependencyManagement>
  <dependencies>
   <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>cloudwatch-metric-publisher</artifactId>
   </dependency>
  </dependencies>
</project>
```

### Langkah 2: Konfigurasikan izin yang diperlukan
<a name="cwmp-set-up-perms"></a>

Aktifkan `cloudwatch:PutMetricData` izin untuk identitas IAM yang digunakan oleh penerbit metrik untuk memungkinkan SDK for Java menulis metrik.

## Aktifkan metrik untuk permintaan tertentu
<a name="enable-metrics-for-a-specific-request"></a>

Kelas berikut menunjukkan cara mengaktifkan penerbit CloudWatch metrik untuk permintaan ke Amazon DynamoDB. Ini menggunakan konfigurasi penerbit metrik default.

```
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.metrics.publishers.cloudwatch.CloudWatchMetricPublisher;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.ListTablesRequest;

public class DefaultConfigForRequest {
    // Use one MetricPublisher for your application. It can be used with requests or service clients.
    static MetricPublisher metricsPub = CloudWatchMetricPublisher.create();

    public static void main(String[] args) {
        DynamoDbClient ddb = DynamoDbClient.create();
        // Publish metrics the for ListTables operation.
        ddb.listTables(ListTablesRequest.builder()
            .overrideConfiguration(c -> c.addMetricPublisher(metricsPub))
            .build());

        // Perform more work in your application.

        // A MetricsPublisher has its own lifecycle independent of any service client or request that uses it.
        // If you no longer need the publisher, close it to free up resources.
        metricsPub.close();  // All metrics stored in memory are flushed to CloudWatch.

        // Perform more work with the DynamoDbClient instance without publishing metrics.
        // Close the service client when you no longer need it.
        ddb.close();
    }
}
```

**penting**  
Pastikan aplikasi Anda memanggil `close` `[MetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/MetricPublisher.html)` instance ketika klien layanan tidak lagi digunakan. Kegagalan untuk melakukannya mengakibatkan kemungkinan kebocoran thread atau deskriptor file.

## Aktifkan metrik ringkasan untuk klien layanan tertentu
<a name="enable-metrics-for-a-specific-service-client"></a>

Cuplikan kode berikut menunjukkan cara mengaktifkan penerbit CloudWatch metrik dengan pengaturan default untuk klien layanan.

```
MetricPublisher metricsPub = CloudWatchMetricPublisher.create();

DynamoDbClient ddb = DynamoDbClient.builder()
          .overrideConfiguration(c -> c.addMetricPublisher(metricsPub))
          .build();
```

## Kustomisasi CloudWatch penerbit metrik
<a name="customize-metrics-publisher"></a>

Kelas berikut menunjukkan cara menyiapkan konfigurasi kustom untuk penerbit metrik untuk klien layanan tertentu. Kustomisasi termasuk memuat profil tertentu, menentukan AWS Wilayah tempat penerbit metrik mengirimkan permintaan, dan menyesuaikan seberapa sering penerbit mengirimkan metrik. CloudWatch

```
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.core.metrics.CoreMetric;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.metrics.publishers.cloudwatch.CloudWatchMetricPublisher;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;

import java.time.Duration;

public class CustomConfigForDDBClient {
    // Use one MetricPublisher for your application. It can be used with requests or service clients.
    static MetricPublisher metricsPub = CloudWatchMetricPublisher.builder()
        .cloudWatchClient(CloudWatchAsyncClient.builder()
            .region(Region.US_WEST_2)
            .credentialsProvider(ProfileCredentialsProvider.create("cloudwatch"))
            .build())
        .uploadFrequency(Duration.ofMinutes(5))
        .maximumCallsPerUpload(100)
        .namespace("ExampleSDKV2Metrics")
        .detailedMetrics(CoreMetric.API_CALL_DURATION)
        .build();

    public static void main(String[] args) {
        DynamoDbClient ddb = DynamoDbClient.builder()
            .overrideConfiguration(c -> c.addMetricPublisher(metricsPub))
            .build();
        // Publish metrics for DynamoDB operations.
        ddb.listTables();
        ddb.describeEndpoints();
        ddb.describeLimits();
        // Perform more work in your application.

        // A MetricsPublisher has its own lifecycle independent of any service client or request that uses it.
        // If you no longer need the publisher, close it to free up resources.
        metricsPub.close();  // All metrics stored in memory are flushed to CloudWatch.


        // Perform more work with the DynamoDbClient instance without publishing metrics.
        // Close the service client when you no longer need it.
        ddb.close();
    }
}
```

Kustomisasi yang ditampilkan dalam cuplikan sebelumnya memiliki efek sebagai berikut.
+ `cloudWatchClient`Metode ini memungkinkan Anda menyesuaikan CloudWatch klien yang digunakan untuk mengirim metrik. Dalam contoh ini, kami menggunakan wilayah yang berbeda dari default *us-east-1* di mana klien mengirimkan metrik. Kami juga menggunakan profil bernama yang berbeda, *cloudwatch*, yang kredensialnya akan digunakan untuk mengautentikasi permintaan. CloudWatch Kredensyal tersebut harus memiliki izin untuk. `cloudwatch:PutMetricData`
+ `uploadFrequency`Metode ini memungkinkan Anda menentukan seberapa sering penayang metrik mengunggah metrik. CloudWatch Defaultnya adalah sekali dalam satu menit.
+ `maximumCallsPerUpload`Metode ini membatasi jumlah panggilan yang dilakukan per unggahan. Defaultnya tidak terbatas.
+ Secara default, SDK for Java 2.x menerbitkan metrik di bawah namespace. `AwsSdk/JavaSdk2` Anda dapat menggunakan `namespace` metode ini untuk menentukan nilai yang berbeda.
+ Secara default, SDK menerbitkan metrik ringkasan. Metrik ringkasan terdiri dari rata-rata, minimum, maksimum, jumlah, dan jumlah sampel. Dengan menentukan satu atau beberapa metrik SDK dalam `detailedMetrics` metode, SDK menerbitkan data tambahan untuk setiap metrik. Data tambahan ini memungkinkan statistik persentil seperti p90 dan p99 yang dapat Anda kueri. CloudWatch Metrik terperinci sangat berguna untuk metrik latensi seperti`APICallDuration`, yang mengukur end-to-end latensi untuk permintaan klien SDK. Anda dapat menggunakan bidang `[CoreMetric](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/metrics/CoreMetric.html)` kelas untuk menentukan metrik SDK umum lainnya. 

**Langkah selanjutnya:** Jika Anda juga bekerja dengan fungsi Lambda, lihat [Menerbitkan metrik SDK untuk AWS Lambda fungsi untuk penerbitan metrik berbasis EMF](metric-pub-impl-emf.md).

# Publikasikan metrik SDK untuk AWS Lambda fungsi menggunakan AWS SDK for Java 2.x
<a name="metric-pub-impl-emf"></a>

Karena fungsi Lambda biasanya dijalankan selama milidetik hingga menit, setiap penundaan pengiriman metrik, yang terjadi dengan`CloudWatchMetricPublisher`, berisiko kehilangan data. 

`[EmfMetricLoggingPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/emf/EmfMetricLoggingPublisher.html)`memberikan pendekatan yang lebih cocok dengan segera menulis metrik sebagai entri log terstruktur dalam [CloudWatch Embedded Metric Format (EMF](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format.html)). `EmfMetricLoggingPublisher`bekerja di lingkungan eksekusi yang memiliki integrasi bawaan dengan Amazon CloudWatch Log seperti AWS Lambda dan Amazon Elastic Container Service.

## Set-up
<a name="metric-pub-impl-emf-set-up"></a>

Sebelum Anda dapat mengaktifkan dan menggunakan metrik dengan menggunakan`EmfMetricLoggingPublisher`, selesaikan langkah-langkah berikut.

### Langkah 1: Tambahkan ketergantungan yang diperlukan
<a name="metric-pub-impl-emf-set-up-deps"></a>

Konfigurasikan dependensi proyek Anda (misalnya, di `build.gradle` file `pom.xml` atau Anda) untuk menggunakan versi `2.30.3` atau versi yang lebih baru. AWS SDK untuk Java

Sertakan `emf-metric-logging-publisher` ArtifactID dengan `2.30.3` nomor versi atau yang lebih baru dalam dependensi proyek Anda.

Contoh:

```
<project>
  <dependencyManagement>
   <dependencies>
      <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>bom</artifactId>
        <version>[2.30.11](https://central.sonatype.com/artifact/software.amazon.awssdk/bom)</version>  <!-- Navigate the link to see the latest version. -->
        <type>pom</type>
        <scope>import</scope>
      </dependency>
   </dependencies>
  </dependencyManagement>
  <dependencies>
   <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>emf-metric-logging-publisher</artifactId>
   </dependency>
  </dependencies>
</project>
```

### Langkah 2: Konfigurasikan izin yang diperlukan
<a name="metric-pub-impl-emf-set-up-perm"></a>

Aktifkan `logs:PutLogEvents` izin untuk identitas IAM yang digunakan oleh penerbit metrik untuk memungkinkan SDK for Java menulis log berformat EMF.

### Langkah 3: Pengaturan logging
<a name="metric-pub-impl-emf-set-up-logger"></a>

Untuk memastikan pengumpulan metrik yang tepat, konfigurasikan logging Anda ke output ke konsol di `INFO` level atau lebih rendah (seperti`DEBUG`). Dalam `log4j2.xml` file Anda:

```
<Loggers>
  <Root level="WARN">
   <AppenderRef ref="ConsoleAppender"/>
  </Root>
  <Logger name="software.amazon.awssdk.metrics.publishers.emf.EmfMetricLoggingPublisher" level="INFO" />
</Loggers>
```

Lihat [topik logging](logging-slf4j.md) dalam panduan ini untuk informasi selengkapnya tentang cara menyiapkan `log4j2.xml` file. 

## Konfigurasikan dan gunakan `EmfMetricLoggingPublisher`
<a name="metric-pub-impl-emf-use"></a>

Kelas fungsi Lambda berikut pertama kali membuat dan mengonfigurasi `EmfMetricLoggingPublisher` instance dan kemudian menggunakannya dengan klien layanan Amazon DynamoDB:

```
public class GameIdHandler implements RequestHandler<Map<String, String>, String> {
    private final EmfMetricLoggingPublisher emfPublisher;
    private final DynamoDbClient dynamoDb;

    public GameIdHandler() {
        // Build the publisher. 
        this.emfPublisher = EmfMetricLoggingPublisher.builder()
                .namespace("namespace")
                .dimensions(CoreMetric.SERVICE_ID,
                        CoreMetric.OPERATION_NAME)
                .build();
        // Add the publisher to the client.
        this.dynamoDb = DynamoDbClient.builder()
                .overrideConfiguration(c -> c.addMetricPublisher(emfPublisher))
                .region(Region.of(System.getenv("AWS_REGION")))
                .build();
    }

    @Override
    public String handleRequest(Map<String, String> event, Context context) {
        Map<String, AttributeValue> gameItem = new HashMap<>();

        gameItem.put("gameId", AttributeValue.builder().s(event.get("id")).build());

        PutItemRequest putItemRequest = PutItemRequest.builder()
                .tableName("games")
                .item(gameItem)
                .build();

        dynamoDb.putItem(putItemRequest);

        return "Request handled";
    }
}
```

Ketika klien DynamoDB mengeksekusi `putItem` metode, secara otomatis menerbitkan metrik ke CloudWatch aliran log dalam format EMF. 

### Contoh peristiwa log EMF
<a name="emf-logged-output"></a>

Misalnya, jika Anda mengirim acara berikut ke fungsi GameHandler Lambda dengan logging dikonfigurasi seperti yang ditunjukkan sebelumnya:

```
{
  "id": "23456"
}
```

Setelah fungsi memproses acara, Anda menemukan dua peristiwa log yang terlihat mirip dengan contoh berikut. Objek JSON dalam acara kedua berisi data metrik SDK Java untuk `PutItem` operasi ke DynamoDB.

Saat CloudWatch menerima peristiwa log dalam format EMF, secara otomatis mem-parsing JSON terstruktur untuk mengekstrak data metrik. CloudWatch kemudian membuat metrik yang sesuai sambil menyimpan entri log asli di CloudWatch Log.

```
2025-07-11 15:58:30 [main] INFO  org.example.GameIdHandler:39 - Received map: {id=23456}

2025-07-11 15:58:34 [main] INFO  software.amazon.awssdk.metrics.publishers.emf.EmfMetricLoggingPublisher:43 - 
{
    "_aws": {
        "Timestamp": 1752249513975,
        "LogGroupName": "/aws/lambda/GameId",
        "CloudWatchMetrics": [
            {
                "Namespace": "namespace",
                "Dimensions": [
                    [
                        "OperationName",
                        "ServiceId"
                    ]
                ],
                "Metrics": [
                    {
                        "Name": "AvailableConcurrency"
                    },
                    {
                        "Name": "PendingConcurrencyAcquires"
                    },
                    {
                        "Name": "ServiceCallDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "EndpointResolveDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "MaxConcurrency"
                    },
                    {
                        "Name": "BackoffDelayDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "MarshallingDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "LeasedConcurrency"
                    },
                    {
                        "Name": "SigningDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "ConcurrencyAcquireDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "ApiCallSuccessful"
                    },
                    {
                        "Name": "RetryCount"
                    },
                    {
                        "Name": "UnmarshallingDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "ApiCallDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "CredentialsFetchDuration",
                        "Unit": "Milliseconds"
                    }
                ]
            }
        ]
    },
    "AvailableConcurrency": 0,
    "PendingConcurrencyAcquires": 0,
    "OperationName": "PutItem",
    "ServiceCallDuration": 1339,
    "EndpointResolveDuration": 81,
    "MaxConcurrency": 50,
    "BackoffDelayDuration": 0,
    "ServiceId": "DynamoDB",
    "MarshallingDuration": 181,
    "LeasedConcurrency": 1,
    "SigningDuration": 184,
    "ConcurrencyAcquireDuration": 83,
    "ApiCallSuccessful": 1,
    "RetryCount": 0,
    "UnmarshallingDuration": 85,
    "ApiCallDuration": 1880,
    "CredentialsFetchDuration": 138
}
```

[Dokumentasi API](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/emf/EmfMetricLoggingPublisher.Builder.html) untuk `EmfMetricLoggingPublisher.Builder` menampilkan opsi konfigurasi yang dapat Anda gunakan.

Anda juga dapat mengaktifkan pencatatan metrik EMF untuk satu permintaan seperti yang [ditunjukkan untuk. CloudWatchMetricPublisher](metric-pub-impl-cwmp.md#enable-metrics-for-a-specific-request)

**Langkah selanjutnya:** Untuk aplikasi yang berjalan lama, lihat [Menerbitkan metrik SDK dari aplikasi yang berjalan lama untuk CloudWatch penerbitan metrik](metric-pub-impl-cwmp.md) berbasis.

# Keluarkan metrik SDK ke konsol menggunakan AWS SDK for Java 2.x
<a name="metric-pub-impl-logging"></a>

`[LoggingMetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/LoggingMetricPublisher.html)`Implementasi menampilkan metrik langsung ke konsol aplikasi atau file log. Pendekatan ini sangat ideal untuk pengembangan, debugging, dan memahami metrik apa yang dikumpulkan SDK tanpa memerlukan layanan eksternal seperti Amazon. CloudWatch

Tidak seperti `CloudWatchMetricPublisher` dan`EmfMetricLoggingPublisher`, `LoggingMetricPublisher` menyediakan output langsung tanpa penundaan atau dependensi eksternal. Ini membuatnya sempurna untuk skenario pengembangan dan pemecahan masalah lokal.

## Kapan harus menggunakan LoggingMetricPublisher
<a name="logging-metric-publisher-when-to-use"></a>

Gunakan `LoggingMetricPublisher` saat Anda perlu:
+ Debug koleksi metrik selama pengembangan
+ Memahami metrik apa yang dikumpulkan SDK untuk operasi Anda
+ Memecahkan masalah kinerja secara lokal
+ Uji pengumpulan metrik tanpa dependensi layanan eksternal
+ Lihat metrik segera di konsol atau file log

**catatan**  
`LoggingMetricPublisher`tidak direkomendasikan untuk lingkungan produksi di mana Anda memerlukan penyimpanan metrik dan kemampuan analisis yang persisten.

## Siapkan pencatatan konsol untuk metrik
<a name="logging-metric-publisher-setup"></a>

Untuk melihat `LoggingMetricPublisher` output, konfigurasikan framework logging Anda untuk menampilkan pesan `INFO` level. `log4j2.xml`Konfigurasi berikut memastikan metrik muncul di konsol Anda:

```
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="ConsoleAppender"/>
        </Root>
        <!-- Ensure LoggingMetricPublisher output appears. -->
        <Logger name="software.amazon.awssdk.metrics.LoggingMetricPublisher" level="INFO" />
    </Loggers>
</Configuration>
```

Konfigurasi ini mengarahkan SDK ke metrik keluaran ke konsol Anda di level tersebut. `INFO` Konfigurasi `LoggingMetricPublisher` logger memastikan bahwa keluaran metrik muncul bahkan jika root logger Anda menggunakan level yang lebih tinggi seperti `WARN` atau. `ERROR`

## Mengaktifkan metrik konsol untuk klien layanan
<a name="logging-metric-publisher-basic-usage"></a>

Contoh berikut menunjukkan cara membuat `LoggingMetricPublisher` dan menggunakannya dengan klien Amazon Simple Storage Service:

```
import software.amazon.awssdk.metrics.LoggingMetricPublisher;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;

// Create a LoggingMetricPublisher with default settings.
MetricPublisher metricPublisher = LoggingMetricPublisher.create();

// Add the publisher to your service client.
S3Client s3Client = S3Client.builder()
    .region(Region.US_EAST_1)
    .overrideConfiguration(config -> config.addMetricPublisher(metricPublisher))
    .build();

// Make requests - metrics will appear in your console.
s3Client.listBuckets();

// Clean up resources.
metricPublisher.close();
s3Client.close();
```

## Pilih format keluaran metrik
<a name="logging-metric-publisher-formatting-options"></a>

`LoggingMetricPublisher`mendukung dua format output:
+ **Format PLAIN (default):** Menghasilkan metrik sebagai entri satu baris yang ringkas
+ **Format PRETTY:** Menghasilkan metrik dalam format multi-baris yang dapat dibaca manusia

Contoh berikut menunjukkan cara menggunakan format PRETTY untuk memudahkan pembacaan selama pengembangan:

```
import org.slf4j.event.Level;
import software.amazon.awssdk.metrics.LoggingMetricPublisher;

// Create a LoggingMetricPublisher with PRETTY format.
MetricPublisher prettyMetricPublisher = LoggingMetricPublisher.create(
    Level.INFO, 
    LoggingMetricPublisher.Format.PRETTY
);

// Use with your service client.
S3Client s3Client = S3Client.builder()
    .region(Region.US_EAST_1)
    .overrideConfiguration(config -> config.addMetricPublisher(prettyMetricPublisher))
    .build();
```

## Contoh lengkap
<a name="logging-metric-publisher-complete-example"></a>

Contoh berikut menunjukkan penggunaan `LoggingMetricPublisher` dalam dua cara:
+ Di tingkat klien layanan
+ Untuk satu permintaan

```
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.event.Level;
import software.amazon.awssdk.metrics.LoggingMetricPublisher;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.ListBucketsRequest;
import software.amazon.awssdk.services.s3.model.ListBucketsResponse;

/**
 * Demonstrates how to use LoggingMetricPublisher with AWS S3 SDK for Java 2.x.
 * <p>
 * This demo focuses on the S3 listBuckets operation to show how metrics are collected
 * and logged to the console for development and debugging purposes.
 * <p>
 * LoggingMetricPublisher is ideal for:
 * - Development and debugging
 * - Console output for troubleshooting
 * - Understanding what metrics are being collected
 * - Testing metric collection without external dependencies
 */
public class S3LoggingMetricPublisherDemo {

    private static final Logger logger = LoggerFactory.getLogger(S3LoggingMetricPublisherDemo.class);

    public static void main(String[] args) {
        S3LoggingMetricPublisherDemo demo = new S3LoggingMetricPublisherDemo();
        demo.demonstrateUsage();
    }

    /**
     * Demonstrates basic usage with S3Client and metrics enabled at the client level.
     */
    private void demonstrateUsage() {

        // Create a LoggingMetricPublisher with default settings. The SDK logs metrics as text in a single line.
        // The default settings are equivalent to using `LoggingMetricPublisher.Format.PLAIN`.

        MetricPublisher metricPublisher = LoggingMetricPublisher.create();

        // Create an S3 client with metrics enabled.
        try (S3Client s3Client = S3Client.builder()
                .region(Region.US_EAST_1)
                .overrideConfiguration(config -> config.addMetricPublisher(metricPublisher))
                .build()) {

            // Make the listBuckets request - metrics will be logged to console.
            ListBucketsResponse response = s3Client.listBuckets(ListBucketsRequest.builder().build());

            // The next block shows the using a different LoggingMetricPublisher with a `PRETTY` format.
            // Since the metric publisher is added to the request using the `overrideConfiguration`, this formatting
            // applies only to the one request.
            try {
                s3Client.listBuckets(ListBucketsRequest.builder()
                        .overrideConfiguration(config -> config
                                .addMetricPublisher(LoggingMetricPublisher.create(
                                        Level.INFO, LoggingMetricPublisher.Format.PRETTY)))
                        .build());
            } catch (Exception e) {
                logger.info("Request failed with metrics logged: {}", e.getMessage());
            }
            logger.info("Found {} buckets in your AWS account.", response.buckets().size());

        } catch (Exception e) {
            logger.error("Error during S3 operation: {}", e.getMessage());
            logger.info("Note: This is expected if AWS credentials are not configured.");
        }

        // Close the metric publisher to flush any remaining metrics.
        metricPublisher.close();
    }
}
```

Kode mencatat yang berikut ini ke konsol:

```
INFO  LoggingMetricPublisher - Metrics published: MetricCollection(name=ApiCall, metrics=[MetricRecord(metric=MarshallingDuration, value=PT0.005409792S), MetricRecord(metric=RetryCount, value=0), MetricRecord(metric=ApiCallSuccessful, value=true), MetricRecord(metric=OperationName, value=ListBuckets), MetricRecord(metric=EndpointResolveDuration, value=PT0.000068S), MetricRecord(metric=ApiCallDuration, value=PT0.163802958S), MetricRecord(metric=CredentialsFetchDuration, value=PT0.145686542S), MetricRecord(metric=ServiceEndpoint, value=https://s3.amazonaws.com), MetricRecord(metric=ServiceId, value=S3)], children=[MetricCollection(name=ApiCallAttempt, metrics=[MetricRecord(metric=TimeToFirstByte, value=PT0.138816S), MetricRecord(metric=SigningDuration, value=PT0.007803459S), MetricRecord(metric=ReadThroughput, value=165153.96002660287), MetricRecord(metric=ServiceCallDuration, value=PT0.138816S), MetricRecord(metric=AwsExtendedRequestId, value=e13Swj3uwn0qP1Oz+m7II5OGq7jf8xxT8H18iDfRBCQmDg+gU4ek91Xrsl8XxRLROlIzCAPQtsQF0DAAWOb8ntuKCzX2AJdj), MetricRecord(metric=HttpStatusCode, value=200), MetricRecord(metric=BackoffDelayDuration, value=PT0S), MetricRecord(metric=TimeToLastByte, value=PT0.148915667S), MetricRecord(metric=AwsRequestId, value=78AW9BM7SWR6YMGB)], children=[MetricCollection(name=HttpClient, metrics=[MetricRecord(metric=MaxConcurrency, value=50), MetricRecord(metric=AvailableConcurrency, value=0), MetricRecord(metric=LeasedConcurrency, value=1), MetricRecord(metric=ConcurrencyAcquireDuration, value=PT0.002623S), MetricRecord(metric=PendingConcurrencyAcquires, value=0), MetricRecord(metric=HttpClientName, value=Apache)], children=[])])])
INFO  LoggingMetricPublisher - [4e6f2bb5] ApiCall
INFO  LoggingMetricPublisher - [4e6f2bb5] ┌──────────────────────────────────────────┐
INFO  LoggingMetricPublisher - [4e6f2bb5] │ MarshallingDuration=PT0.000063S          │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ RetryCount=0                             │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ ApiCallSuccessful=true                   │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ OperationName=ListBuckets                │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ EndpointResolveDuration=PT0.000024375S   │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ ApiCallDuration=PT0.018463083S           │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ CredentialsFetchDuration=PT0.000022334S  │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ ServiceEndpoint=https://s3.amazonaws.com │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ ServiceId=S3                             │
INFO  LoggingMetricPublisher - [4e6f2bb5] └──────────────────────────────────────────┘
INFO  LoggingMetricPublisher - [4e6f2bb5]     ApiCallAttempt
INFO  LoggingMetricPublisher - [4e6f2bb5]     ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ TimeToFirstByte=PT0.0165575S                                                                                          │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ SigningDuration=PT0.000301125S                                                                                        │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ ReadThroughput=1195591.792850103                                                                                      │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ ServiceCallDuration=PT0.0165575S                                                                                      │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ AwsExtendedRequestId=3QI1eenRuokdszWqZBmBMDUmko6FlSmHkM+CUMNMeLor7gJml4D4lv6QXUZ1zWoTgG+tHbr6yo2vHdz4h1P8PDovvtMFRCeB │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ HttpStatusCode=200                                                                                                    │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ BackoffDelayDuration=PT0S                                                                                             │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ TimeToLastByte=PT0.017952625S                                                                                         │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ AwsRequestId=78AVFAF795AAWAXH                                                                                         │
INFO  LoggingMetricPublisher - [4e6f2bb5]     └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
INFO  LoggingMetricPublisher - [4e6f2bb5]         HttpClient
INFO  LoggingMetricPublisher - [4e6f2bb5]         ┌───────────────────────────────────────┐
INFO  LoggingMetricPublisher - [4e6f2bb5]         │ MaxConcurrency=50                     │
INFO  LoggingMetricPublisher - [4e6f2bb5]         │ AvailableConcurrency=0                │
INFO  LoggingMetricPublisher - [4e6f2bb5]         │ LeasedConcurrency=1                   │
INFO  LoggingMetricPublisher - [4e6f2bb5]         │ ConcurrencyAcquireDuration=PT0.00004S │
INFO  LoggingMetricPublisher - [4e6f2bb5]         │ PendingConcurrencyAcquires=0          │
INFO  LoggingMetricPublisher - [4e6f2bb5]         │ HttpClientName=Apache                 │
INFO  LoggingMetricPublisher - [4e6f2bb5]         └───────────────────────────────────────┘
INFO  S3LoggingMetricPublisherDemo - Found 6 buckets in your AWS account.
```

### Artefak tambahan untuk contoh
<a name="logging-metric-publisher-complete-example-artifacts"></a>

Berkas Maven `pom.xml`

```
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>s3-logging-metric-publisher-demo</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>AWS S3 LoggingMetricPublisher Demo</name>
    <description>Demonstrates how to use LoggingMetricPublisher with AWS S3 SDK for Java 2.x</description>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <aws.java.sdk.version>2.31.66</aws.java.sdk.version>
        <log4j.version>2.24.3</log4j.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- AWS SDK BOM for dependency management -->
            <dependency>
                <groupId>software.amazon.awssdk</groupId>
                <artifactId>bom</artifactId>
                <version>${aws.java.sdk.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- Log4j BOM for logging dependency management -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-bom</artifactId>
                <version>${log4j.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- AWS S3 SDK for demonstration -->
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>s3</artifactId>
        </dependency>

        <!-- Log4j2 SLF4J implementation -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j2-impl</artifactId>
        </dependency>

        <!-- Log4j2 Core -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.13.0</version>
                <configuration>
                    <source>17</source>
                    <target>17</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
```

`Log4j2.xml`berkas konfigurasi

```
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="ConsoleAppender"/>
        </Root>
        <!-- Ensure LoggingMetricPublisher output appears. -->
        <Logger name="software.amazon.awssdk.metrics.LoggingMetricPublisher" level="INFO"/>
    </Loggers>
</Configuration>
```

Metrik mencakup informasi waktu, detail layanan, nama operasi, dan kode status HTTP yang membantu Anda memahami pola penggunaan AWS API aplikasi Anda.

## Langkah selanjutnya
<a name="logging-metric-publisher-next-steps"></a>

Setelah menggunakan `LoggingMetricPublisher` untuk pengembangan dan debugging, pertimbangkan opsi ini untuk lingkungan produksi:
+ Untuk aplikasi yang berjalan lama, gunakan [CloudWatchMetricPublisher](metric-pub-impl-cwmp.md)untuk mengirim metrik ke Amazon CloudWatch untuk analisis dan peringatan
+ Untuk AWS Lambda fungsi, gunakan [EmfMetricLoggingPublisher](metric-pub-impl-emf.md)untuk mempublikasikan metrik dalam Format Metrik CloudWatch Tertanam

# AWS SDK for Java 2.x: Referensi Metrik Komprehensif
<a name="metrics-list"></a>

[Dengan itu AWS SDK for Java 2.x, Anda dapat mengumpulkan metrik dari klien layanan di aplikasi Anda dan kemudian menerbitkan (mengeluarkan) metrik tersebut ke Amazon. CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)

Tabel ini mencantumkan metrik yang dapat Anda kumpulkan dan persyaratan penggunaan klien HTTP apa pun.

[Untuk informasi selengkapnya tentang mengaktifkan dan mengonfigurasi metrik untuk SDK, lihat Mengaktifkan metrik SDK.](metrics.md)

## Metrik dikumpulkan dengan setiap permintaan
<a name="metrics-perrequest"></a>


| Nama metrik | Deskripsi | Tipe | 
| --- | --- | --- | 
|  ApiCallDuration  |  Durasi panggilan API. Ini termasuk semua upaya panggilan yang dilakukan.  |  Durasi\$1  | 
|  ApiCallSuccessful  |  Benar jika panggilan API berhasil, false sebaliknya.  |  Boolean  | 
|  CredentialsFetchDuration  |  Durasi waktu untuk mengambil kredensyal penandatanganan untuk panggilan API.  |  Durasi\$1  | 
| EndpointResolveDuration | Durasi waktu untuk menyelesaikan titik akhir yang digunakan untuk panggilan API. | Durasi\$1 | 
|  MarshallingDuration  |  Durasi waktu untuk mengirim permintaan SDK ke permintaan HTTP.  |  Durasi\$1  | 
|  OperationName  |  Nama operasi layanan yang dipanggil.  |  String  | 
|  RetryCount  |  Jumlah percobaan ulang yang dilakukan SDK dalam pelaksanaan permintaan. 0 menyiratkan bahwa permintaan berfungsi pertama kali dan tidak ada percobaan ulang yang dicoba. Untuk informasi selengkapnya tentang mengonfigurasi perilaku coba lagi, lihat. [Coba lagi strategi](retry-strategy.md#retry-strategies)  |  Bilangan Bulat  | 
|  ServiceId  |  ID unik untuk layanan ini.  |  String  | 
|  ServiceEndpoint  |  Titik akhir untuk layanan.  |  URI  | 
|  TokenFetchDuration  | Durasi waktu untuk mengambil kredensyal penandatanganan untuk panggilan API. | Durasi\$1 | 

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

## Metrik dikumpulkan untuk setiap upaya permintaan
<a name="metrics-perattempt"></a>

Setiap panggilan API mungkin memerlukan beberapa upaya sebelum respons diterima. Metrik ini dikumpulkan untuk setiap upaya.

### Metrik inti
<a name="metrics-perattempt-core"></a>


| Nama metrik | Deskripsi | Tipe | 
| --- | --- | --- | 
|  AwsExtendedRequestId  |  ID permintaan yang diperpanjang dari permintaan layanan.  |  String  | 
|  AwsRequestId  |  ID permintaan permintaan layanan.  |  String  | 
|  BackoffDelayDuration  |  Durasi waktu yang telah ditunggu SDK sebelum upaya panggilan API ini. Nilai didasarkan pada `[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)` set pada klien. Lihat [Coba lagi strategi](retry-strategy.md#retry-strategies) bagian dalam panduan ini untuk informasi lebih lanjut.  |  Durasi\$1  | 
| ErrorType |  Jenis kesalahan yang terjadi untuk upaya panggilan. Berikut adalah nilai yang mungkin: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sdk-for-java/latest/developer-guide/metrics-list.html)  | String | 
| ReadThroughput |  Throughput baca klien, didefinisikan sebagai`NumberOfResponseBytesRead / (TTLB - TTFB)`. Nilai ini dalam byte per detik. Perhatikan bahwa metrik ini hanya mengukur byte yang dibaca dari dalam `ResponseTransformer` atau`AsyncResponseTransformer`. Data yang dibaca di luar transformator — misalnya ketika aliran respons dikembalikan sebagai hasil transformator — tidak termasuk dalam perhitungan.  | Ganda | 
| WriteThroughput |  Throughput tulis klien, didefinisikan sebagai`RequestBytesWritten / (LastByteWrittenTime - FirstByteWrittenTime)`. Nilai ini dalam byte per detik. Metrik ini mengukur tingkat di mana SDK menyediakan badan permintaan ke klien HTTP. Ini tidak termasuk pengaturan koneksi, waktu jabat tangan TLS, dan waktu pemrosesan server. Metrik ini hanya dilaporkan untuk permintaan yang memiliki badan streaming seperti S3 PutObject. Perhatikan bahwa metrik ini tidak memperhitungkan buffering di lapisan klien HTTP. Tingkat transmisi jaringan yang sebenarnya mungkin lebih rendah jika klien HTTP buffer data sebelum mengirim. Metrik ini mewakili batas atas throughput jaringan.  | Ganda | 
|  ServiceCallDuration  |  Durasi waktu untuk terhubung ke layanan (atau memperoleh koneksi dari kumpulan koneksi), mengirim permintaan serial dan menerima respons awal (misalnya kode status HTTP dan header). Ini TIDAK termasuk waktu untuk membaca seluruh tanggapan dari layanan.  |  Durasi\$1  | 
|  SigningDuration  |  Durasi waktu untuk menandatangani permintaan HTTP.  |  Durasi\$1  | 
| TimeToFirstByte | Durasi waktu dari mengirim permintaan HTTP (termasuk memperoleh koneksi) ke layanan, dan menerima byte pertama header dalam respons. | Durasi\$1 | 
| TimeToLastByte |  Durasi waktu dari mengirim permintaan HTTP (termasuk memperoleh koneksi) ke layanan, dan menerima byte terakhir dari respons. Perhatikan APIs bahwa untuk respons streaming kembali itu, metrik ini mencakup waktu hingga `ResponseTransformer` atau `AsyncResponseTransformer` selesai.  | Durasi\$1 | 
|  UnmarshallingDuration  |  Durasi waktu untuk menghapus respons HTTP terhadap respons SDK. Catatan: Untuk operasi streaming, ini tidak termasuk waktu untuk membaca payload respons.  |  Durasi\$1  | 

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

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


| Nama metrik | Deskripsi | Tipe | Klien HTTP diperlukan\$1 | 
| --- | --- | --- | --- | 
|  AvailableConcurrency  |  Jumlah permintaan bersamaan tambahan yang didukung klien HTTP tanpa membuat koneksi baru ke server target. Untuk operasi HTTP/1, ini sama dengan jumlah koneksi TCP idle yang dibuat dengan layanan. Untuk operasi HTTP/2, ini sama dengan jumlah aliran idle. Catatan: Nilai ini bervariasi menurut implementasi klien HTTP: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sdk-for-java/latest/developer-guide/metrics-list.html) Nilai dicakup ke instance klien HTTP individual dan mengecualikan konkurensi dari klien HTTP lain di JVM yang sama.  |  Bilangan Bulat  | Apache, Netty, CRT | 
|  ConcurrencyAcquireDuration  |  Durasi waktu untuk memperoleh saluran dari kolam koneksi. Untuk operasi HTTP/1, saluran sama dengan koneksi TCP. Untuk operasi HTTP/2, saluran sama dengan saluran aliran HTTP/2. Memperoleh saluran baru dapat mencakup waktu untuk: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sdk-for-java/latest/developer-guide/metrics-list.html)  |  Durasi\$1  |  Apache, Netty, CRT  | 
|  HttpClientName  |  Nama HTTP yang digunakan untuk permintaan.  |  String  |  Apache, Netty, CRT  | 
|  HttpStatusCode  |  Kode status respon HTTP.  |  Bilangan Bulat  |  Setiap  | 
|  LeasedConcurrency  |  Jumlah permintaan yang saat ini dijalankan oleh klien HTTP.  Untuk operasi HTTP/1, ini sama dengan jumlah koneksi TCP aktif dengan layanan (tidak termasuk koneksi idle). Untuk operasi HTTP/2, ini sama dengan jumlah aliran HTTP aktif dengan layanan (tidak termasuk kapasitas aliran idle).  Catatan: Nilai ini bervariasi menurut implementasi klien HTTP: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sdk-for-java/latest/developer-guide/metrics-list.html) Nilai dicakup ke instance klien HTTP individual dan mengecualikan konkurensi dari klien HTTP lain di JVM yang sama.  |  Bilangan Bulat  |  Apache, Netty, CRT  | 
|  LocalStreamWindowSize  |  Ukuran jendela HTTP/2 lokal dalam byte untuk aliran yang mengeksekusi permintaan ini.  |  Bilangan Bulat  |  Netty  | 
|  MaxConcurrency  |  Jumlah maksimum permintaan bersamaan yang didukung klien HTTP. Untuk operasi HTTP/1, ini sama dengan jumlah maksimum koneksi TCP yang dapat dikumpulkan oleh klien HTTP. Untuk operasi HTTP/2, ini sama dengan jumlah maksimum aliran yang dapat dikumpulkan oleh klien HTTP. Catatan: Nilai ini bervariasi menurut implementasi klien HTTP: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sdk-for-java/latest/developer-guide/metrics-list.html) Nilai dicakup ke instance klien HTTP individual dan mengecualikan konkurensi dari klien HTTP lain di JVM yang sama.  |  Bilangan Bulat  |  Apache, Netty, CRT  | 
|  PendingConcurrencyAcquires  |  Jumlah permintaan yang menunggu konkurensi dari klien HTTP. Untuk operasi HTTP/1, ini sama dengan jumlah permintaan yang menunggu koneksi TCP dibuat atau dikembalikan dari kumpulan koneksi. Untuk operasi HTTP/2, ini sama dengan jumlah permintaan yang menunggu aliran baru (dan mungkin koneksi HTTP/2 baru) dari kumpulan koneksi. Catatan: Nilai ini bervariasi menurut implementasi klien HTTP: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sdk-for-java/latest/developer-guide/metrics-list.html) Nilai dicakup ke instance klien HTTP individual dan mengecualikan konkurensi dari klien HTTP lain di JVM yang sama.  |  Bilangan Bulat  |  Apache, Netty, CRT  | 
|  RemoteStreamWindowSize  |  Ukuran jendela HTTP/2 jarak jauh dalam byte untuk aliran yang menjalankan permintaan ini.  |  Bilangan Bulat  |  Netty  | 

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

Istilah yang digunakan dalam kolom berarti:
+ Apache: klien HTTP berbasis Apache () `[ApacheHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache/ApacheHttpClient.html)`
+ Netty: klien HTTP berbasis Netty () `[NettyNioAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/nio/netty/NettyNioAsyncHttpClient.html)`
+ CRT: klien HTTP AWS berbasis CRT () `[AwsCrtAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.html)`
+ Setiap: pengumpulan data metrik tidak bergantung pada klien HTTP; ini termasuk klien HTTP URLConnection berbasis (`[UrlConnectionHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/urlconnection/UrlConnectionHttpClient.html)`)