

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

# 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).