Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Perubahan dalam penerbitan metrik SDK dari versi 1 ke versi 2
Topik ini merinci perubahan dalam penerbitan metrik SDK sisi klien dari versi 1.x (v1) ke versi 2.x (v2) dari. AWS SDK untuk Java
High-level perubahan
Arsitektur berubah
Di v1, koleksi metrik adalah JVM-wide pengaturan global yang Anda aktifkan dengan properti sistem. SDK secara otomatis menerbitkan semua metrik yang dikumpulkan ke. CloudWatch Hanya ada satu tujuan metrik.
Di v2, koleksi metrik menggunakan MetricPublisher
-
CloudWatchMetricPublisher
: Mengagregat dan mengunggah metrik secara berkala ke. CloudWatch Paling cocok untuk aplikasi yang berjalan lama. -
EmfMetricLoggingPublisher
: Menulis metrik sebagai entri log terstruktur dalam CloudWatch Embedded Metric Format (EMF). Paling cocok untuk fungsi Lambda dan lingkungan berumur pendek lainnya. -
LoggingMetricPublisher
: Mengeluarkan metrik ke konsol melalui logging SLF4J. Paling cocok untuk pengembangan lokal dan debugging.
Perubahan ruang lingkup
Di v1, mengaktifkan metrik menerbitkan data untuk semua klien AWS layanan di JVM. Di v2, Anda mengontrol metrik di tingkat klien layanan atau di tingkat permintaan individu.
Perubahan tipe metrik
v1 mengumpulkan tiga kategori metrik: Metrik AWS Permintaan, Metrik AWS Layanan, dan Metrik Mesin (memori heap, jumlah utas, deskriptor file terbuka).
v2 berfokus pada metrik permintaan dan respons SDK, seperti durasi panggilan API, durasi penyusunan, durasi penandatanganan, dan hitungan coba lagi. v2 tidak mengumpulkan metrik mesin seperti memori heap, jumlah utas, dan deskriptor file terbuka. Untuk terus mengumpulkan metrik JVM CloudWatch, Anda dapat menggunakan koleksi metrik CloudWatch Agen dengan JMX.
Perubahan dependensi
Tabel berikut menunjukkan ketergantungan Maven dan perubahan nama paket antara v1 dan v2.
| Ubah | v1 | v2 |
|---|---|---|
|
Ketergantungan Maven |
|
|
| Nama paket | com.amazonaws.metrics |
software.amazon.awssdk.metrics |
1 Versi terbaru
Artefak v2 tergantung pada kasus penggunaan, seperti yang ditunjukkan pada tabel berikut.
| Kasus penggunaan | v2 Artifactid | Versi SDK minimum |
|---|---|---|
| Long-running aplikasi | cloudwatch-metric-publisher |
2.14.0 |
| Fungsi Lambda | emf-metric-logging-publisher |
2.30.3 |
| Pengembangan dan debugging | Tidak diperlukan ketergantungan tambahan (LoggingMetricPublisherada di inti SDK) |
2.14.0 |
Perubahan API
Mengaktifkan metrik
Tabel berikut membandingkan cara mengaktifkan metrik di v1 dan v2 untuk kasus penggunaan yang berbeda.
| Kasus penggunaan | v1 | v2 |
|---|---|---|
|
Aktifkan metrik secara global |
Tambahkan properti sistem JVM:
|
Tidak didukung. Lampirkan a MetricPublisher ke setiap klien layanan. |
|
Aktifkan metrik di Amazon EC2 tanpa file kredensional |
|
Tidak berlaku. v2 menggunakan resolusi kredensialnya standar. |
|
Aktifkan metrik untuk klien layanan |
Tidak didukung. Metrik bersifat global atau tidak aktif. |
|
|
Aktifkan metrik untuk satu permintaan |
Tidak didukung. |
|
Mengkonfigurasi tujuan CloudWatch
Tabel berikut menunjukkan cara mengkonfigurasi CloudWatch tujuan di v1 dibandingkan dengan v2.
| Kasus penggunaan | v1 | v2 |
|---|---|---|
|
Tetapkan CloudWatch wilayah |
Atribut properti sistem:
|
|
|
Atur frekuensi unggah |
Tidak dapat dikonfigurasi. Unggah kira-kira sekali per menit. |
|
|
Setel CloudWatch namespace |
Diperbaiki keAWSSDK/Java. |
Diatur secara default ke
catatanJika Anda memiliki CloudWatch dasbor atau alarm yang mereferensikan namespace |
|
Kecualikan metrik mesin |
Atribut properti sistem:
|
Tidak berlaku. v2 tidak mengumpulkan metrik mesin. |
Metrik untuk fungsi Lambda
v1 tidak memiliki solusi Lambda-specific metrik. Di v2, gunakan EmfMetricLoggingPublisher yang menulis metrik sebagai entri log terstruktur dalam CloudWatch Embedded Metric Format (EMF):
// v2 - Lambda-optimized metrics publishing EmfMetricLoggingPublisher emfPublisher = EmfMetricLoggingPublisher.builder() .namespace("MyApp") .dimensions(CoreMetric.SERVICE_ID, CoreMetric.OPERATION_NAME) .build(); DynamoDbClient dynamoDb = DynamoDbClient.builder() .overrideConfiguration(c -> c.addMetricPublisher(emfPublisher)) .build();
catatan
Di lingkungan Lambda, otomatis logGroupName terdeteksi dari variabel lingkungan. AWS_LAMBDA_LOG_GROUP_NAME Di lingkungan non-Lambda seperti Amazon ECS atau Amazon EC2, Anda harus menetapkan logGroupName secara eksplisit pada builder.
Metrik untuk pengembangan dan debugging
v1 tidak memiliki keluaran metrik berbasis konsol. Di v2, gunakanLoggingMetricPublisher:
// v2 - Console output for debugging MetricPublisher loggingPublisher = LoggingMetricPublisher.create(); S3Client s3 = S3Client.builder() .overrideConfiguration(c -> c.addMetricPublisher(loggingPublisher)) .build();
Manajemen siklus hidup
Di v1, pengumpulan metrik berjalan selama masa pakai JVM setelah properti sistem disetel. Di v2, Anda harus mengelola siklus hidup: MetricPublisher
// v2 - Close the publisher when no longer needed MetricPublisher metricsPub = CloudWatchMetricPublisher.create(); DynamoDbClient ddb = DynamoDbClient.builder() .overrideConfiguration(c -> c.addMetricPublisher(metricsPub)) .build(); // ... use the client ... metricsPub.close(); // Flushes remaining metrics to CloudWatch ddb.close();
penting
Panggil close MetricPublisher instance ketika tidak lagi diperlukan. Kegagalan untuk melakukannya dapat mengakibatkan kebocoran thread atau deskriptor file.
Izin yang diperlukan
Tabel berikut mencantumkan izin IAM yang diperlukan untuk setiap penerbit metrik.
| Jenis izin | v1 | v2 (CloudWatchMetricPublisher) | v2 (EmfMetricLoggingPublisher) |
|---|---|---|---|
| Izin IAM | cloudwatch:PutMetricData |
cloudwatch:PutMetricData |
logs:PutLogEvents |
Batasan
Klien AWS CRT-based S3 saat ini tidak mendukung pengumpulan metrik SDK di v2.