翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
SDK メトリクスの公開をバージョン 1 からバージョン 2 に変更
このトピックでは、 のバージョン 1.x (v1) からバージョン 2.x (v2) へのクライアント側の SDK メトリクス発行の変更について詳しく説明します AWS SDK for Java。
高レベル変更
アーキテクチャの変更
v1 では、メトリクスコレクションは、システムプロパティで有効にする JVM 全体のグローバル設定です。SDK は、収集されたすべてのメトリクスを CloudWatch に自動的に発行します。メトリクスの送信先は 1 つだけです。
v2 では、メトリクスコレクションは、個々のサービスクライアントまたはリクエストにアタッチするプラガブル MetricPublisher
-
CloudWatchMetricPublisher
: メトリクスを集約し、定期的に CloudWatch にアップロードします。長時間実行されるアプリケーションに最適です。 -
EmfMetricLoggingPublisher
: CloudWatch Embedded Metric Format (EMF) の構造化ログエントリとしてメトリクスを書き込みます。Lambda 関数やその他の存続期間の短い環境に最適です。 -
LoggingMetricPublisher
: SLF4J ログ記録を通じてメトリクスをコンソールに出力します。ローカル開発とデバッグに最適です。
スコープの変更
v1 では、メトリクスを有効にすると、JVM 内のすべての AWS サービスクライアントのデータが公開されます。v2 では、サービスクライアントレベルまたは個々のリクエストレベルでメトリクスを制御します。
メトリクスタイプの変更
v1 は、 AWS リクエストメトリクス、 AWS サービスメトリクス、マシンメトリクス (ヒープメモリ、スレッド数、オープンファイル記述子) の 3 つのカテゴリのメトリクスを収集します。
v2 は、API コール期間、マーシャリング期間、署名期間、再試行回数などの SDK リクエストおよびレスポンスメトリクスに焦点を当てています。v2 は、ヒープメモリ、スレッド数、オープンファイル記述子などのマシンメトリクスを収集しません。CloudWatch で JVM メトリクスを引き続き収集するには、JMX メトリクスコレクションで CloudWatch エージェントを使用できます。
依存関係の変更
次の表は、v1 と v2 の間の Maven の依存関係とパッケージ名の変更を示しています。
| 変更 | v1 | v2 |
|---|---|---|
|
Maven の依存関係 |
|
|
| パッケージ名 | com.amazonaws.metrics |
software.amazon.awssdk.metrics |
次の表に示すように、v2 アーティファクトはユースケースによって異なります。
| ユースケース | v2 artifactId | SDK の最小バージョン |
|---|---|---|
| 長時間実行されるアプリケーション | cloudwatch-metric-publisher |
2.14.0 |
| Lambda 関数 | emf-metric-logging-publisher |
2.30.3 |
| 開発とデバッグ | 追加の依存関係は必要ありません (LoggingMetricPublisher は SDK コアにあります) |
2.14.0 |
API の変更
メトリクスを有効にする
次の表は、さまざまなユースケースで v1 と v2 でメトリクスを有効にする方法を比較したものです。
| ユースケース | v1 | v2 |
|---|---|---|
|
メトリクスをグローバルに有効にする |
JVM システムプロパティを追加します。
|
サポート外。を各サービスクライアントMetricPublisherにアタッチします。 |
|
認証情報ファイルなしで Amazon EC2 でメトリクスを有効にする |
|
該当なし。v2 は標準の認証情報解決を使用します。 |
|
サービスクライアントのメトリクスを有効にする |
サポート外。メトリクスはグローバルまたはオフです。 |
|
|
1 つのリクエストのメトリクスを有効にする |
サポート外。 |
|
CloudWatch 送信先の設定
次の表は、v2 と比較して v1 で CloudWatch 送信先を設定する方法を示しています。
| ユースケース | v1 | v2 |
|---|---|---|
|
CloudWatch リージョンの設定 |
システムプロパティ属性:
|
|
|
アップロード頻度を設定する |
設定可能ではありません。1 分に約 1 回アップロードします。 |
|
|
CloudWatch 名前空間の設定 |
を修正しましたAWSSDK/Java。 |
デフォルトは
注記v1 名前空間 を参照する既存の CloudWatch ダッシュボードまたはアラームがある場合は |
|
マシンメトリクスを除外する |
システムプロパティ属性:
|
該当なし。v2 はマシンメトリクスを収集しません。 |
Lambda 関数のメトリクス
v1 には Lambda 固有のメトリクスソリューションはありません。v2 EmfMetricLoggingPublisherでは、 を使用して 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();
注記
Lambda 環境では、 logGroupNameはAWS_LAMBDA_LOG_GROUP_NAME環境変数から自動的に検出されます。Amazon ECS や Amazon EC2 などの Lambda 以外の環境では、ビルダーでlogGroupName明示的に を設定する必要があります。
開発とデバッグのメトリクス
v1 にはコンソールベースのメトリクス出力はありません。v2 では、 を使用しますLoggingMetricPublisher。
// v2 - Console output for debugging MetricPublisher loggingPublisher = LoggingMetricPublisher.create(); S3Client s3 = S3Client.builder() .overrideConfiguration(c -> c.addMetricPublisher(loggingPublisher)) .build();
ライフサイクル管理
v1 では、システムプロパティが設定されると、メトリクス収集は JVM の存続期間中実行されます。v2 では、 のライフサイクルを管理する必要があります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();
重要
不要になったMetricPublisherインスタンスcloseで を呼び出します。そうしないと、スレッドまたはファイル記述子のリークが発生する可能性があります。
必要なアクセス許可
次の表に、各メトリクスパブリッシャーに必要な IAM アクセス許可を示します。
| アクセス許可タイプ | v1 | v2 (CloudWatchMetricPublisher) | v2 (EmfMetricLoggingPublisher) |
|---|---|---|---|
| IAM 許可 | cloudwatch:PutMetricData |
cloudwatch:PutMetricData |
logs:PutLogEvents |
制限事項
AWS CRT ベースの S3 クライアントは現在、v2 での SDK メトリクス収集をサポートしていません。