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 pela monitorização de aplicações 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 rastreio. 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 do 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 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 cujo subtítulo é 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

Para que o Cloud Trace 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:

  1. Registe os seus serviços e cargas de trabalho no App Hub.
  2. Instrumente a sua aplicação com o OpenTelemetry e envie os dados de rastreio recolhidos da sua aplicação para o seu projeto através do Google Cloud ponto final OTLP.
  3. Configure o OpenTelemetry Collector ou o Collector criado pela Google de forma que os dados de intervalo exportados incluam os atributos de recursos do OpenTelemetry que identificam os recursos suportados Google Cloud que são usados pela sua aplicação. Os atributos dos recursos têm de incluir o seguinte:

    • cloud.account.id
    • Uma de cloud.{availability_zone,region}
    • Atributos específicos do recurso. Por exemplo, para uma carga de trabalho do Kubernetes, os intervalos têm de ter o k8s.cluster.name, o k8s.namespace e o tipo de implementação do Kubernetes definidos.

    Use processadores para que o coletor anexe atributos específicos de recursos aos seus intervalos. Para saber mais, consulte resourcedetectionprocessor e k8sattributesprocessor.

    O Google Cloud Observability usa os atributos de recursos anteriores e a API App Hub para identificar a sua aplicação App Hub. Os atributos específicos da aplicação são adicionados aos dados de rastreio quando uma aplicação é identificada.

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