Von Application Signals erfasste Metriken - Amazon CloudWatch

Von Application Signals erfasste Metriken

Application Signals erfasst sowohl Standardanwendungsmetriken als auch Laufzeitmetriken von den Anwendungen, für die Sie es aktivieren.

Standardanwendungsmetriken beziehen sich auf die wichtigsten Aspekte der Serviceleistung, Latenz und Verfügbarkeit.

Laufzeitmetriken verfolgen Anwendungsmetriken im Zeitverlauf, einschließlich Speicherauslastung, CPU-Auslastung und Garbage Collection. Application Signals zeigt die Laufzeitmetriken im Kontext der Services an, die Sie für Application Signals aktiviert haben. Wenn Sie ein Betriebsproblem haben, kann es hilfreich sein, die Laufzeitmetriken zu beobachten, um die Ursache des Problems zu finden. Sie können beispielsweise feststellen, ob Latenzspitzen in Ihrem Service mit Spitzen in einer Laufzeitmetrik zusammenhängen.

Erfasste Standard-Anwendungsmetriken

Application Signals erfasst Standard-Anwendungsmetriken von den Services, die es entdeckt. Diese Metriken beziehen sich auf die wichtigsten Aspekte der Leistung eines Services: Latenz, Störungen und Fehler. Diese können Ihnen helfen, Probleme zu identifizieren, Leistungstrends zu überwachen und Ressourcen zu optimieren, um das allgemeine Benutzererlebnis zu verbessern.

Die folgende Tabelle listet die Metriken auf, die von Application Signals erfasst werden. Dise Metriken werden an CloudWatch im ApplicationSignals-Namespace gesendet.

Metrik Beschreibung

Latency

Die Verzögerung vor der Datenübertragung beginnt, nachdem die Anfrage gestellt wurde.

Einheiten: Millisekunden

Fault

Eine Anzahl von serverseitigen HTTP-5XX-Fehlern und OpenTelemetrie-Span-Statusfehlern.

Einheiten: keine

Error

Eine Anzahl von clientseitigen HTTP-4XX-Fehlern. Dabei handelt es sich um Anforderungsfehler, die nicht durch Serviceprobleme verursacht werden. Daher betrachtet die auf den Dashboards von Application Signals angezeigte Availability-Metrik diese Fehler nicht als Servicefehler.

Einheiten: keine

Die auf den Dashboards von Application Signals angezeigte Availability-Metrik wird als (1 – Faults/Gesamt)*100 berechnet. Die Gesamtzahl der Antworten umfasst alle Antworten und wird von SampleCount(Latency) abgeleitet. Erfolgreiche Antworten sind alle Antworten ohne einem 5XX-Fehler. 4XX-Antworten werden als erfolgreich behandelt, wenn Application Signals Availability berechnet.

Erfasste Dimensionen und Dimensionskombinationen

Die folgenden Dimensionen sind für jede der Standard-Anwendungsmetriken definiert. Weitere Informationen zu Dimensionen finden Sie unter Dimensions (Abmessungen).

Für Service-Metriken und Abhängigkeitsmetriken werden unterschiedliche Dimensionen erfasst. Wenn innerhalb der von Application Signals erkannten Services Microservice A Microservice B aufruft, wird die Anforderung an Microservice B bereitgestellt. In diesem Fall gibt Microservice A Abhängigkeitsmetriken und Microservice B Service-Metriken aus. Wenn ein Client Microservice A aufruft, stellt Microservice A die Anforderung und gibt Service-Metriken aus.

Dimensionen für Service-Metriken

Die folgenden Dimensionen werden für Service-Metriken erfasst.

Dimension Beschreibung

Service

Der Name des -Dienstes.

Der maximale Wert beträgt 255 Zeichen.

Operation

Der Name des API-Vorgangs oder der anderen Aktivität.

Der maximale Wert beträgt 1024 Zeichen. Sie können Service-Level-Ziele für Vorgänge nur festlegen, wenn der Name des Vorgangs 194 Zeichen oder weniger lang ist.

Environment

Der Name der Umgebung, in der die Services ausgeführt werden. Wenn Dienste nicht auf Amazon EKS ausgeführt werden, können Sie für deployment.environment im OTEL_ATTRIBUTE_RESOURCES-Parameter einen optionalen benutzerdefinierten Wert angeben.

Der maximale Wert beträgt 259 Zeichen.

Wenn Sie diese Metriken in der CloudWatch-Konsole anzeigen, können Sie sie mit den folgenden Dimensions-Kombinationen anzeigen:

  • [Environment, Service, Operation, [Latency, Error, Fault]]

  • [Environment, Service, [Latency, Error, Fault]]

Dimensionen für Abhängigkeitsmetriken

Die folgenden Dimensionen werden für Abhängigkeitsmetriken erfasst:

Dimension Beschreibung

Service

Der Name des -Dienstes.

Der maximale Wert beträgt 255 Zeichen.

Operation

Der Name des API-Vorgangs oder eines anderen Vorgangs.

Der maximale Wert beträgt 1024 Zeichen.

RemoteService

Der Name des aufgerufenen Remote-Services.

Der maximale Wert beträgt 255 Zeichen.

RemoteOperation

Der Name des API-Vorgangs, der aufgerufen wird.

Der maximale Wert beträgt 1024 Zeichen.

Environment

Der Name der Umgebung, in der die Services ausgeführt werden. Wenn Services nicht auf Amazon EKS ausgeführt werden, können Sie für deployment.environment im OTEL_ATTRIBUTE_RESOURCES-Parameter einen optionalen benutzerdefinierten Wert angeben.

Der maximale Wert beträgt 259 Zeichen.

RemoteEnvironment

Der Name der Umgebung, in der die Abhängigkeitsservices ausgeführt werden. Der RemoteEnvironment-Parameter wird automatisch generiert, wenn ein Service eine Abhängigkeit aufruft und beide im selben Cluster ausgeführt werden. Andernfalls wird RemoteEnvironment in den Metriken der Serviceabhängigkeit weder generiert noch gemeldet. Aktuell nur auf Amazon EKS und K8S-Plattformen verfügbar.

Der maximale Wert beträgt 259 Zeichen.

RemoteResourceIdentifier

Der Name der Ressource, die durch einen Remote-Aufruf aufgerufen wird. Der RemoteResourceIdentifier-Parameter wird automatisch generiert, wenn der Service einen Remote-AWS-Service aufruft. Andernfalls wird RemoteResourceIdentifier in den Metriken der Serviceabhängigkeit weder generiert noch gemeldet.

Der maximale Wert beträgt 1024 Zeichen.

RemoteResourceType

Der Typ der Ressource, die durch einen Remote-Aufruf aufgerufen wird. Nur erforderlich, wenn RemoteResourceIdentifier definiert ist.

Der maximale Wert beträgt 1024 Zeichen.

Wenn Sie diese Metriken in der CloudWatch-Konsole anzeigen, können Sie sie mit den folgenden Dimensions-Kombinationen anzeigen:

Wird auf Amazon-EKS-Clustern ausgeführt

  • [Environment, Service, Operation, RemoteService, RemoteOperation, RemoteEnvironment, RemoteResourceIdentifier, RemoteResourceType, [Latency, Error, Fault]]

  • [Environment, Service, Operation, RemoteService, RemoteOperation, RemoteEnvironment, [Latency, Error, Fault]]

  • [Environment, Service, Operation, RemoteService, RemoteOperation, RemoteResourceIdentifier, RemoteResourceType, [Latency, Error, Fault]]

  • [Environment, Service, Operation, RemoteService, RemoteOperation, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteEnvironment, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteOperation, RemoteEnvironment, RemoteResourceIdentifier, RemoteResourceType, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteOperation, RemoteEnvironment, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteOperation, RemoteResourceIdentifier, RemoteResourceType, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteOperation, [Latency, Error, Fault]]

  • [RemoteService [Latency, Error, Fault]]

  • [RemoteService, RemoteResourceIdentifier, RemoteResourceType [Latency, Error, Fault]]

Laufzeitmetriken

Application Signals verwendet das AWS Distro für OpenTelemetry SDK, um automatisch OpenTelemetry-kompatible Metriken aus Ihren Java- und Python-Anwendungen zu erfassen. Um Laufzeit-Metriken zu erfassen, müssen Sie die folgenden Anforderungen erfüllen:

  • Der CloudWatch-Agent muss Version 1.300049.1 oder höher sein.

  • Wenn Sie das Amazon CloudWatch Observability EKS-Add-on verwenden, muss es Version 2.30-eksbuild.1 oder höher sein. Wenn Sie das Add-on aktualisieren, müssen Sie Ihre Anwendungen neu starten.

  • Für Java-Anwendungen müssen Sie 1.32.5 oder höher für das AWS Distro für OpenTelemetry SDK für Java ausführen.

  • Für Python-Anwendungen müssen Sie 0.7.0 oder höher für das AWS Distro für OpenTelemetry SDK für Python ausführen.

  • Für .Net-Anwendungen müssen Sie 1.6.0 oder höher für das AWS Distro für OpenTelemetry SDK für .Net ausführen.

Laufzeitmetriken werden für Node.js-Anwendungen nicht erfasst.

Laufzeitmetriken sind Teil der Kosten für Application Signals. Weitere Informationen zur Preisgestaltung von CloudWatch finden Sie unter Amazon CloudWatch – Preise.

Anmerkung

Bekannte Probleme

Die Erfassung von Laufzeit-Metriken in der Java-SDK-Version v1.32.5 funktioniert bekannterweise nicht mit Anwendungen, die JBoss Wildfly verwenden. Dieses Problem erstreckt sich auf das Beobachtbarkeits-EKS-Add-on von Amazon CloudWatch und betrifft die Versionen 2.3.0-eksbuild.1 bis 2.6.0-eksbuild.1. Das Problem wurde in der Java-SDK-Version v1.32.6 und der Amazon CloudWatch Beobachtbarkeits-EKS-Add-on Version v3.0.0-eksbuild.1 verfügbar.

Wenn Sie betroffen sind, aktualisieren Sie entweder die Java SDK-Version oder deaktivieren Sie die Erfassung Ihrer Laufzeitmetriken, indem Sie die Umgebungsvariable OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false zu Ihrer Anwendung hinzufügen.

Java-Laufzeit-Metriken

Application Signals erfasst die folgenden JVM-Metriken von Java-Anwendungen, die Sie für Application Signals aktivieren. Alle Laufzeitmetriken werden im ApplicationSignals-Namespace an CloudWatch gesendet und mit dem Dimensionssatz Service und Environment erfasst.

Metrikname Beschreibung Aussagekräftige Statistiken

JVMGCDuration

Aggregierte Metrik für die Dauer von JVM-Garbage-Collection-Aktionen.

Einheit: Millisekunden

Summe, Durchschnitt, Minimum, Maximum

JVMGCOldGenDuration

Aggregierte Metrik für die Dauer von JVM-Garbage-Collection-Aktionen der alten Generation. Nur in G1 verfügbar.

Einheit: Millisekunden

Summe, Durchschnitt, Minimum, Maximum

JVMGCYoungGenDuration

Aggregierte Metrik für die Dauer der JVM-Garbage-Collection-Aktionen der jungen Generation. Nur in G1 verfügbar.

Einheit: Millisekunden

Summe, Durchschnitt, Minimum, Maximum

JVMGCCount

Aggregierte Metrik für die Anzahl der JVM-Garbage-Collection-Aktionen.

Einheit: keine

Summe, Durchschnitt, Minimum, Maximum

JVMGCOldGenCount

Aggregierte Metrik für die Anzahl der JVM-Garbage-Collection-Aktionen der alten Generation. Nur in G1 verfügbar.

Einheit: keine

Summe, Durchschnitt, Minimum, Maximum

JVMGCYoungGenCount

Aggregierte Metrik für die Anzahl der JVM-Garbage-Collection-Aktionen der jungen Generation. Nur in G1 verfügbar.

Einheit: keine

Summe, Durchschnitt, Minimum, Maximum

JVMMemoryHeapUsed

Die Menge des verwendeten Heap-Arbeitsspeichers.

Einheit: Byte

Durchschnitt, Minimum, Maximum

JVMMemoryUsedAfterLastGC

Menge des verwendeten Arbeitsspeichers, gemessen nach dem letzten Garbage-Collection-Ereignis in diesem Pool.

Einheit: Byte

Durchschnitt, Minimum, Maximum

JVMMemoryOldGenUsed

Die Gesamtzahl des von der alten Generation verwendeten Arbeitsspeichers.

Einheit: Byte

Durchschnitt, Minimum, Maximum

JVMMemorySurvivorSpaceUsed

Die Menge des Arbeitsspeicher-Heaps, die vom Survivor Space verwendet wird.

Einheit: Byte

Durchschnitt, Minimum, Maximum

JVMMemoryEdenSpaceUsed

Die Menge des vom Eden Space verwendeten Arbeitsspeichers

Einheit: Byte

Durchschnitt, Minimum, Maximum

JVMMemoryNonHeapUsed

Die Menge des verwendeten Non-Heap-Arbeitsspeichers.

Einheit: Byte

Durchschnitt, Minimum, Maximum

JVMThreadCount

Die Anzahl der ausgeführten Threads, einschließlich Daemon- und Nicht-Daemon-Threads.

Einheit: keine

Summe, Durchschnitt, Minimum, Maximum

JVMClassLoaded

Die Anzahl der geladenen Klassen.

Einheit: keine

Summe, Durchschnitt, Minimum, Maximum

JVMCpuTime

Die vom Prozess verwendete CPU-Zeit, wie von der JVM gemeldet.

Einheit: Keine (Nanosekunden)

Summe, Durchschnitt, Minimum, Maximum

JVMCpuRecentUtilization

Die zuletzt vom Prozess verwendete CPU, wie von der JVM gemeldet.

Einheit: keine

Durchschnitt, Minimum, Maximum

Python-Laufzeitmetriken

Application Signals sammelt die folgenden Metriken aus Python-Anwendungen, die Sie für Application Signals aktivieren. Alle Laufzeitmetriken werden im ApplicationSignals-Namespace an CloudWatch gesendet und mit dem Dimensionssatz Service und Environment erfasst.

Metrikname Beschreibung Aussagekräftige Statistiken

PythonProcessGCCount

Die Gesamtzahl von Objekten, die aktuell verfolgt werden.

Einheit: keine

Summe, Durchschnitt, Minimum, Maximum

PythonProcessGCGen0Count

Die Anzahl der Objekte, die derzeit in Generation 0 verfolgt werden.

Einheit: keine

Summe, Durchschnitt, Minimum, Maximum

PythonProcessGCGen1Count

Die Anzahl der Objekte, die derzeit in Generation 1 verfolgt werden.

Einheit: keine

Summe, Durchschnitt, Minimum, Maximum

PythonProcessGCGen2Count

Die Anzahl der Objekte, die derzeit in Generation 2 verfolgt werden.

Einheit: keine

Summe, Durchschnitt, Minimum, Maximum

PythonProcessVMSMemoryUsed

Die Menge an virtuellem Speicher, die der Prozess verwendet.

Einheit: Byte

Durchschnitt, Minimum, Maximum

PythonProcessRSSMemoryUsed

Die Gesamtmenge des vom Prozess verwendeten physischen Speichers ohne Swapping.

Einheit: Byte

Durchschnitt, Minimum, Maximum

PythonProcessThreadCount

Die Gesamtzahl der Threads, die aktuell vom Prozess verwendet werden.

Einheit: keine

Summe, Durchschnitt, Minimum, Maximum

PythonProcessCpuTime

Die vom Prozess genutzte CPU-Zeit.

Einheit: Sekunden

Summe, Durchschnitt, Minimum, Maximum

PythonProcessCpuUtilization

Die CPU-Auslastung des Prozesses.

Einheit: keine

Durchschnitt, Minimum, Maximum

.Net-Laufzeitmetriken

Application Signals sammelt die folgenden Metriken von .Net-Anwendungen, die Sie für Application Signals aktivieren. Alle Laufzeitmetriken werden im ApplicationSignals-Namespace an CloudWatch gesendet und mit dem Dimensionssatz Service und Environment erfasst.

Metrikname Beschreibung Aussagekräftige Statistiken

DotNetGCGen0Count

Die Gesamtzahl der Garbage-Collection-Metriken, die in Generation 0 seit Beginn des Prozesses erfasst wurden.

Einheit: keine

Summe, Durchschnitt, Minimum, Maximum

DotNetGCGen1Count

Die Gesamtzahl der Garbage-Collection-Metriken, die in Generation 1 seit Beginn des Prozesses erfasst wurden.

Einheit: keine

Summe, Durchschnitt, Minimum, Maximum

DotNetGCGen2Count

Die Gesamtzahl der Garbage-Collection-Metriken, die in Generation 2 seit Beginn des Prozesses erfasst wurden.

Einheit: keine

Summe, Durchschnitt, Minimum, Maximum

DotNetGCDuration

Die gesamte Zeit, die seit dem Start des Prozesses bei der Garbage Collection angehalten wurde.

Einheit: keine

Summe, Durchschnitt, Minimum, Maximum

DotNetGCGen0HeapSize

Die Heap-Größe (einschließlich Fragmentierung) der Generation 0, die bei der letzten Garbage Collection beobachtet wurde.

Anmerkung

Diese Metrik ist erst nach Beendigung der ersten Garbage Collection verfügbar.

Einheit: Byte

Durchschnitt, Minimum, Maximum

DotNetGCGen1HeapSize

Die Heap-Größe (einschließlich Fragmentierung) der Generation 1, die bei der letzten Garbage Collection beobachtet wurde.

Anmerkung

Diese Metrik ist erst nach Beendigung der ersten Garbage Collection verfügbar.

Einheit: Byte

Durchschnitt, Minimum, Maximum

DotNetGCGen2HeapSize

Die Heap-Größe (einschließlich Fragmentierung) der Generation 2, die bei der letzten Garbage Collection beobachtet wurde.

Anmerkung

Diese Metrik ist erst nach Beendigung der ersten Garbage Collection verfügbar.

Einheit: Byte

Durchschnitt, Minimum, Maximum

DotNetGCLOHHeapSize

Die Heap-Größe des großen Objekts (einschließlich Fragmentierung), die bei der letzten Garbage Collection beobachtet wurde.

Anmerkung

Diese Metrik ist erst nach Beendigung der ersten Garbage Collection verfügbar.

Einheit: Byte

Durchschnitt, Minimum, Maximum

DotNetGCPOHHeapSize

Die Heap-Größe des fixierten Objekts (einschließlich Fragmentierung), die bei der letzten Garbage Collection beobachtet wurde.

Anmerkung

Diese Metrik ist erst nach Beendigung der ersten Garbage Collection verfügbar.

Einheit: Byte

Durchschnitt, Minimum, Maximum

DotNetThreadCount

Die Anzahl der Thread-Pool-Threads, die derzeit existieren.

Einheit: keine

Durchschnitt, Minimum, Maximum

DotNetThreadQueueLength

Die Anzahl der Arbeitselemente, die sich derzeit in der Warteschlange befinden, um vom Thread-Pool verarbeitet zu werden.

Einheit: keine

Durchschnitt, Minimum, Maximum

Deaktivierung der Erfassung von Laufzeitmetriken

Laufzeitmetriken werden standardmäßig für Java- und Python-Anwendungen erfasst, die für Application Signals aktiviert sind. Wenn Sie die Erfassung dieser Metriken deaktivieren möchten, folgen Sie den Anweisungen in diesem Abschnitt für Ihre Umgebung.

Amazon EKS

Um Laufzeitmetriken in Amazon-EKS-Anwendungen auf Anwendungsebene zu deaktivieren, fügen Sie Ihrer Workload-Spezifikation die folgende Umgebungsvariable hinzu.

env: - name: OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED value: "false"

Um Laufzeitmetriken in Amazon-EKS-Anwendungen auf Cluster-Ebene zu deaktivieren, wenden Sie die Konfiguration auf die erweiterte Konfiguration Ihres Amazon-CloudWatch-Beobachtbarkeits-EKS-Add-ons an.

{ "agent": { "config": { "traces": { "traces_collected": { "application_signals": { } } }, "logs": { "metrics_collected": { "application_signals": { } } } }, "manager": { "autoInstrumentationConfiguration": { "java": { "runtime_metrics": { "enabled": false } }, "python": { "runtime_metrics": { "enabled": false } }, "dotnet": { "runtime_metrics": { "enabled": false } } } } } }

Amazon ECS

Um Laufzeitmetriken in Amazon-ECS-Anwendungen zu deaktivieren, fügen Sie die Umgebungsvariable OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false in der neuen Version der Aufgabendefinition hinzu und stellen Sie die Anwendung erneut bereit.

EC2

Um Laufzeitmetriken in Amazon-EC2-Anwendungen zu deaktivieren, fügen Sie die Umgebungsvariable OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false hinzu, bevor die Anwendung gestartet wird.

Kubernetes

Um Laufzeitmetriken in Kubernetes-Anwendungen auf Anwendungsebene zu deaktivieren, fügen Sie Ihrer Workload-Spezifikation die folgende Umgebungsvariable hinzu.

env: - name: OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED value: "false"

Verwenden Sie Folgendes, um Laufzeitmetriken in Kubernetes-Anwendungen auf Clusterebene zu deaktivieren:

helm upgrade ... \ --set-string manager.autoInstrumentationConfiguration.java.runtime_metrics.enabled=false \ --set-string manager.autoInstrumentationConfiguration.python.runtime_metrics.enabled=false \ -\-set-string manager.autoInstrumentationConfiguration.dotnet.runtime_metrics.enabled=false