Métricas que Application Signals recopila - Amazon CloudWatch

Métricas que Application Signals recopila

Application Signals recopila tanto métricas de aplicaciones estándar como métricas de tiempo de ejecución de las aplicaciones para las que se habilita.

Las métricas de las aplicaciones estándar se relacionan con los aspectos más críticos del rendimiento, la latencia y la disponibilidad de un servicio.

Las métricas de tiempo de ejecución rastrean las métricas de las aplicaciones a lo largo del tiempo, incluidos el uso de memoria, el uso de la CPU y la recopilación de elementos no utilizados. Application Signals muestra las métricas de tiempo de ejecución en el contexto de los servicios que se han habilitado para Application Signals. Cuando tiene un problema operativo, observar las métricas de tiempo de ejecución puede resultar útil para ayudar a encontrar la causa raíz del problema. Por ejemplo, puede ver si los picos de latencia de un servicio se relacionan con los picos de una métrica de tiempo de ejecución.

Recopilación de métricas de aplicaciones estándar

Application Signals recopila métricas de aplicaciones estándar a partir de los servicios que detecta. Estas métricas se relacionan con los aspectos más críticos del rendimiento de un servicio: latencia, fallos y errores. Pueden ayudarlo a identificar problemas, monitorear las tendencias de rendimiento y optimizar los recursos para mejorar la experiencia general del usuario.

La siguiente tabla enumera las métricas recopiladas por Application Signals. Estas métricas se envían a CloudWatch en el espacio de nombres ApplicationSignals.

Métrica Descripción

Latency

El retraso antes de la transferencia de datos comienza una vez realizada la solicitud.

Unidades: milisegundos

Fault

Un recuento de los errores del servidor HTTP 5XX y de los errores de estado del intervalo de OpenTelemetry.

Unidades: ninguna

Error

Un recuento de los errores HTTP 4XX del cliente. Se los considera errores de solicitud que no se deben a problemas de servicio. Por lo tanto, la métrica Availability que se muestra en los paneles de Application Signals no considera estos errores como fallos del servicio.

Unidades: ninguna

La métrica Availability que se muestra en los paneles de Application Signals se calcula como (1 - Faults/Total)*100. El total de respuestas incluye todas las respuestas y se deriva de SampleCount(Latency). Las respuestas correctas son todas las respuestas sin el error 5XX. Las respuestas 4XX se consideran correctas cuando Application Signals calcula la Availability.

Dimensiones recopiladas y combinaciones de dimensiones

Se definen las siguientes dimensiones para cada una de las métricas de aplicaciones estándar. Para obtener más información acerca de las dimensiones, consulte Dimensiones.

Se recopilan diferentes dimensiones para las métricas de servicio y las métricas de dependencia. Dentro de los servicios detectados por Application Signals, cuando el microservicio A llama al microservicio B, el microservicio B atiende la solicitud. En este caso, el microservicio A emite métricas de dependencia y el microservicio B emite métricas de servicio. Cuando un cliente llama al microservicio A, el microservicio A atiende la solicitud y emite las métricas del servicio.

Dimensiones de métricas de servicio

Se recopilan las siguientes dimensiones para las métricas de servicio.

Dimensión Descripción

Service

El nombre del servicio de .

El valor máximo es de 255 caracteres.

Operation

El nombre de la operación de la API u otra actividad.

La longitud máxima es de 1024 caracteres. Actualmente, solo puede establecer objetivos de servicios para las operaciones si el nombre de la operación tiene 194 caracteres o menos.

Environment

El nombre del entorno en el que se ejecutan los servicios. Si los servicios no se ejecutan en Amazon EKS, puede especificar un valor personalizado opcional para deployment.environment en el parámetro OTEL_ATTRIBUTE_RESOURCES.

La longitud máxima es de 259 caracteres.

Al observar estas métricas en la consola de CloudWatch, puede verlas con las siguientes combinaciones de dimensiones:

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

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

Dimensiones de las métricas de dependencia

Las siguientes dimensiones se recopilan para las métricas de dependencia:

Dimensión Descripción

Service

El nombre del servicio de .

El valor máximo es de 255 caracteres.

Operation

El nombre de la operación de la API u otra operación.

El valor máximo es de 1024 caracteres.

RemoteService

El nombre del servicio remoto que se invoca.

El valor máximo es de 255 caracteres.

RemoteOperation

El nombre de la operación de API que se invoca.

El valor máximo es de 1024 caracteres.

Environment

El nombre del entorno en el que se ejecutan los servicios. Si los servicios no se ejecutan en Amazon EKS, puede especificar un valor personalizado opcional para deployment.environment en el parámetro OTEL_ATTRIBUTE_RESOURCES.

La longitud máxima es de 259 caracteres.

RemoteEnvironment

El nombre del entorno en el que se ejecutan los servicios de dependencia. El parámetro RemoteEnvironment se genera automáticamente cuando un servicio llama a una dependencia y ambos se ejecutan en el mismo clúster. De lo contrario, RemoteEnvironment no se genera ni se informa en las métricas de la dependencia del servicio. En la actualidad, solo está disponible en Amazon EKS y en las plataformas de K8S.

El valor máximo es de 259 caracteres.

RemoteResourceIdentifier

El nombre del recurso invocado por una llamada remota. El parámetro RemoteResourceIdentifier se genera automáticamente si el servicio llama a un servicio remoto de AWS. De lo contrario, RemoteResourceIdentifier no se genera ni se informa en las métricas de la dependencia del servicio.

El valor máximo es de 1024 caracteres.

RemoteResourceType

El tipo del recurso invocado por una llamada remota. Solo es obligatorio si RemoteResourceIdentifier está definido.

El valor máximo es de 1024 caracteres.

Al observar estas métricas en la consola de CloudWatch, puede verlas con las siguientes combinaciones de dimensiones:

Se ejecuta en clústeres de 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étricas de tiempo de ejecución

Application Signals utiliza el SDK de AWS Distro para OpenTelemetry para recopilar automáticamente métricas compatibles con OpenTelemetry de las aplicaciones en Java y Python. Para que las métricas de tiempo de ejecución se recopilen, se deben cumplir los siguientes requisitos previos:

  • La versión del agente de CloudWatch debe ser 1.300049.1 o posterior.

  • Si utiliza el complemento de observabilidad de EKS de Amazon CloudWatch, debe ser una versión 2.30-eksbuild.1 o posterior. Si actualiza el complemento, tiene que reiniciar las aplicaciones.

  • Para las aplicaciones en Java, debe ejecutar 1.32.5 o una versión posterior del SDK de AWS Distro para OpenTelemetry para Java.

  • Para las aplicaciones en Python, debe ejecutar 0.7.0 o una versión posterior del SDK AWS Distro para OpenTelemetry para Python.

  • Para las aplicaciones .Net, debe ejecutar 1.6.0 o una versión posterior del SDK de AWS Distro para OpenTelemetry para .Net.

Las métricas de tiempo de ejecución no se recopilan para las aplicaciones Node.js.

Las métricas de tiempo de ejecución se cobran como parte de los costos de Application Signals. Para obtener más información sobre los precios de CloudWatch, consulte Precios de Amazon CloudWatch.

nota

Problemas conocidos

Se sabe que la colección de métricas de tiempo de ejecución de la versión 1.32.5 del SDK de Java no funciona con aplicaciones que utilizan JBoss Wildfly. Este problema se extiende al complemento de observabilidad de EKS de Amazon CloudWatch y afecta a todas las versiones, de 2.3.0-eksbuild.1 a 2.6.0-eksbuild.1. El problema ya está solucionado en la versión v1.32.6 del SDK de Java y en la versión v3.0.0-eksbuild.1 del complemento de observabilidad de EKS de Amazon CloudWatch.

Si se ve afectado, cambie a una versión posterior de SDK de Java o desactive la colección de métricas de tiempo de ejecución agregando la variable de entorno OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false a la aplicación.

Métricas de tiempo de ejecución de Java

Application Signals recopila las siguientes métricas de JVM de las aplicaciones en Java que se habilitan para Application Signals. Todas las métricas de tiempo de ejecución se envían a CloudWatch en el espacio de nombres ApplicationSignals y se recopilan con el conjunto de dimensiones Service y Environment.

Nombre de métrica Descripción Estadísticas significativas

JVMGCDuration

Métrica agregada sobre la duración de las acciones de recopilación de elementos no utilizados de JVM.

Unidad: milisegundos

Suma, Promedio, Mínimo, Máximo

JVMGCOldGenDuration

Métrica agregada sobre la duración de las acciones de recopilación de elementos no utilizados de JVM de la generación anterior. Solo disponible en G1.

Unidad: milisegundos

Suma, Promedio, Mínimo, Máximo

JVMGCYoungGenDuration

Métrica agregada sobre la duración de las acciones de recopilación de elementos no utilizados de JVM de la generación nueva. Solo disponible en G1.

Unidad: milisegundos

Suma, Promedio, Mínimo, Máximo

JVMGCCount

Métrica agregada sobre la cantidad de acciones de recopilación de elementos no utilizados de JVM.

Unidad: ninguna

Suma, Promedio, Mínimo, Máximo

JVMGCOldGenCount

Métrica agregada sobre la cantidad de acciones de recopilación de elementos no utilizados de JVM de la generación anterior. Solo disponible en G1.

Unidad: ninguna

Suma, Promedio, Mínimo, Máximo

JVMGCYoungGenCount

Métrica agregada sobre la cantidad de acciones de recopilación de elementos no utilizados de JVM de la generación nueva. Solo disponible en G1.

Unidad: ninguna

Suma, Promedio, Mínimo, Máximo

JVMMemoryHeapUsed

La cantidad de la pila memoria utilizada.

Unidad: bytes

Promedio, Mínimo, Máximo

JVMMemoryUsedAfterLastGC

Cantidad de memoria utilizada, medida después del evento de recopilación de elementos no utilizados más reciente en este grupo.

Unidad: bytes

Promedio, Mínimo, Máximo

JVMMemoryOldGenUsed

Cantidad de memoria utilizada por la generación anterior.

Unidad: bytes

Promedio, Mínimo, Máximo

JVMMemorySurvivorSpaceUsed

Cantidad de la pila de memoria utilizada por el espacio Survivor.

Unidad: bytes

Promedio, Mínimo, Máximo

JVMMemoryEdenSpaceUsed

La cantidad de memoria utilizada por el espacio Eden.

Unidad: bytes

Promedio, Mínimo, Máximo

JVMMemoryNonHeapUsed

Cantidad de memoria ajena a la pila utilizada.

Unidad: bytes

Promedio, Mínimo, Máximo

JVMThreadCount

Número de subprocesos en ejecución, incluidos subprocesos daemon y no daemon.

Unidad: ninguna

Suma, Promedio, Mínimo, Máximo

JVMClassLoaded

Número de clases cargadas.

Unidad: ninguna

Suma, Promedio, Mínimo, Máximo

JVMCpuTime

Tiempo de CPU utilizado por el proceso, según lo informado por la JVM.

Unidad: ninguna (nanosegundos)

Suma, Promedio, Mínimo, Máximo

JVMCpuRecentUtilization

El tiempo de CPU reciente usado por el proceso, según lo informado por la JVM.

Unidad: ninguna

Promedio, Mínimo, Máximo

Métricas de tiempo de ejecución de Python

Application Signals recopila las siguientes métricas de las aplicaciones en Python que se habilitan para Application Signals. Todas las métricas de tiempo de ejecución se envían a CloudWatch en el espacio de nombres ApplicationSignals y se recopilan con el conjunto de dimensiones Service y Environment.

Nombre de métrica Descripción Estadísticas significativas

PythonProcessGCCount

Número total de objetos que se están rastreando actualmente.

Unidad: ninguna

Suma, Promedio, Mínimo, Máximo

PythonProcessGCGen0Count

Número de objetos que se están rastreando actualmente en la generación 0.

Unidad: ninguna

Suma, Promedio, Mínimo, Máximo

PythonProcessGCGen1Count

Número de objetos que se están rastreando actualmente en la generación 1.

Unidad: ninguna

Suma, Promedio, Mínimo, Máximo

PythonProcessGCGen2Count

Número de objetos que se están rastreando actualmente en la generación 2.

Unidad: ninguna

Suma, Promedio, Mínimo, Máximo

PythonProcessVMSMemoryUsed

Cantidad total de memoria virtual que el proceso utilizó.

Unidad: bytes

Promedio, Mínimo, Máximo

PythonProcessRSSMemoryUsed

Cantidad total de memoria física no intercambiada que el proceso utilizó.

Unidad: bytes

Promedio, Mínimo, Máximo

PythonProcessThreadCount

Número de subprocesos que el proceso utiliza actualmente.

Unidad: ninguna

Suma, Promedio, Mínimo, Máximo

PythonProcessCpuTime

Tiempo de CPU que el proceso utiliza.

Unidad: segundos

Suma, Promedio, Mínimo, Máximo

PythonProcessCpuUtilization

Uso de la CPU del proceso.

Unidad: ninguna

Promedio, Mínimo, Máximo

Métricas de tiempo de ejecución de .Net

Application Signals recopila las siguientes métricas de las aplicaciones .Net que se habilitan para Application Signals. Todas las métricas de tiempo de ejecución se envían a CloudWatch en el espacio de nombres ApplicationSignals y se recopilan con el conjunto de dimensiones Service y Environment.

Nombre de métrica Descripción Estadísticas significativas

DotNetGCGen0Count

La cantidad total de métricas de recopilación de elementos no utilizados de las que se realiza un seguimiento en Generación 0 desde que se inició el proceso.

Unidad: ninguna

Suma, Promedio, Mínimo, Máximo

DotNetGCGen1Count

La cantidad total de métricas de recopilación de elementos no utilizados de las que se realiza un seguimiento en Generación 1 desde que se inició el proceso.

Unidad: ninguna

Suma, Promedio, Mínimo, Máximo

DotNetGCGen2Count

La cantidad total de métricas de recopilación de elementos no utilizados de las que se realiza un seguimiento en Generación 2 desde que se inició el proceso.

Unidad: ninguna

Suma, Promedio, Mínimo, Máximo

DotNetGCDuration

El tiempo total de pausa en la recopilación de elementos no utilizados desde que se inició el proceso.

Unidad: ninguna

Suma, Promedio, Mínimo, Máximo

DotNetGCGen0HeapSize

El tamaño del montón (incluida la fragmentación) de la Generación 0 observado durante la última recopilación de elementos no utilizados.

nota

Esta métrica solo estará disponible una vez finalizada la primera recopilación de elementos no utilizados.

Unidad: bytes

Promedio, Mínimo, Máximo

DotNetGCGen1HeapSize

El tamaño del montón (incluida la fragmentación) de la Generación 1 observado durante la última recopilación de elementos no utilizados.

nota

Esta métrica solo estará disponible una vez finalizada la primera recopilación de elementos no utilizados.

Unidad: bytes

Promedio, Mínimo, Máximo

DotNetGCGen2HeapSize

El tamaño del montón (incluida la fragmentación) de la Generación 2 observado durante la última recopilación de elementos no utilizados.

nota

Esta métrica solo estará disponible una vez finalizada la primera recopilación de elementos no utilizados.

Unidad: bytes

Promedio, Mínimo, Máximo

DotNetGCLOHHeapSize

El tamaño del montón de objetos grandes (incluida la fragmentación) observado durante la última recopilación de elementos no utilizados.

nota

Esta métrica solo estará disponible una vez finalizada la primera recopilación de elementos no utilizados.

Unidad: bytes

Promedio, Mínimo, Máximo

DotNetGCPOHHeapSize

El tamaño del montón de objetos anclados (incluida la fragmentación) observado durante la última recopilación de elementos no utilizados.

nota

Esta métrica solo estará disponible una vez finalizada la primera recopilación de elementos no utilizados.

Unidad: bytes

Promedio, Mínimo, Máximo

DotNetThreadCount

La cantidad de subprocesos del grupo de subprocesos que existen actualmente.

Unidad: ninguna

Promedio, Mínimo, Máximo

DotNetThreadQueueLength

La cantidad de elementos de trabajo que están actualmente en cola para ser procesados por el grupo de subprocesos.

Unidad: ninguna

Promedio, Mínimo, Máximo

Deshabilitación de la recopilación de métricas de tiempo de ejecución

Las métricas de tiempo de ejecución se recopilan de forma predeterminada para las aplicaciones en Java y Python que están habilitadas para Application Signals. Si desea deshabilitar la recopilación de estas métricas, siga las instrucciones de esta sección para su entorno.

Amazon EKS

Para deshabilitar las métricas de tiempo de ejecución en las aplicaciones de Amazon EKS en el nivel de aplicación, agregue la siguiente variable de entorno a la especificación de la carga de trabajo.

env: - name: OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED value: "false"

Para deshabilitar las métricas de tiempo de ejecución en las aplicaciones de Amazon EKS en el nivel de clúster, aplique la configuración a la configuración avanzada del complemento de observabilidad de EKS de 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

Para deshabilitar las métricas de tiempo de ejecución en las aplicaciones de Amazon ECS, agregue la variable de entorno OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false en la nueva revisión de la definición de tareas y vuelva a implementar la aplicación.

EC2

Para deshabilitar las métricas de tiempo de ejecución en las aplicaciones de Amazon EC2, agregue la variable de entorno OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false antes de que se inicie la aplicación.

Kubernetes

Para deshabilitar las métricas de tiempo de ejecución en las aplicaciones de Kubernetes en el nivel de aplicación, agregue la siguiente variable de entorno a la especificación de la carga de trabajo.

env: - name: OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED value: "false"

Para deshabilitar las métricas de tiempo de ejecución en las aplicaciones de Kubernetes en el nivel de clúster, use lo siguiente:

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