View a markdown version of this page

Änderungen bei der Veröffentlichung von SDK-Metriken von Version 1 zu Version 2 - 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.

Änderungen bei der Veröffentlichung von SDK-Metriken von Version 1 zu Version 2

In diesem Thema werden die Änderungen bei der clientseitigen Veröffentlichung von SDK-Metriken von Version 1.x (v1) auf Version 2.x (v2) von beschrieben. AWS SDK für Java

High-level Änderungen

Die Architektur ändert sich

In Version 1 ist die Erfassung von Metriken eine globale JVM-wide Einstellung, die Sie mit einer Systemeigenschaft aktivieren. Das SDK veröffentlicht automatisch alle gesammelten Metriken unter CloudWatch. Es gibt nur ein Ziel für Metriken.

In Version 2 verwendet die Erfassung von Metriken eine austauschbare MetricPublisherSchnittstelle, die Sie einzelnen Serviceclients oder Anfragen zuordnen. Das SDK bietet drei Implementierungen:

  • CloudWatchMetricPublisher: Aggregiert Metriken und lädt sie regelmäßig hoch in. CloudWatch Am besten für Anwendungen mit langer Laufzeit geeignet.

  • EmfMetricLoggingPublisher: Schreibt Metriken als strukturierte Protokolleinträge im CloudWatch Embedded Metric Format (EMF). Am besten geeignet für Lambda-Funktionen und andere kurzlebige Umgebungen.

  • LoggingMetricPublisher: Gibt Metriken über die SLF4J-Protokollierung an die Konsole aus. Am besten für lokale Entwicklung und Debugging geeignet.

Änderungen des Umfangs

In Version 1 werden durch die Aktivierung von Metriken Daten für alle AWS Service-Clients in der JVM veröffentlicht. In Version 2 steuern Sie die Metriken auf der Ebene der Serviceclients oder auf der Ebene der einzelnen Anfragen.

Änderungen des Metriktyps

v1 erfasst drei Kategorien von Metriken: AWS Anforderungsmetriken, AWS Servicemetriken und Maschinenmetriken (Heap-Speicher, Thread-Anzahl, offene Dateideskriptoren).

v2 konzentriert sich auf SDK-Anfrage- und Antwortmetriken wie API-Aufrufdauer, Marshalling-Dauer, Signaturdauer und Anzahl der Wiederholungen. v2 sammelt keine Maschinenmetriken wie Heap-Speicher, Thread-Anzahl und offene Dateideskriptoren. Um die Erfassung von JVM-Metriken fortzusetzen CloudWatch, können Sie den Agenten mit der JMX-Metrikerfassung verwenden. CloudWatch

Änderungen der Abhängigkeiten

Die folgende Tabelle zeigt die Änderungen der Maven-Abhängigkeit und der Paketnamen zwischen Version 1 und Version 2.

Änderungen v1   v2

Maven-Abhängigkeiten

<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.12.x1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-cloudwatchmetrics</artifactId> </dependency> </dependencies>
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.x.x2</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>cloudwatch-metric-publisher</artifactId> </dependency> </dependencies>
Package name com.amazonaws.metrics software.amazon.awssdk.metrics

1 Letzte Version. 2 Letzte Version.

Das v2-Artefakt hängt vom Anwendungsfall ab, wie in der folgenden Tabelle dargestellt.

Anwendungsfall v2-Artefakt-ID Minimale SDK-Version
Long-running Anwendungen cloudwatch-metric-publisher 2.14.0
Lambda-Funktionen emf-metric-logging-publisher 2.30.3
Entwicklung und Debugging Keine zusätzliche Abhängigkeit erforderlich (LoggingMetricPublisherist im SDK-Kern enthalten) 2.14.0

API-Änderungen

Aktivieren von -Metriken

In der folgenden Tabelle wird verglichen, wie Metriken in Version 1 und Version 2 für verschiedene Anwendungsfälle aktiviert werden.

Anwendungsfall v1   v2

Aktivieren Sie Metriken weltweit

Fügen Sie eine JVM-Systemeigenschaft hinzu:

-Dcom.amazonaws.sdk.enableDefaultMetrics=credentialFile=/path/aws.properties
Nicht unterstützt Hängen Sie jedem Service-Client eine MetricPublisher an.

Metriken auf Amazon EC2 ohne Anmeldeinformationsdatei aktivieren

-Dcom.amazonaws.sdk.enableDefaultMetrics
Nicht zutreffend. v2 verwendet die Standardauflösung für Anmeldeinformationen.

Aktivieren Sie Metriken für einen Service-Client

Nicht unterstützt Die Metriken sind global oder deaktiviert.
MetricPublisher metricsPub = CloudWatchMetricPublisher.create(); DynamoDbClient ddb = DynamoDbClient.builder() .overrideConfiguration(c -> c .addMetricPublisher(metricsPub)) .build(); // ... use the client ... metricsPub.close(); ddb.close();

Aktivieren Sie Metriken für eine einzelne Anfrage

Nicht unterstützt
ddb.listTables(ListTablesRequest.builder() .overrideConfiguration(c -> c .addMetricPublisher(metricsPub)) .build());

Konfiguration des CloudWatch Ziels

Die folgende Tabelle zeigt, wie das CloudWatch Ziel in Version 1 im Vergleich zu Version 2 konfiguriert wird.

Anwendungsfall v1   v2

CloudWatch Region festlegen

Eigenschaftsattribut des Systems:

-Dcom.amazonaws.sdk.enableDefaultMetrics=cloudwatchRegion=us-west-2
CloudWatchMetricPublisher.builder() .cloudWatchClient( CloudWatchAsyncClient.builder() .region(Region.US_WEST_2) .build()) .build();

Stellen Sie die Upload-Frequenz ein

Nicht konfigurierbar. Lädt ungefähr einmal pro Minute hoch.
CloudWatchMetricPublisher.builder() .uploadFrequency(Duration.ofMinutes(5)) .build();

Legen Sie den Namespace fest CloudWatch

Fixiert auf. AWSSDK/Java

Standardeinstellung: AwsSdk/JavaSdk2. Konfigurierbar über:

CloudWatchMetricPublisher.builder() .namespace("MyApp/SDK") .build();
Anmerkung

Wenn Sie bereits CloudWatch Dashboards oder Alarme haben, die auf den Namespace v1 verweisenAWSSDK/Java, legen Sie fest.namespace("AWSSDK/Java"), dass die Kontinuität gewahrt bleibt.

Maschinenmetriken ausschließen

Attribut der Systemeigenschaft:

-Dcom.amazonaws.sdk.enableDefaultMetrics=excludeMachineMetrics
Nicht zutreffend. v2 sammelt keine Maschinenmetriken.

Metriken für Lambda-Funktionen

v1 hat keine Lambda-specific Metriklösung. Verwenden Sie in Version 2, EmfMetricLoggingPublisher das Metriken als strukturierte Protokolleinträge im CloudWatch Embedded Metric Format (EMF) schreibt:

// 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();
Anmerkung

In Lambda-Umgebungen logGroupName wird das automatisch anhand der AWS_LAMBDA_LOG_GROUP_NAME Umgebungsvariablen erkannt. In Nicht-Lambda-Umgebungen wie Amazon ECS oder Amazon EC2 müssen Sie logGroupName dies explizit auf dem Builder festlegen.

Metriken für Entwicklung und Debugging

Version 1 hat keine konsolenbasierte Ausgabe von Metriken. Verwenden Sie in v2: LoggingMetricPublisher

// v2 - Console output for debugging MetricPublisher loggingPublisher = LoggingMetricPublisher.create(); S3Client s3 = S3Client.builder() .overrideConfiguration(c -> c.addMetricPublisher(loggingPublisher)) .build();

Lebenszyklusmanagement

In Version 1 wird die Erfassung von Metriken für die gesamte Lebensdauer der JVM ausgeführt, sobald die Systemeigenschaft festgelegt ist. In Version 2 müssen Sie den Lebenszyklus von verwalten: 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();
Wichtig

Rufen Sie die MetricPublisher Instanz close auf, wenn sie nicht mehr benötigt wird. Wenn Sie dies nicht tun, kann dies zu Lecks in Thread- oder Dateideskriptoren führen.

Erforderliche Berechtigungen

In der folgenden Tabelle sind die IAM-Berechtigungen aufgeführt, die für jeden Herausgeber von Metriken erforderlich sind.

Art der Berechtigung v1 v2 (CloudWatchMetricPublisher) 2 2 (EmfMetricLoggingPublisher)
IAM-Berechtigung cloudwatch:PutMetricData cloudwatch:PutMetricData logs:PutLogEvents

Einschränkungen

Der AWS CRT-based S3-Client unterstützt derzeit die Erfassung von SDK-Metriken in Version 2 nicht.

Weitere Ressourcen