Capacite uma aplicação com instrumentos para a monitorização de aplicações

Este documento descreve como configurar uma aplicação do App Hub para que as métricas e os dados de rastreio que a aplicação gera contenham etiquetas específicas da aplicação. Também descreve como fazer com que a sua aplicação exporte uma métrica usada pelo Application Monitoring para comunicar o nível de tráfego, a taxa de erros do servidor ou a latência para cargas de trabalho de pedidos HTTP executadas no Google Kubernetes Engine.

Acerca das etiquetas específicas da aplicação

As etiquetas específicas da aplicação referem-se a etiquetas ou atributos que são injetados em dados de registo, métricas ou rastreios. Estas etiquetas identificam o serviço ou a carga de trabalho que gerou os dados. Pode usar etiquetas específicas da aplicação como quaisquer outras etiquetas. Por exemplo, pode filtrar dados pelo ID de uma aplicação. A telemetria gerada pela infraestrutura suportada inclui automaticamente estas etiquetas. Com a instrumentação, as métricas e os rastreios escritos pela sua aplicação podem incluir estas etiquetas.

Nesta secção, interprete a.b.{x,y} como a.b.x e a.b.y.

Os dados de métricas da instrumentação que adicionou às suas aplicações podem incluir as seguintes etiquetas de métricas:

  • metric.labels.apphub_application_{container,id,location}
  • metric.labels.apphub_workload_{criticality_type,environment_type,id}

Os intervalos de rastreio gerados pela instrumentação que adicionou às suas aplicações podem incluir os seguintes atributos de recursos:

  • gcp.apphub.application.{container,id,location}
  • gcp.apphub.{workload,service}.{criticality_type,environment_type,id}

Acerca das métricas do servidor HTTP OpenTelemetry

Não existem métricas do sistema para cargas de trabalho executadas no Google Kubernetes Engine que possam comunicar o nível de tráfego, a taxa de erros do servidor ou a latência para pedidos HTTP. No entanto, os valores destes sinais de ouro podem ser derivados de http.server.request.duration, que é uma métrica recolhida automaticamente pela biblioteca do cliente HTTP OpenTelemetry.

O exportador googlemanagedprometheusconverte a métrica OpenTelemetry na métrica Prometheus que tem as seguintes propriedades:http.server.request.duration

  • Nome: prometheus/http_server_request_duration_seconds/histogram
  • Métrica: prometheus.googleapis.com/http_server_request_duration_seconds/histogram
  • Tipos de recursos: prometheus_target
  • Unidade: s
  • Tipo: CUMULATIVE
  • Tipo de valor: DISTRIBUTION

Quando o seu Google Cloud projeto contém a métrica http_server_request_duration_seconds, os painéis de controlo da monitorização de aplicações apresentam o nível de tráfego, a taxa de erros do servidor e a latência dos pedidos HTTP.

Para saber como configurar a sua aplicação para exportar a métrica http_server_request_duration_seconds, consulte a secção Use o OpenTelemetry no Kubernetes deste documento.

Adicione etiquetas de aplicação aos dados de métricas

O Google Cloud Observability tenta identificar a origem das métricas do Prometheus comparando os atributos anexados às métricas do Prometheus que são enviadas para o seu projeto com os dados devolvidos pela API App Hub. O resto desta secção apresenta as configurações que permitem ao Google Cloud Observability identificar a aplicação App Hub.

Use o OpenTelemetry no Kubernetes

Para que o Google Cloud Observability anexe etiquetas de aplicações aos dados de métricas gerados pelas cargas de trabalho da sua aplicação que são executadas no Google Kubernetes Engine, faça o seguinte:

  1. Instrumente a aplicação com o OpenTelemetry.

  2. Implemente o coletor criado pela Google ou o coletor OpenTelemetry e configure o coletor da seguinte forma:

    • Exporte dados de métricas com o exportador googlemanagedprometheus.
    • Configure o processador k8sattributes para extrair metadados, como o namespace, do ambiente.
    • Configure o processador transform/collision para definir os atributos project_id, location, cluster e namespace.
    • Configure o processador transform/aco-gke para preencher as etiquetas top_level_controller_name e top_level_controller_type.

    Por exemplo, consulte o ficheiro otlp-k8s-ingest/config/collector.yaml, que é o ficheiro de configuração do coletor criado pela Google. Para saber mais sobre este coletor, consulte o artigo Implemente o coletor OpenTelemetry criado pela Google no GKE.

  3. Registe as cargas de trabalho da sua aplicação no App Hub.

Use o serviço gerido do Google Cloud para Prometheus no GKE

Para que o Google Cloud Observability anexe etiquetas de aplicações aos dados de métricas gerados pelas cargas de trabalho da sua aplicação que são executadas em clusters do Google Kubernetes Engine, faça o seguinte:

  1. Use o Managed Service for Prometheus do Google Cloud com recolha gerida.

  2. Implemente as suas cargas de trabalho num cluster do Google Kubernetes Engine cuja versão seja, pelo menos, 1.32.1-gke.1439000.

  3. Registe as cargas de trabalho da sua aplicação no App Hub.

O Google Cloud Managed Service for Prometheus descobre os valores das etiquetas de aplicações através dos metadados de descoberta de serviços e, em seguida, adiciona as etiquetas top_level_controller_{name,type} ao targetLabels.metadata. Durante o carregamento de métricas, o Google Cloud Observability usa as etiquetas top_level_controller_{name,type}e a API App Hub para identificar a sua aplicação App Hub e adicionar as etiquetas adequadas aos seus dados de métricas.

Use o Cloud Run

Para que o Google Cloud Observability anexe etiquetas de aplicações aos dados de métricas gerados pelas suas cargas de trabalho do Cloud Run, faça o seguinte:

  1. Instrumente a sua aplicação através do OpenTelemetry ou do sidecar do Managed Service for Prometheus para o Cloud Run. Para informações sobre estas abordagens, consulte os seguintes documentos:

  2. Registe as cargas de trabalho da sua aplicação no App Hub.

Valide as etiquetas de métricas

Para verificar se a sua aplicação está a enviar métricas do Prometheus para o seu projeto, faça o seguinte:

  1. Confirme se a sua aplicação está a enviar métricas do Prometheus para o seu projeto:
    1. Na Google Cloud consola, aceda à página  Explorador de métricas:

      Aceda ao Metrics Explorer

      Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.

    2. Na barra de ferramentas da Google Cloud consola, selecione o seu Google Cloud projeto. Para configurações do App Hub, selecione o projeto anfitrião do App Hub ou o projeto de gestão da pasta com apps ativadas.
    3. No elemento Métrica, expanda o menu Selecionar uma métrica, introduza Prometheus Target na barra de filtros e, de seguida, use os submenus para selecionar um tipo de recurso e uma métrica específicos:
      1. No menu Recursos ativos, selecione Alvo do Prometheus.
      2. Para selecionar uma métrica, use os menus Categorias de métricas ativas e Métricas ativas.
      3. Clique em Aplicar.
    4. Para adicionar filtros que removem séries cronológicas dos resultados da consulta, use o elemento Filter.

    5. Configure a forma como os dados são vistos.

      Para ver as etiquetas, expanda o menu Filtrar. Cada entrada no Filtro corresponde a uma etiqueta.

      Para mais informações sobre como configurar um gráfico, consulte o artigo Selecione métricas quando usar o explorador de métricas.

    Se não vir nenhuma métrica do Prometheus, reveja a sua configuração.

Se as suas métricas do Prometheus não contiverem etiquetas de aplicação, faça o seguinte:

  1. Confirme que registou a sua carga de trabalho ou serviço no App Hub.

  2. Examine os registos para determinar se existem erros.

    Por exemplo, se implementar um OpenTelemetry Collector ou o Collector criado pela Google e estiver a ser executado no Google Kubernetes Engine, pode fazer o seguinte:

    1. Na Google Cloud consola, aceda à página Workloads:

      Aceda a Cargas de trabalho

      Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cuja legenda seja Kubernetes Engine.

    2. Selecione a implementação do coletor e, de seguida, selecione o separador Registos.
  3. Se estiver a usar um OpenTelemetry Collector ou o Collector criado pela Google, então reveja a configuração do seu Collector. O seu coletor tem de fazer o seguinte:

    • Exporte dados de métricas com o exportador googlemanagedprometheus.
    • Configure o processador k8sattributes para extrair metadados, como o namespace, do ambiente.
    • Configure o processador transform/collision para definir os atributos project_id, location, cluster e namespace.
    • Configure o processador transform/aco-gke para preencher as etiquetas top_level_controller_name e top_level_controller_type.

    Para ver um exemplo, consulte o ficheiro de configuração do coletor criado pela Google: otlp-k8s-ingest/config/collector.yaml.

Adicione atributos de aplicação a intervalos de rastreio

Não instrumenta a sua aplicação de forma que os atributos específicos da aplicação sejam anexados aos intervalos enviados para o seu projeto do Google Cloud . Em alternativa, o Google Cloud Observability usa atributos de recursos do OpenTelemetry e a API App Hub para identificar a aplicação App Hub associada a um intervalo e, em seguida, adiciona os atributos específicos da aplicação antes de armazenar o intervalo.

Para que o Google Cloud Observability anexe atributos de recursos específicos da aplicação aos dados de rastreio gerados pelos serviços e cargas de trabalho da aplicação, faça o seguinte:

Para mais informações sobre estes atributos, consulte as Google Cloud convenções semânticas do App Hub.

Atributos obrigatórios

Esta secção aplica-se a configurações em que não usa um dos coletores recomendados. Por exemplo, pode querer escrever o seu próprio coletor ou preferir exportar diretamente os dados de rastreio.

Atributos que identificam a localização do projeto e do recurso

Defina os seguintes atributos:

  • cloud.provider: definido como "gcp".
  • cloud.account.id: definido como o ID do seu projeto.
  • cloud.availability_zone ou cloud.region: defina a zona ou região onde os seus recursos estão localizados. Pode definir ambos os atributos.

Os detetores de recursos podem ajudar a definir os atributos anteriores:

Atributos para cargas de trabalho do Google Kubernetes Engine

Para uma carga de trabalho do Google Kubernetes Engine, configure o seu coletor ou instrumentação para fazer o seguinte:

  • Extrair metadados, como o namespace, do ambiente.
  • Extraia metadados relevantes do processador k8sattributes.
  • Defina os atributos project_id, location, cluster e namespace.
  • Defina as etiquetas top_level_controller_name e top_level_controller_type.

Para um exemplo baseado no coletor, consulte otlp-k8s-ingest/config/collector.yaml. Esse coletor usa o processador k8sattributesprocessor.

Atributos para cargas de trabalho de VMs

Se implementar a sua aplicação numa VM, essa VM tem de estar associada a um grupo de instâncias geridas (GIG). Também tem de anexar os seguintes atributos:

  • gcp.gce.instance_group_manager.name
  • gcp.gce.instance_group_manager.region ou gcp.gce.instance_group_manager.zone