Como exportar métricas - AWS App Mesh

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como exportar métricas

O Envoy emite muitas estatísticas sobre sua própria operação e sobre várias dimensões do tráfego de entrada e saída. Para saber mais sobre as estatísticas do Envoy, consulte Estatísticas na documentação do Envoy. Essas métricas estão disponíveis por meio do endpoint /stats na porta de administração do proxy, o que normalmente é 9901.

O prefixo stat será diferente dependendo se você estiver usando um ou vários receptores. Abaixo estão alguns exemplos para ilustrar as diferenças.

Atenção

Se você atualizar seu único receptor para o atributo de vários receptores, poderá enfrentar uma alteração significativa devido ao prefixo estatístico atualizado ilustrado na tabela a seguir.

Sugerimos que você use a imagem do Envoy 1.22.2.1-prod ou posterior. Isso permite que você veja nomes de métricas semelhantes em seu endpoint Prometheus.

Receptor único (SL)/Estatísticas existentes com o prefixo de receptor "ingress" Vários receptores (ML)/Novas estatísticas com prefixo do receptor "ingress.<protocol>.<port>"

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 mais informações sobre o endpoint de estatísticas, consulte Estatísticas de endpoint na documentação do Envoy. Para mais informações sobre a interface de administração, consulte Ativar a interface de administração do proxy Envoy.

Prometheus para o App Mesh com Amazon EKS

O Prometheus é um toolkit de código aberto para alertas e monitoramento. Um de seus recursos é especificar um formato para emissão de métricas que possam ser consumidas por outros sistemas. Para mais informações sobre o Prometheus, consulte Visão geral na documentação do Prometheus. O Envoy pode emitir suas métricas por meio de seu endpoint de estatísticas passando pelo parâmetro /stats?format=prometheus.

Para clientes que estão usando a imagem do Envoy compilação v1.22.2.1-prod, há duas dimensões adicionais para indicar estatísticas específicas do receptor de entrada:

  • appmesh.listener_protocol

  • appmesh.listener_port

Abaixo está uma comparação entre as estatísticas existentes do Prometheus e as novas estatísticas.

  • Estatísticas existentes com o prefixo de receptor "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
  • Novas estatísticas com "ingress.<protocol>.<port>" + Imagem Appmesh Envoy v1.22.2.1-prod ou 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
  • Novas estatísticas com "ingress.<protocol>.<port>" + imagem de compilação personalizada do Envoy

    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 vários receptores, o cluster especial cds_ingress_<mesh name>_<virtual gateway name>_self_redirect_<ingress_listener_port>_<protocol>_<port> será específico do receptor.

  • Estatísticas existentes com o prefixo de receptor "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
  • Novas estatísticas com "ingress.<protocol>.<port>"

    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

Como instalar o Prometheus

  1. Adicione o repositório do EKS ao Helm:

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

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

Exemplo de Prometheus

Veja a seguir um exemplo de criação de uma PersistentVolumeClaim para armazenamento persistente do Prometheus.

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

Tutorial para usar o Prometheus

Para saber mais sobre o Prometheus e o Prometheus com o Amazon EKS

CloudWatch para o App Mesh

Emissão de estatísticas do Envoy para o CloudWatch a partir do Amazon EKS

Você pode instalar o CloudWatch Agent no seu cluster e configurá-lo para coletar um subconjunto de métricas dos seus proxies. Se você ainda não tem um cluster do Amazon EKS, pode criar um com as etapas em Tutorial: App Mesh com Amazon EKS no GitHub. Você pode instalar um aplicativo de amostra no cluster seguindo o mesmo passo a passo.

Para definir as permissões apropriadas do IAM para seu cluster e instalar o agente, siga as etapas em Instalar o agente do CloudWatch com a coleção de métricas do Prometheus. A instalação padrão contém uma configuração de extração do Prometheus que extrai um subconjunto útil das estatísticas do Envoy. Para obter mais informações, consulte Métricas do Prometheus para o App Mesh.

Para criar um painel personalizado do CloudWatch do App Mesh configurado para exibir as métricas que o agente está coletando, siga as etapas no tutorial Como visualizar suas métricas do Prometheus. Seus gráficos começarão a ser preenchidos com as métricas correspondentes à medida que o tráfego entrar no aplicativo App Mesh.

Como filtrar métricas para o CloudWatch

A extensão de métricas do App Mesh fornece um subconjunto de métricas úteis que fornecem informações sobre os comportamentos dos recursos que você define em sua malha. Como o agente do CloudWatch suporta as métricas de extração do Prometheus, você pode fornecer uma configuração de extração para selecionar as métricas que deseja extrair do Envoy e enviar para o CloudWatch.

Você pode encontrar um exemplo de extração de métricas usando o Prometheus em nosso tutorial Extensão de Métricas.

Exemplo do CloudWatch

Você pode encontrar um exemplo de configuração do CloudWatch em nosso repositório de amostras da AWS.

Instruções para usar o CloudWatch

Extensão de métricas para o App Mesh

O Envoy gera centenas de métricas divididas em algumas dimensões diferentes. As métricas não são diretas na forma como se relacionam com o App Mesh. No caso de serviços virtuais, não há mecanismo para saber com certeza qual serviço virtual está se comunicando com um determinado nó virtual ou gateway virtual.

A extensão de métricas do App Mesh aprimora os proxies Envoy em execução na sua malha. Esse aprimoramento permite que os proxies emitam métricas adicionais que estejam cientes dos recursos que você define. Esse pequeno subconjunto de métricas adicionais ajudará você a entender melhor o comportamento dos recursos que você definiu no App Mesh.

Para ativar a extensão de métricas do App Mesh, defina a variável de ambiente APPMESH_METRIC_EXTENSION_VERSION como 1.

APPMESH_METRIC_EXTENSION_VERSION=1

Para mais informações sobre as variáveis de configuração do Envoy, consulte Variáveis de configuração do Envoy.

Métricas relacionadas ao tráfego de entrada

  • ActiveConnectionCount

    • envoy.appmesh.ActiveConnectionCount: número de conexões TCP ativas.

    • Dimensões: Mesh, VirtualNode, VirtualGateway

  • NewConnectionCount

    • envoy.appmesh.NewConnectionCount: número total de conexões TCP.

    • Dimensões: Mesh, VirtualNode, VirtualGateway

  • ProcessedBytes

    • envoy.appmesh.ProcessedBytes: total de bytes TCP enviados e recebidos de clientes downstream.

    • Dimensões: Mesh, VirtualNode, VirtualGateway

  • RequestCount

    • envoy.appmesh.RequestCount: o número de solicitações HTTP processadas.

    • Dimensões: Mesh, VirtualNode, VirtualGateway

  • GrpcRequestCount

    • envoy.appmesh.GrpcRequestCount: o número de solicitações gPRC processadas.

    • Dimensões: Mesh, VirtualNode, VirtualGateway

Métricas relacionadas ao tráfego de saída

Você verá dimensões diferentes em suas métricas de saída com base no fato de elas virem de um nó virtual ou de um gateway virtual.

  • TargetProcessedBytes

    • envoy.appmesh.TargetProcessedBytes: total de bytes TCP enviados e recebidos dos destinos upstream do Envoy.

    • Dimensões:

      • Dimensões do nó virtual: Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • Dimensões do gateway virtual: Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • HTTPCode_Target_2XX_Count

    • envoy.appmesh.HTTPCode_Target_2XX_Count: o número de solicitações HTTP para um destino upstream do Envoy que resultaram em uma resposta HTTP 2xx.

    • Dimensões:

      • Dimensões do nó virtual: Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • Dimensões do gateway virtual: Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • HTTPCode_Target_3XX_Count

    • envoy.appmesh.HTTPCode_Target_3XX_Count: o número de solicitações HTTP para um destino upstream do Envoy que resultaram em uma resposta HTTP 3xx.

    • Dimensões:

      • Dimensões do nó virtual: Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • Dimensões do gateway virtual: Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • HTTPCode_Target_4XX_Count

    • envoy.appmesh.HTTPCode_Target_4XX_Count: o número de solicitações HTTP para um destino upstream do Envoy que resultaram em uma resposta HTTP 4xx.

    • Dimensões:

      • Dimensões do nó virtual: Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • Dimensões do gateway virtual: Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • HTTPCode_Target_5XX_Count

    • envoy.appmesh.HTTPCode_Target_5XX_Count: o número de solicitações HTTP para um destino upstream do Envoy que resultaram em uma resposta HTTP 5xx.

    • Dimensões:

      • Dimensões do nó virtual: Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • Dimensões do gateway virtual: Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • RequestCountPerTarget

    • envoy.appmesh.RequestCountPerTarget: o número de solicitações enviadas a um destino upstream do Envoy.

    • Dimensões:

      • Dimensões do nó virtual: Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • Dimensões do gateway virtual: Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • TargetResponseTime

    • envoy.appmesh.TargetResponseTime: o tempo decorrido desde o momento em que uma solicitação é feita a um destino upstream do Envoy até o recebimento da resposta completa.

    • Dimensões:

      • Dimensões do nó virtual: Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • Dimensões do gateway virtual: Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

Datadog para o App Mesh

O Datadog é um aplicativo de monitoramento e segurança para monitoramento, métricas e log de ponta a ponta de aplicativos em nuvem. O Datadog torna sua infraestrutura, aplicativos e aplicativos de terceiros completamente observáveis.

Como instalar o Datadog

  • EKS: para configurar o Datadog com o EKS, siga estas etapas nos documentos do Datadog.

  • ECS EC2: para configurar o Datadog com o ECS EC2, siga estas etapas na documentação do Datadog.

Para saber mais a respeito do Datadog