Métriques collectées par la vigie applicative - Amazon CloudWatch

Métriques collectées par la vigie applicative

La vigie applicative collecte à la fois les métriques d’application standard et les métriques d’exécution des applications pour lesquelles vous l’activez.

Les métriques d’application standard concernent les aspects les plus critiques des performances, de la latence et de la disponibilité des services.

Les métriques d’exécution suivent les métriques d’application au fil du temps, notamment l’utilisation de la mémoire, l’utilisation du processeur et la récupération de mémoire. La vigie applicative affiche les métriques d’exécution dans le contexte des services pour lesquels vous avez activé la vigie applicative. En cas de problème opérationnel, l’observation des métriques d’exécution peut être utile pour vous aider à trouver une cause racine du problème. Par exemple, vous pouvez voir si les pics de latence de votre service sont liés à des pics dans une métrique d’exécution.

Métriques d’application standard collectées

Application Signals collecte des métriques d’application standard à partir des services qu’il découvre. Ces indicateurs concernent les aspects les plus critiques des performances d’un service : latence, défaillances et erreurs. Ils peuvent vous aider à identifier les problèmes, à surveiller les tendances en matière de performances et à optimiser les ressources afin d’améliorer l’expérience utilisateur globale.

Le tableau suivant répertorie les métriques collectées par Application Signals. Ces métriques sont envoyées à CloudWatch dans l’espace de noms ApplicationSignals.

Métrique Description

Latency

Le délai avant le début du transfert de données ne commence qu’une fois la demande effectuée.

Unités : millisecondes

Fault

Nombre d’erreurs HTTP 5XX côté serveur et d’erreurs d’état d’intervalle OpenTelemetry.

Unités : aucune

Error

Nombre d’erreurs HTTP 4XX côté client. Ces erreurs sont considérées comme des erreurs de requête qui ne sont pas dues à des problèmes de service. Par conséquent, la métrique Availability affichée sur les tableaux de bord d’Application Signals ne considère pas ces erreurs comme des défauts de service.

Unités : aucune

La métrique Availability affichée sur les tableaux de bord de la vigie applicative est calculée comme suit : (1 - Faults/Total)*100. Le nombre total de réponses comprend toutes les réponses et est dérivé de SampleCount(Latency). Les réponses réussies sont toutes les réponses sans erreur 5XX. Les réponses 4XX sont considérées comme réussies lorsqu’Application Signals évalue Availability.

Dimensions collectées et combinaisons de dimensions

Les dimensions suivantes sont définies pour chacune des métriques d’application standard. Pour plus d’informations sur les dimensions, veuillez consulter la rubrique Dimensions.

Différentes dimensions sont collectées pour les métriques de service et les métriques de dépendance. Dans les services découverts par Application Signals, lorsque le microservice A appelle le microservice B, le microservice B répond à la requête. Dans ce cas, le microservice A émet des métriques de dépendance et le microservice B émet des métriques de service. Lorsqu’un client appelle le microservice A, le microservice A répond à la requête et émet des métriques de service.

Dimension pour les métriques de service

Les dimensions suivantes sont collectées pour les métriques de service.

Dimension Description

Service

Le nom du service .

La valeur maximale est 255 caractères.

Operation

Nom de l’opération API ou d’une autre activité.

La valeur maximale est de 1 024 caractères. Vous ne pouvez définir des objectifs de niveau de service sur les opérations que si le nom de l’opération comporte 194 caractères ou moins.

Environment

Le nom de l’environnement dans lequel les services sont exécutés. Si les services ne sont pas exécutés sur Amazon EKS, vous pouvez spécifier une valeur personnalisée facultative pour deployment.environment dans le paramètre OTEL_ATTRIBUTE_RESOURCES.

La valeur maximale est 259 caractères.

Lorsque vous affichez ces métriques dans la console CloudWatch, vous pouvez les consulter à l’aide des combinaisons de dimensions suivantes :

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

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

Dimensions pour les métriques de dépendance

Les dimensions suivantes sont collectées pour les métriques de dépendance :

Dimension Description

Service

Le nom du service .

La valeur maximale est 255 caractères.

Operation

Le nom de l’opération API ou d’une autre opération.

La valeur maximale est 1024 caractères.

RemoteService

Le nom du service distant invoqué.

La valeur maximale est 255 caractères.

RemoteOperation

Le nom de l’opération API invoquée.

La valeur maximale est 1024 caractères.

Environment

Le nom de l’environnement dans lequel les services sont exécutés. Si les services ne sont pas exécutés sur Amazon EKS, vous pouvez spécifier une valeur personnalisée facultative pour deployment.environment dans le paramètre OTEL_ATTRIBUTE_RESOURCES.

La valeur maximale est de 259 caractères.

RemoteEnvironment

Le nom de l’environnement dans lequel les services de dépendance sont exécutés. Le paramètre RemoteEnvironment est généré automatiquement lorsqu’un service appelle une dépendance et qu’ils sont tous deux exécutés dans le même cluster. Sinon, RemoteEnvironment n’est ni généré ni signalé dans les métriques de dépendance du service. Actuellement disponible uniquement sur les plateformes Amazon EKS et K8S.

La valeur maximale est 259 caractères.

RemoteResourceIdentifier

Le nom de la ressource invoquée par un appel distant. Le paramètre RemoteResourceIdentifier est automatiquement généré si le service appelle un service AWS distant. Sinon, RemoteResourceIdentifier n’est ni généré ni signalé dans les métriques de dépendance du service.

La valeur maximale est 1024 caractères.

RemoteResourceType

Le type de ressource invoquée par un appel distant. Requis uniquement si RemoteResourceIdentifier est défini.

La valeur maximale est 1024 caractères.

Lorsque vous affichez ces métriques dans la console CloudWatch, vous pouvez les consulter à l’aide des combinaisons de dimensions suivantes :

Exécution sur des clusters Amazon EKS

  • [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]]

Métriques d’exécution

La vigie applicative utilise le kit SDK AWS Distro for OpenTelemetry pour collecter automatiquement les métriques compatibles avec OpenTelemetry à partir de vos applications Java et Python. Pour que les métriques d’exécution soient collectées, vous devez remplir les conditions préalables suivantes :

  • Votre agent CloudWatch doit être de version 1.300049.1 ou ultérieure.

  • Si vous utilisez le module complémentaire EKS d’observabilité Amazon CloudWatch, il doit être de version 2.30-eksbuild.1 ou ultérieure. Si vous mettez à jour le module complémentaire, vous devez redémarrer vos applications.

  • Pour les applications Java, vous devez exécuter la version 1.32.5 ou ultérieure de l’AWS Distro for OpenTelemetry pour Java.

  • Pour les applications Python, vous devez exécuter la version 0.7.0 ou ultérieure de l’AWS Distro for OpenTelemetry pour Python.

  • Pour les applications .Net, vous devez exécuter la version 1.6.0 ou ultérieure de l’AWS Distro for OpenTelemetry pour .Net.

Les métriques d’exécution ne sont pas collectées pour les applications Node.js.

Les métriques d’exécution sont facturées dans le cadre des coûts de la vigie applicative. Pour plus d'informations sur la tarification CloudWatch, consultez Tarification d'Amazon CloudWatch.

Note

Problèmes connus

La collecte de métriques d’exécution dans la version 1.32.5 du kit SDK Java est connue pour ne pas fonctionner avec les applications utilisant JBoss Wildfly. Ce problème s’étend au module complémentaire EKS d’observabilité Amazon CloudWatch, affectant les versions 2.3.0-eksbuild.1 à 2.6.0-eksbuild.1. Le problème est résolu dans la version v1.32.6 du kit SDK Java et dans la version v3.0.0-eksbuild.1 du module complémentaire EKS d’observabilité Amazon CloudWatch.

Si vous êtes concerné, mettez à niveau la version du kit SDK Java ou désactivez la collecte des métriques d’exécution en ajoutant la variable d’environnement OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false à votre application.

Métriques d’exécution Java

La vigie applicative collecte les métriques JVM suivantes à partir des applications Java que vous activez pour la vigie applicative. Toutes les métriques d’exécution sont envoyées à CloudWatch dans l’espace de noms ApplicationSignals et sont collectées avec les dimensions Service et Environment.

Nom des métriques Description Statistiques significatives

JVMGCDuration

Métrique agrégée pour la durée des actions de récupérateur de mémoire JVM.

Unité : millisecondes

Somme, moyenne, minimum, maximum

JVMGCOldGenDuration

Métrique agrégée pour la durée des actions de récupérateur de mémoire JVM de l’ancienne génération. Disponible uniquement dans G1.

Unité : millisecondes

Somme, moyenne, minimum, maximum

JVMGCYoungGenDuration

Métrique agrégée pour la durée des actions de récupérateur de mémoire JVM de de la nouvelle génération. Disponible uniquement dans G1.

Unité : millisecondes

Somme, moyenne, minimum, maximum

JVMGCCount

Métrique agrégée pour le nombre d’actions de récupérateur de mémoire JVM.

Unité : aucune

Somme, moyenne, minimum, maximum

JVMGCOldGenCount

Métrique agrégée pour le nombre d’actions de récupérateur de mémoire JVM de l’ancienne génération. Disponible uniquement dans G1.

Unité : aucune

Somme, moyenne, minimum, maximum

JVMGCYoungGenCount

Métrique agrégée pour le nombre d’actions de récupérateur de mémoire JVM de la nouvelle génération. Disponible uniquement dans G1.

Unité : aucune

Somme, moyenne, minimum, maximum

JVMMemoryHeapUsed

Quantité de mémoire de tas utilisée.

Unité : octets

Moyenne, Minimum, Maximum

JVMMemoryUsedAfterLastGC

Quantité de mémoire utilisée, telle que mesurée après le dernier événement de récupérateur de mémoire sur ce groupe.

Unité : octets

Moyenne, Minimum, Maximum

JVMMemoryOldGenUsed

Quantité de mémoire utilisée par l’ancienne génération.

Unité : octets

Moyenne, Minimum, Maximum

JVMMemorySurvivorSpaceUsed

Quantité de mémoire de tas utilisée par l’espace survivant.

Unité : octets

Moyenne, Minimum, Maximum

JVMMemoryEdenSpaceUsed

Quantité de mémoire utilisée par l’espace eden.

Unité : octets

Moyenne, Minimum, Maximum

JVMMemoryNonHeapUsed

Quantité de mémoire non-tas utilisée.

Unité : octets

Moyenne, Minimum, Maximum

JVMThreadCount

Nombre de threads en cours d’exécution, y compris les threads daemon et non daemon.

Unité : aucune

Somme, moyenne, minimum, maximum

JVMClassLoaded

Nombre de classes chargées.

Unité : aucune

Somme, moyenne, minimum, maximum

JVMCpuTime

Le temps processeur utilisé par le processus, tel que rapporté par la JVM.

Unité : Aucune (nanosecondes)

Somme, moyenne, minimum, maximum

JVMCpuRecentUtilization

Le temps processeur récemment utilisé par le processus, tel que rapporté par la JVM.

Unité : aucune

Moyenne, Minimum, Maximum

Métriques d’exécution Python

La vigie applicative collecte les métriques suivantes à partir des applications Python que vous activez pour la vigie applicative. Toutes les métriques d’exécution sont envoyées à CloudWatch dans l’espace de noms ApplicationSignals et sont collectées avec les dimensions Service et Environment.

Nom des métriques Description Statistiques significatives

PythonProcessGCCount

Le nombre total d’objets actuellement suivis.

Unité : aucune

Somme, moyenne, minimum, maximum

PythonProcessGCGen0Count

Le nombre d’objets actuellement suivis dans Génération 0.

Unité : aucune

Somme, moyenne, minimum, maximum

PythonProcessGCGen1Count

Le nombre d’objets actuellement suivis dans Génération 1.

Unité : aucune

Somme, moyenne, minimum, maximum

PythonProcessGCGen2Count

Le nombre d’objets actuellement suivis dans Génération 2.

Unité : aucune

Somme, moyenne, minimum, maximum

PythonProcessVMSMemoryUsed

Quantité totale de mémoire virtuelle utilisée par le processus.

Unité : octets

Moyenne, Minimum, Maximum

PythonProcessRSSMemoryUsed

Quantité totale de mémoire physique non permutée utilisée par le processus.

Unité : octets

Moyenne, Minimum, Maximum

PythonProcessThreadCount

Nombre de threads actuellement utilisés par le processus.

Unité : aucune

Somme, moyenne, minimum, maximum

PythonProcessCpuTime

Temps processeur utilisé par le processus.

Unité : secondes

Somme, moyenne, minimum, maximum

PythonProcessCpuUtilization

Utilisation du processeur par le processus.

Unité : aucune

Moyenne, Minimum, Maximum

Métrique d’exécution .Net

La vigie applicative collecte les métriques suivantes à partir des applications .Net que vous activez pour la vigie applicative. Toutes les métriques d’exécution sont envoyées à CloudWatch dans l’espace de noms ApplicationSignals et sont collectées avec les dimensions Service et Environment.

Nom des métriques Description Statistiques significatives

DotNetGCGen0Count

Nombre total de métriques de récupérateur de mémoire suivies dans Génération 0 depuis le démarrage du processus.

Unité : aucune

Somme, moyenne, minimum, maximum

DotNetGCGen1Count

Nombre total de métriques de récupérateur de mémoire suivies dans Génération 1 depuis le démarrage du processus.

Unité : aucune

Somme, moyenne, minimum, maximum

DotNetGCGen2Count

Nombre total de métriques de récupérateur de mémoire suivies dans Génération 2 depuis le démarrage du processus.

Unité : aucune

Somme, moyenne, minimum, maximum

DotNetGCDuration

Durée totale de pause dans le récupérateur de mémoire depuis le démarrage du processus.

Unité : aucune

Somme, moyenne, minimum, maximum

DotNetGCGen0HeapSize

Taille du tas (y compris la fragmentation) de Génération 0 observée lors du dernier récupérateur de mémoire.

Note

Cette métrique n’est disponible qu’après la fin du premier récupérateur de mémoire.

Unité : octets

Moyenne, Minimum, Maximum

DotNetGCGen1HeapSize

Taille du tas (y compris la fragmentation) de Génération 1 observée lors du dernier récupérateur de mémoire.

Note

Cette métrique n’est disponible qu’après la fin du premier récupérateur de mémoire.

Unité : octets

Moyenne, Minimum, Maximum

DotNetGCGen2HeapSize

Taille du tas (y compris la fragmentation) de Génération 2 observée lors du dernier récupérateur de mémoire.

Note

Cette métrique n’est disponible qu’après la fin du premier récupérateur de mémoire.

Unité : octets

Moyenne, Minimum, Maximum

DotNetGCLOHHeapSize

Taille du tas d’objets volumineux (y compris la fragmentation) observée lors du dernier récupérateur de mémoire.

Note

Cette métrique n’est disponible qu’après la fin du premier récupérateur de mémoire.

Unité : octets

Moyenne, Minimum, Maximum

DotNetGCPOHHeapSize

Taille du tas d’objets épinglés (y compris la fragmentation) observée lors du dernier récupérateur de mémoire.

Note

Cette métrique n’est disponible qu’après la fin du premier récupérateur de mémoire.

Unité : octets

Moyenne, Minimum, Maximum

DotNetThreadCount

Nombre de threads du groupe de threads actuellement existants.

Unité : aucune

Moyenne, Minimum, Maximum

DotNetThreadQueueLength

Nombre d’éléments de travail actuellement en attente d’être traités par le groupe de threads.

Unité : aucune

Moyenne, Minimum, Maximum

Désactivation de la collecte des métriques d’exécution

Les métriques d’exécution sont collectées par défaut pour les applications Java et Python qui sont activées pour la vigie applicative. Si vous voulez désactiver la collecte de ces métriques, veuillez suivre les instructions de cette section pour votre environnement.

Amazon EKS

Pour désactiver les métriques d’exécution dans les applications Amazon EKS au niveau de l’application, ajoutez la variable d’environnement suivante à votre spécification de charge de travail.

env: - name: OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED value: "false"

Pour désactiver les métriques d’exécution dans les applications Amazon EKS au niveau du cluster, appliquez la configuration à la configuration avancée de votre module complémentaire EKS d’observabilité Amazon CloudWatch.

{ "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

Pour désactiver les métriques d’exécution dans les applications Amazon ECS, ajoutez la variable d’environnement OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false dans la nouvelle révision de définition de tâche et redéployez l’application.

EC2

Pour désactiver les métriques d’exécution dans les applications Amazon EC2, ajoutez la variable d’environnement OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false avant le démarrage de l’application.

Kubernetes

Pour désactiver les métriques d’exécution dans les applications Kubernetes au niveau de l’application, ajoutez la variable d’environnement suivante à votre spécification de charge de travail.

env: - name: OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED value: "false"

Pour désactiver les métriques d’exécution dans les applications Kubernetes au niveau du cluster, utilisez ce qui suit :

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