翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
からSDKメトリクスを使用する AWS SDK for Java
AWS SDK for Java 2.x を使用すると、アプリケーション内のサービスクライアントに関するメトリクスを収集し、 で出力を分析し Amazon CloudWatch、それに基づいて行動できます。
デフォルトでは、メトリクスコレクションは で無効になっていますSDK。このトピックは、それを有効にして設定するのに役立ちます。
前提条件
メトリクスを有効にして使用する前に、次の手順を完了する必要があります。
-
「AWS SDK for Java 2.x のセットアップ」のステップを完了します。
-
AWS SDK for Javaのバージョン
2.14.0
以降を使用するように、プロジェクトの依存関係を (例:pom.xml
またはbuild.gradle
ファイルで) 設定します。へのメトリクスの発行を有効にするには CloudWatch、プロジェクトの依存関係にバージョン番号
2.14.0
以降の も含め artifactIdcloudwatch-metric-publisher
ます。例:
<project> <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.27.21</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>
-
メトリクスパブリッシャーが使用する IAM ID の
cloudwatch:PutMetricData
アクセス許可を有効にして、 SDK for Java がメトリクスを記述できるようにします。
メトリクスの収集を有効にする方法
アプリケーションでサービスクライアントのメトリクスを有効にすることも、個々のリクエストでメトリクスを有効にすることもできます。
特定のリクエストのメトリクスを有効にする
次のクラスは、 へのリクエストの CloudWatch メトリクスパブリッシャーを有効にする方法を示しています Amazon DynamoDB。デフォルトのメトリクスパブリッシャー設定を使用します。
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(); } }
重要
サービスクライアントが使用されなくなったときに、アプリケーションがMetricPublisher
インスタンスclose
で を呼び出していることを確認します。そうしないと、スレッドまたはファイル記述子のリークが発生する可能性があります。
特定のサービスクライアントのサマリーメトリクスを有効にする
次のコードスニペットは、サービスクライアントのデフォルト設定で CloudWatch メトリクスパブリッシャーを有効にする方法を示しています。
MetricPublisher metricsPub = CloudWatchMetricPublisher.create(); DynamoDbClient ddb = DynamoDbClient.builder() .overrideConfiguration(c -> c.addMetricPublisher(metricsPub)) .build();
メトリクスパブリッシャーをカスタマイズする
次のクラスは、特定のサービスクライアントのメトリクスパブリッシャーにカスタム設定を設定する方法を示しています。カスタマイズには、特定のプロファイルのロード、メトリクスパブリッシャーがリクエストを送信する AWS リージョンの指定、パブリッシャーがメトリクスを に送信する頻度のカスタマイズが含まれます 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(); } }
前のスニペットで示したカスタマイズには、次の効果があります。
-
cloudWatchClient
メソッドを使用すると、メトリクスの送信に使用する CloudWatch クライアントをカスタマイズできます。この例では、クライアントがメトリクスを送信する us-east-1 のデフォルトとは異なるリージョンを使用します。また、別の名前のプロファイルである cloudwatch も使用します。このプロファイルの認証情報は、 へのリクエストの認証に使用されます CloudWatch。これらの認証情報には、 に対するアクセス許可が必要ですcloudwatch:PutMetricData
。 -
uploadFrequency
メソッドを使用すると、メトリクスパブリッシャーがメトリクスを にアップロードする頻度を指定できます CloudWatch。デフォルトは 1 分に 1 回です。 -
maximumCallsPerUpload
メソッドは、アップロードごとに行われる呼び出しの数を制限します。デフォルトは無制限です。 -
デフォルトでは、 SDK for Java 2.x は名前空間 の下にメトリクスを発行します
AwsSdk/JavaSdk2
。namespace
メソッドを使用して、別の値を指定できます。 -
デフォルトでは、 SDK は概要メトリクスを発行します。サマリーメトリクスは、平均、最小、最大、合計、サンプル数で構成されます。
detailedMetrics
メソッドで 1 つ以上のSDKメトリクスを指定することで、 SDK は各メトリクスの追加データを公開します。この追加データにより、 でクエリできる p90 や p99 などのパーセンタイル統計が可能になります CloudWatch。詳細なメトリクスはAPICallDuration
、SDKクライアントリクエストの end-to-endレイテンシーを測定する などのレイテンシーメトリクスに特に役立ちます。CoreMetric
クラスのフィールドを使用して、他の一般的なSDKメトリクスを指定できます。
メトリクスが利用可能になるまでの時間
メトリクスは、 SDK for Java がメトリクスを発行してから 5~10 分以内に一般公開されます。正確な と up-to-dateメトリクスについては、Java アプリケーションからメトリクスを送信してから少なくとも 10 分後に Cloudwatch を確認してください。
収集される情報
メトリクスの収集には、次のものが含まれます。
-
成功か失敗かなど、APIリクエストの数
-
返される例外を含む、APIリクエストで呼び出す AWS サービスに関する情報
-
マーシャリング、署名、HTTPリクエストなどのさまざまなオペレーションの期間
-
HTTP オープン接続の数、保留中のリクエストの数、使用したクライアントの名前などのHTTPクライアントメトリクス
注記
使用可能なメトリクスはHTTPクライアントによって異なります。
詳細なリストについては、サービスクライアントのメトリクスを参照してください。
この情報の使用方法
がSDK収集するメトリクスを使用して、アプリケーション内のサービスクライアントをモニタリングできます。全体的な使用傾向の確認や、異常の特定ができるほか、返されたサービスクライアントの例外を確認したり、特定の問題を理解するために詳しく確認したりすることもできます。を使用して Amazon CloudWatch、アプリケーションが定義した条件に達したらすぐに通知するアラームを作成することもできます。
詳細については、Amazon CloudWatch 「 ユーザーガイド」のAmazon CloudWatch 「メトリクスの使用」とAmazon CloudWatch 「アラームの使用」を参照してください。