使用SDK指標 AWS SDK for Java - AWS SDK for Java 2.x

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用SDK指標 AWS SDK for Java

使用 AWS SDK for Java 2.x,您可以收集有關應用程式中服務用戶端的指標、分析輸出 Amazon CloudWatch,然後對其採取行動。

預設會停用中的測量結果收集SDK。本主題可協助您啟用和設定它。

必要條件

您必須先完成下列步驟,才能啟用和使用量度:

  • 完成「設定 AWS SDK for Java 2. x」中的步驟。

  • 設定您的專案相依性 (例如,在您的pom.xml2.14.0build.gradle檔案中) 以使用 AWS SDK for Java.

    若要啟用指標發佈到 CloudWatch,請在專案的相依性中包含版本號碼2.14.0或更新版本。 artifactId cloudwatch-metric-publisher

    例如:

    <project> <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.14.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>cloudwatch-metric-publisher</artifactId> <version>2.14.0</version> </dependency> </dependencies> </project>
  • 啟用指標發行者所使用之IAM身分識別的cloudwatch:PutMetricData權限,以允許 Java 寫入度量。SDK

如何啟用指標收集

您可以在應用程式中為服務用戶端或個別要求啟用指標。

為特定要求啟用量度

下列類別顯示如何為要求啟用 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。預設值為每分鐘一次。

  • 此方maximumCallsPerUpload法會限制每次上傳的呼叫次數。預設值為無限制。

  • 依預設,Java 2.x 會在命名空間AwsSdk/JavaSdk2下發佈量度。SDK您可以使用該namespace方法來指定不同的值。

  • 依預設,SDK會發佈摘要量度。摘要量度包含平均值、最小值、最大值、總和和和樣本計數。藉由在detailedMetrics方法中指定一或多個SDK量度,會為每個量度SDK發佈其他資料。這些額外的資料會啟用您可以查詢的 p90 和 p99 等百分位數統計資料。 CloudWatch詳細指標對於延遲指標特別有用APICallDuration,例如測量SDK客戶端請求的 end-to-end 延遲。您可以使用CoreMetric類別的欄位來指定其他通用SDK量度。

指標何時可用?

指標通常在 Java 發出之後的 SDK 5-10 分鐘內可用。如需準確的 up-to-date 指標和指標,請在從 Java 應用程式發出指標後至少 10 分鐘檢查 Cloudwatch。

收集哪些信息?

量度集合包括下列項目:

  • API要求數目,包括要求成功或失敗

  • 您在API要求中呼叫的 AWS 服務相關資訊,包括傳回的例外狀況

  • 各種操作(例如編組,簽名和請求)的持續時間 HTTP

  • HTTP從屬端測量結果,例如開啟的連線數目、擱置的要求數目,以及使用的從HTTP屬端名稱

注意

可用的指標因用HTTP戶端而異。

如需完整清單,請參閱服務用戶端指標

我該如何使用這些資訊?

您可以使用SDK收集的指標來監視應用程式中的服務用戶端。您可以查看整體使用趨勢、識別異常情況、檢視傳回的服務用戶端例外狀況,或深入瞭解特定問題。使用 Amazon CloudWatch,您也可以建立警示,以便在應用程式達到您定義的條件時立即通知您。

如需詳細資訊,請參閱使用 Amazon CloudWatch 指中的使用量度和使用 Amazon CloudWatch 警示。Amazon CloudWatch

主題