本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用來自 的SDK指標 AWS SDK for Java
使用 AWS SDK for Java 2.x,您可以收集應用程式中服務用戶端的指標,分析 中的輸出 Amazon CloudWatch,然後對其採取行動。
根據預設,指標集合會在 中停用SDK。本主題可協助您啟用和設定它。
必要條件
您必須先完成下列步驟,才能啟用和使用指標:
-
完成「設定 AWS SDK for Java 2.x」中的步驟。
-
將專案相依性 (例如,在您的
pom.xml
或build.gradle
檔案中) 設定為使用2.14.0
或更新版本 AWS SDK for Java。若要啟用將指標發佈至 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身分
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(); } }
重要
確保您的應用程式close
在服務用戶端不再使用時呼叫MetricPublisher
執行個體。否則可能會導致執行緒或檔案描述符洩漏。
啟用特定服務用戶端的摘要指標
下列程式碼片段說明如何啟用具有服務用戶端預設設定的 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
方法會限制每次上傳的呼叫數量。預設值為無限制。 -
根據預設,SDK適用於 Java 2.x 的 會在命名空間 下發佈指標。
AwsSdk/JavaSdk2
您可以使用namespace
方法指定不同的值。 -
依預設, SDK 會發佈摘要指標。摘要指標包含平均值、最小值、最大值、總和和範例計數。透過在
detailedMetrics
方法中指定一或多個SDK指標, SDK 會為每個指標發佈其他資料。此額外資料會啟用 p90 和 p99 等百分位數統計資料,您可以在 中查詢 CloudWatch。詳細指標對於 等延遲指標特別有用APICallDuration
,這些指標會測量 end-to-endSDK用戶端請求的延遲。您可以使用CoreMetric
類別的欄位來指定其他常用SDK指標。
何時可使用指標?
適用於 Java SDK的 發出指標後,通常可在 5-10 分鐘內使用。如需準確和 up-to-date指標,請在從 Java 應用程式發出指標後至少 10 分鐘檢查 Cloudwatch。
會收集哪些資訊?
指標集合包括下列項目:
-
API 請求數,包括是否成功
-
您在API請求中呼叫 AWS 之服務的相關資訊,包括傳回的例外狀況
-
各種操作的持續時間,例如 Marshalling、Signing 和 HTTP Request
-
HTTP 用戶端指標,例如開啟的連線數量、待處理的請求數量,以及使用的HTTP用戶端名稱
注意
可用的指標因HTTP用戶端而異。
如需完整清單,請參閱服務用戶端指標 。
如何使用此資訊?
您可以使用 SDK收集的指標來監控應用程式中的服務用戶端。您可以查看整體用量趨勢、識別異常、檢閱傳回的服務用戶端例外狀況,或深入了解特定問題。使用 Amazon CloudWatch,您也可以建立警示,以便在應用程式到達您定義的條件時立即通知您。
如需詳細資訊,請參閱 Amazon CloudWatch 使用者指南 中的使用 Amazon CloudWatch 指標和使用 Amazon CloudWatch 警示。