Verwenden Sie SDK Metriken aus dem AWS SDK for Java - AWS SDK for Java 2.x

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden Sie SDK Metriken aus dem AWS SDK for Java

Mit Version AWS SDK for Java 2.x können Sie Metriken zu den Service-Clients in Ihrer Anwendung sammeln, die Ergebnisse analysieren und dann entsprechend handeln. Amazon CloudWatch

Standardmäßig ist die Erfassung von Metriken in der SDK deaktiviert. Dieses Thema hilft Ihnen dabei, es zu aktivieren und zu konfigurieren.

Voraussetzungen

Bevor Sie Metriken aktivieren und verwenden können, müssen Sie die folgenden Schritte ausführen:

  • Führen Sie die Schritte unter Richten Sie das AWS SDK for Java 2.x ein aus.

  • Konfigurieren Sie Ihre Projektabhängigkeiten (z. B. in Ihrer pom.xml build.gradle OR-Datei) so, dass die Version 2.14.0 oder eine neuere Version von verwendet wird AWS SDK for Java.

    Um die Veröffentlichung von Metriken zu ermöglichen CloudWatch, nehmen Sie auch die artifactId cloudwatch-metric-publisher zusammen mit der Versionsnummer 2.14.0 oder einer späteren Version in die Abhängigkeiten Ihres Projekts auf.

    Beispielsweise:

    <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>
  • Aktivieren Sie cloudwatch:PutMetricData Berechtigungen für die IAM Identität, die vom Herausgeber der Metriken verwendet wird, SDK damit Java Metriken schreiben kann.

Wie aktiviert man die Erfassung von Metriken

Sie können Metriken in Ihrer Anwendung für einen Service-Client oder für einzelne Anfragen aktivieren.

Aktivieren Sie Metriken für eine bestimmte Anfrage

In der folgenden Klasse wird gezeigt, wie Sie den CloudWatch Metrik-Publisher für eine Anfrage aktivieren Amazon DynamoDB. Es verwendet die Standardkonfiguration für den Metrik-Publisher.

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(); } }
Wichtig

Stellen Sie sicher, dass Ihre Anwendung die MetricPublisher Instanz close aufruft, wenn der Service Client nicht mehr verwendet wird. Wenn Sie dies nicht tun, können Thread- oder Dateideskriptorlecks auftreten.

Aktivieren Sie Übersichtsmetriken für einen bestimmten Service-Client

Der folgende Codeausschnitt zeigt, wie Sie einen CloudWatch Metrik-Publisher mit Standardeinstellungen für einen Service Client aktivieren.

MetricPublisher metricsPub = CloudWatchMetricPublisher.create(); DynamoDbClient ddb = DynamoDbClient.builder() .overrideConfiguration(c -> c.addMetricPublisher(metricsPub)) .build();

Passen Sie den Herausgeber von Kennzahlen an

In der folgenden Klasse wird gezeigt, wie Sie eine benutzerdefinierte Konfiguration für den Metrik-Publisher für einen bestimmten Service-Client einrichten. Zu den Anpassungen gehören das Laden eines bestimmten Profils, die Angabe einer AWS Region, in die der Herausgeber der Metriken Anfragen sendet, und die Anpassung, wie oft der Herausgeber Metriken sendet. 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(); } }

Die im vorherigen Snippet gezeigten Anpassungen haben die folgenden Auswirkungen.

  • Mit cloudWatchClient dieser Methode können Sie den CloudWatch Client anpassen, der zum Senden von Metriken verwendet wird. In diesem Beispiel verwenden wir eine andere Region als die Standardregion us-east-1, in die der Client Metriken sendet. Wir verwenden auch ein anderes benanntes Profil, cloudwatch, dessen Anmeldeinformationen zur Authentifizierung von Anfragen verwendet werden. CloudWatch Diese Anmeldeinformationen müssen über die erforderlichen Berechtigungen verfügen. cloudwatch:PutMetricData

  • Mit uploadFrequency dieser Methode können Sie angeben, wie oft der Herausgeber Metriken hochlädt. CloudWatch Die Standardeinstellung ist einmal pro Minute.

  • Die maximumCallsPerUpload Methode begrenzt die Anzahl der Aufrufe pro Upload. Der Standardwert lautet „unbegrenzt“.

  • Standardmäßig veröffentlicht das SDK für Java 2.x Metriken unter dem AwsSdk/JavaSdk2 Namespace. Sie können die namespace Methode verwenden, um einen anderen Wert anzugeben.

  • Standardmäßig SDK veröffentlicht der Übersichtsmetriken. Übersichtsmetriken bestehen aus Durchschnitt, Minimum, Maximum, Summe und Stichprobenanzahl. Durch die Angabe einer oder mehrerer SDK Metriken in der detailedMetrics Methode werden zusätzliche Daten für jede Metrik SDK veröffentlicht. Diese zusätzlichen Daten ermöglichen Perzentilstatistiken wie p90 und p99, die Sie abfragen können. CloudWatch Die detaillierten Metriken sind besonders nützlich für Latenzmetriken wieAPICallDuration, mit denen die Latenz bei Kundenanfragen gemessen wird end-to-end . SDK Sie können Felder der CoreMetric Klasse verwenden, um andere gängige SDK Metriken anzugeben.

Wann sind Metriken verfügbar?

Metriken sind in der Regel innerhalb von 5-10 Minuten verfügbar, nachdem sie von SDK for Java ausgegeben wurden. Genaue up-to-date Metriken finden Sie mindestens 10 Minuten nach der Ausgabe der Metriken aus Ihren Java-Anwendungen in Cloudwatch.

Welche Informationen werden gesammelt?

Die Erfassung von Metriken umfasst Folgendes:

  • Anzahl der API Anfragen, einschließlich der Frage, ob sie erfolgreich waren oder nicht

  • Informationen über die AWS Dienste, die Sie in Ihren API Anfragen aufrufen, einschließlich der zurückgegebenen Ausnahmen

  • Die Dauer verschiedener Vorgänge wie Marshalling, Signierung und Anfragen HTTP

  • HTTPClient-Metriken wie die Anzahl der offenen Verbindungen, die Anzahl der ausstehenden Anfragen und der Name des verwendeten HTTP Clients

Anmerkung

Die verfügbaren Metriken variieren je nach HTTP Client.

Eine vollständige Liste finden Sie unter Service-Client-Metriken.

Wie kann ich diese Informationen verwenden?

Sie können die SDK gesammelten Metriken verwenden, um die Service-Clients in Ihrer Anwendung zu überwachen. Sie können sich allgemeine Nutzungstrends ansehen, Anomalien identifizieren, zurückgemeldete Service-Client-Ausnahmen überprüfen oder sich ein bestimmtes Problem genauer ansehen. Mit dieser Amazon CloudWatch Funktion können Sie auch Alarme einrichten, die Sie benachrichtigen, sobald Ihre Anwendung einen von Ihnen definierten Zustand erreicht.

Weitere Informationen finden Sie unter Verwenden von Amazon CloudWatch Metriken und Verwenden von Amazon CloudWatch Alarmen im Amazon CloudWatch Benutzerhandbuch.

Themen