Exportación de métricas - AWS App Mesh

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Exportación de métricas

Envoy emite muchas estadísticas tanto sobre su propio funcionamiento como sobre diversas dimensiones del tráfico entrante y saliente. Para obtener más información sobre las estadísticas de Envoy, consulte Estadísticas en la documentación de Envoy. Estas métricas están disponibles a través del punto de conexión /stats en el puerto de administración del proxy, que suele ser el 9901.

El prefijo stat variará en función de si utiliza uno o varios oyentes. A continuación se muestran algunos ejemplos para ilustrar las diferencias.

aviso

Si actualiza la característica de oyente individual a oyente múltiple, puede enfrentarse a un cambio radical debido al prefijo de estadísticas actualizado que se muestra en la siguiente tabla.

Sugerimos que utilice la versión 1.22.2.1-prod o posterior de la imagen de Envoy. Esto le permite ver nombres de métricas similares en su punto de conexión de Prometheus.

Estadísticas de oyente individual (SL)/existente con el prefijo de oyente "ingress" Estadísticas de oyentes múltiples (ML)/nuevos con el prefijo de oyente "ingress.<protocolo>.<puerto>"

http.*ingress*.rds.rds_ingress_http_5555.version_text

http.*ingress.http.5555*.rds.rds_ingress_http_5555.version_text

http.*ingress.http.6666*.rds.rds_ingress_http_6666.version_text

listener.0.0.0.0_15000.http.*ingress*.downstream_rq_2xx

listener.0.0.0.0_15000.http.*ingress.http.5555*.downstream_rq_2xx

listener.0.0.0.0_15000.http.*ingress.http.6666*.downstream_rq_2xx

http.*ingress*.downstream_cx_length_ms

http.*ingress.http.5555*.downstream_cx_length_ms

http.*ingress.http.6666*.downstream_cx_length_ms

Para obtener más información sobre el punto de conexión de estadísticas, consulte Punto de conexión de estadísticas en la documentación de Envoy. Para obtener más información sobre la interfaz de administración, consulte Habilitar la interfaz de administración del proxy de Envoy.

Prometheus para App Mesh con Amazon EKS

Prometheus es un conjunto de herramientas de alerta y monitorización de código abierto. Una de sus capacidades es especificar un formato para emitir métricas que puedan utilizar otros sistemas. Para obtener información acerca de Prometheus, consulte Información general en la documentación de Prometheus. Envoy puede emitir sus métricas a través de su punto de conexión de estadísticas especificando el parámetro /stats?format=prometheus.

Para los clientes que utilizan la versión v1.22.2.1-prod de la imagen de Envoy, hay dos dimensiones adicionales para indicar estadísticas específicas del oyente de entrada:

  • appmesh.listener_protocol

  • appmesh.listener_port

A continuación se muestra una comparación entre las estadísticas existentes de Prometheus y las nuevas.

  • Estadísticas existentes con el prefijo de oyente "ingress"

    envoy_http_downstream_rq_xx{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_node="foodteller-vn",envoy_response_code_class="2",envoy_http_conn_manager_prefix="ingress"} 931433
  • Nuevas estadísticas con el prefijo de oyente "ingress.<protocolo>.<puerto>" + Imagen de Appmesh Envoy v1.22.2.1-prod o posterior

    envoy_http_downstream_rq_xx{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_node="foodteller-vn",envoy_response_code_class="2",appmesh_listener_protocol="http",appmesh_listener_port="5555",envoy_http_conn_manager_prefix="ingress"} 20
  • Nuevas estadísticas con el prefijo "ingress.<protocolo>.<puerto>" + Imagebuild de Envoy personalizada

    envoy_http_http_5555_downstream_rq_xx{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_node="foodteller-vn",envoy_response_code_class="2",envoy_http_conn_manager_prefix="ingress"} 15983

Para oyentes múltiples, el clúster especial cds_ingress_<mesh name>_<virtual gateway name>_self_redirect_<ingress_listener_port>_<protocol>_<port> será específico de cada oyente.

  • Estadísticas existentes con el prefijo de oyente "ingress"

    envoy_cluster_assignment_stale{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_gateway="tellergateway-vg",Mesh="multiple-listeners-mesh",VirtualGateway="tellergateway-vg",envoy_cluster_name="cds_ingress_multiple-listeners-mesh_tellergateway-vg_self_redirect_http_15001"} 0
  • Nuevas estadísticas con el prefijo "ingress.<protocolo>.<puerto>"

    envoy_cluster_assignment_stale{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_gateway="tellergateway-vg",envoy_cluster_name="cds_ingress_multiple-listeners-mesh_tellergateway-vg_self_redirect_1111_http_15001"} 0 envoy_cluster_assignment_stale{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_gateway="tellergateway-vg",envoy_cluster_name="cds_ingress_multiple-listeners-mesh_tellergateway-vg_self_redirect_2222_http_15001"} 0

Instalación de Prometheus

  1. Agregue el repositorio EKS a Helm:

    helm repo add eks https://aws.github.io/eks-charts
  2. Instale App Mesh Prometheus

    helm upgrade -i appmesh-prometheus eks/appmesh-prometheus \ --namespace appmesh-system

Ejemplo de Prometheus

A continuación se muestra un ejemplo de la creación de PersistentVolumeClaim para un almacenamiento persistente de Prometheus.

helm upgrade -i appmesh-prometheus eks/appmesh-prometheus \ --namespace appmesh-system \ --set retention=12h \ --set persistentVolumeClaim.claimName=prometheus

Tutorial de uso de Prometheus

Para obtener más información acerca de Prometheus y Prometheus con Amazon EKS

CloudWatch para App Mesh

Emisión de estadísticas de Envoy a CloudWatch desde Amazon EKS

Puede instalar el Agente de CloudWatch en su clúster y configurarlo para recopilar un subconjunto de métricas de sus proxies. Si aún no tiene un clúster de Amazon EKS, puede crear uno siguiendo los pasos de Tutorial: App Mesh con Amazon EKS en GitHub. Puede instalar una aplicación de muestra en el clúster siguiendo el mismo tutorial.

Para configurar los permisos de IAM adecuados para su clúster e instalar el agente, siga los pasos que se indican en Instalar el agente de CloudWatch con la recopilación de métricas de Prometheus. La instalación predeterminada contiene una configuración de extracción de Prometheus que obtiene un útil subconjunto de estadísticas de Envoy. Para obtener más información, consulte Métricas de Prometheus para App Mesh.

Para crear un panel de CloudWatch personalizado para App Mesh configurado para mostrar las métricas que recopila el agente, siga los pasos del tutorial Visualización de las métricas de Prometheus. Sus gráficos comenzarán a llenarse con las métricas correspondientes a medida que el tráfico entre en la aplicación de App Mesh.

Filtrado de métricas de CloudWatch

La extensión de métricas de App Mesh dispone de un útil subconjunto de métricas que proporciona información sobre el comportamiento de los recursos que define en su malla. Como el Agente de CloudWatch admite la extracción de métricas de Prometheus, puede proporcionar una configuración de extracción para seleccionar las métricas que desea obtener de Envoy y enviarlas a CloudWatch.

Puede encontrar un ejemplo de extracción de métricas con Prometheus en nuestro tutorial Extensión de métricas.

Ejemplo de CloudWatch

Puede encontrar una configuración de ejemplo de CloudWatch en nuestro Repositorio de muestras de AWS.

Tutoriales de uso de CloudWatch

Extensión de métricas de App Mesh

Envoy genera cientos de métricas que se dividen en unas pocas dimensiones diferentes. Las métricas no son sencillas en cuanto a la forma en que se relacionan con App Mesh. En el caso de los servicios virtuales, no existe ningún mecanismo para saber con certeza qué servicio virtual se está comunicando con una puerta de enlace virtual o un nodo virtual determinado.

La extensión de métricas App Mesh mejora los proxies de Envoy que se ejecutan en su malla. Esta mejora permite que los proxies emitan métricas adicionales que tienen en cuenta los recursos que define. Este pequeño subconjunto de métricas adicionales lo ayudará a comprender mejor el comportamiento de los recursos que definió en App Mesh.

Para habilitar la extensión de métricas de App Mesh, establezca la variable de entorno APPMESH_METRIC_EXTENSION_VERSION en 1.

APPMESH_METRIC_EXTENSION_VERSION=1

Para obtener más información acerca de las variables de configuración de Envoy, consulte Variables de configuración de Envoy.

Métricas relacionadas con el tráfico entrante

  • ActiveConnectionCount

    • envoy.appmesh.ActiveConnectionCount: número de conexiones TCP activas.

    • Dimensiones: Mesh, VirtualNode, VirtualGateway

  • NewConnectionCount

    • envoy.appmesh.NewConnectionCount: número total de conexiones TCP.

    • Dimensiones: Mesh, VirtualNode, VirtualGateway

  • ProcessedBytes

    • envoy.appmesh.ProcessedBytes: bytes TCP totales enviados y recibidos de clientes descendentes.

    • Dimensiones: Mesh, VirtualNode, VirtualGateway

  • RequestCount

    • envoy.appmesh.RequestCount: el número de solicitudes HTTP procesadas.

    • Dimensiones: Mesh, VirtualNode, VirtualGateway

  • GrpcRequestCount

    • envoy.appmesh.GrpcRequestCount: el número de solicitudes gPRC procesadas.

    • Dimensiones: Mesh, VirtualNode, VirtualGateway

Métricas relacionadas con el tráfico saliente

Verá dimensiones diferentes de sus métricas de salida en función de si provienen de un nodo virtual o de una puerta de enlace virtual.

  • TargetProcessedBytes

    • envoy.appmesh.TargetProcessedBytes: bytes TCP totales enviados y recibidos desde destinos situados antes de Envoy.

    • Dimensiones:

      • Dimensiones del nodo virtual: Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • Dimensiones de la puerta de enlace virtual: Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • HTTPCode_Target_2XX_Count

    • envoy.appmesh.HTTPCode_Target_2XX_Count: el número de solicitudes HTTP a un destino situado antes de Envoy que dieron como resultado una respuesta HTTP dos veces mayor.

    • Dimensiones:

      • Dimensiones del nodo virtual: Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • Dimensiones de la puerta de enlace virtual: Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • HTTPCode_Target_3XX_Count

    • envoy.appmesh.HTTPCode_Target_3XX_Count: el número de solicitudes HTTP a un destino situado antes de Envoy que dieron como resultado una respuesta HTTP tres veces mayor.

    • Dimensiones:

      • Dimensiones del nodo virtual: Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • Dimensiones de la puerta de enlace virtual: Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • HTTPCode_Target_4XX_Count

    • envoy.appmesh.HTTPCode_Target_4XX_Count: el número de solicitudes HTTP a un destino situado antes de Envoy que dieron como resultado una respuesta HTTP cuatro veces mayor.

    • Dimensiones:

      • Dimensiones del nodo virtual: Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • Dimensiones de la puerta de enlace virtual: Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • HTTPCode_Target_5XX_Count

    • envoy.appmesh.HTTPCode_Target_5XX_Count: el número de solicitudes HTTP a un destino situado antes de Envoy que dieron como resultado una respuesta HTTP cinco veces mayor.

    • Dimensiones:

      • Dimensiones del nodo virtual: Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • Dimensiones de la puerta de enlace virtual: Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • RequestCountPerTarget

    • envoy.appmesh.RequestCountPerTarget: el número de solicitudes enviadas a un objetivo situado antes de Envoy.

    • Dimensiones:

      • Dimensiones del nodo virtual: Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • Dimensiones de la puerta de enlace virtual: Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • TargetResponseTime

    • envoy.appmesh.TargetResponseTime: el tiempo transcurrido desde que se realiza una solicitud a un destino situado antes de Envoy hasta que se recibe la respuesta completa.

    • Dimensiones:

      • Dimensiones del nodo virtual: Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • Dimensiones de la puerta de enlace virtual: Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

Datadog para App Mesh

Datadog es una aplicación de monitorización y seguridad para el registro, métricas y monitorización integrales de aplicaciones en la nube. Datadog permite que su infraestructura, aplicaciones y aplicaciones de terceros se puedan observar por completo.

Instalación de Datadog

Para obtener más información acerca de Datadog