Sobre rótulos específicos de aplicativos
Os rótulos específicos do aplicativo se referem a rótulos ou atributos injetados em dados de registro, métrica ou trace. Esses rótulos identificam o serviço ou a carga de trabalho que gerou os dados. É possível usar rótulos específicos do aplicativo como qualquer outro rótulo. Por exemplo, é possível filtrar dados pelo ID de um aplicativo. A telemetria gerada pela infraestrutura compatível inclui automaticamente esses rótulos. Com a instrumentação, as métricas e os traces gravados pelo aplicativo podem incluir esses rótulos.
Nesta seção,
interprete a.b.{x,y} como a.b.x e a.b.y.
Os dados de métricas da instrumentação que você adicionou aos aplicativos podem incluir os seguintes rótulos de métricas:
metric.labels.apphub_application_{container,id,location}metric.labels.apphub_workload_{criticality_type,environment_type,id}
Os períodos de trace gerados pela instrumentação adicionada aos aplicativos podem incluir os seguintes atributos de recurso:
gcp.apphub.application.{container,id,location}gcp.apphub.{workload,service}.{criticality_type,environment_type,id}
Sobre as métricas do servidor HTTP do OpenTelemetry
Não há métricas do sistema para cargas de trabalho executadas no Google Kubernetes Engine
que possam informar o nível de tráfego, a taxa de erros do servidor ou
a latência de solicitações HTTP. No entanto, os valores desses indicadores de ouro
podem ser derivados da métrica
http.server.request.duration, que é coletada automaticamente pela biblioteca de cliente HTTP do
OpenTelemetry.
O exportador googlemanagedprometheus converte a métrica do OpenTelemetry http.server.request.duration em uma métrica do Prometheus que tem as seguintes propriedades:
- Nome:
prometheus/http_server_request_duration_seconds/histogram - Métrica:
prometheus.googleapis.com/http_server_request_duration_seconds/histogram - Tipos de recurso:
prometheus_target - Unidade:
s - Tipo:
CUMULATIVE - Tipo de valor:
DISTRIBUTION
Quando o projeto do Google Cloud contém a métrica http_server_request_duration_seconds, os painéis do Application Monitoring mostram o nível de tráfego, a taxa de erros do servidor e a latência das solicitações HTTP.
Para saber como configurar o aplicativo para exportar a métrica http_server_request_duration_seconds, consulte a seção Usar o OpenTelemetry no Kubernetes deste documento.
Adicionar rótulos de aplicativo 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 enviadas ao seu projeto com os dados retornados da API App Hub. O restante desta seção lista as configurações que permitem que o Google Cloud Observability identifique o aplicativo do App Hub.
Usar o OpenTelemetry no Kubernetes
Para que o Google Cloud Observability anexe rótulos de aplicativos aos dados de métricas gerados pelas cargas de trabalho do aplicativo que são executadas no Google Kubernetes Engine, faça o seguinte:
Instrumentar o aplicativo com o OpenTelemetry.
- Para informações gerais, consulte Observabilidade para desenvolvedores de aplicativos.
- Para links de exemplos em Go, Java, Node.js e Python, além de informações sobre eles, consulte Visão geral de exemplos de instrumentação.
Implante o coletor criado pelo Google ou o coletor do OpenTelemetry e configure-o da seguinte maneira:
- Exportar dados de métricas com o exportador
googlemanagedprometheus. - Configure o processador
k8sattributespara extrair metadados, comonamespace, do ambiente. - Configure o processador
transform/collisionpara definir os atributosproject_id,location,clusterenamespace. - Configure o processador
transform/aco-gkepara preencher os rótulostop_level_controller_nameetop_level_controller_type.
Para ver um exemplo, consulte
otlp-k8s-ingest/config/collector.yaml, que é o arquivo de configuração do coletor criado pelo Google. Para saber mais sobre esse coletor, consulte Implantar o coletor do OpenTelemetry criado pelo Google no GKE.- Exportar dados de métricas com o exportador
Registre as cargas de trabalho do aplicativo no App Hub.
Usar o Google Cloud Managed Service para Prometheus no GKE
Para que o Google Cloud Observability anexe rótulos de aplicativos aos dados de métricas gerados pelas cargas de trabalho do aplicativo que são executadas em clusters do Google Kubernetes Engine, faça o seguinte:
Use o Serviço Gerenciado do Google Cloud para Prometheus com coleta gerenciada.
Implante as cargas de trabalho em um cluster do Google Kubernetes Engine com a versão
1.32.1-gke.1439000ou mais recente.Registre as cargas de trabalho do aplicativo no App Hub.
O Serviço gerenciado do Google Cloud para Prometheus descobre
os valores dos rótulos do aplicativo por meio de metadados de descoberta de serviços
e adiciona os rótulos top_level_controller_{name,type} ao
targetLabels.metadata.
Durante a ingestão de métricas, o Google Cloud Observability usa os rótulos top_level_controller_{name,type} e a API App Hub para identificar seu aplicativo do App Hub e adicionar os rótulos apropriados aos dados de métricas.
Usar o Cloud Run
Para que o Google Cloud Observability anexe rótulos de aplicativos aos dados de métricas gerados pelas cargas de trabalho do Cloud Run, faça o seguinte:
Faça a instrumentação do aplicativo usando o OpenTelemetry ou o arquivo secundário do Serviço Gerenciado para Prometheus para o Cloud Run. Para mais informações sobre essas abordagens, consulte os seguintes documentos:
Registre as cargas de trabalho do aplicativo no App Hub.
Verificar rótulos de métricas
Para verificar se o aplicativo está enviando métricas do Prometheus para o projeto, faça o seguinte:
-
Verifique se o aplicativo está enviando métricas do Prometheus para o projeto:
-
No console Google Cloud , acesse a página do leaderboard Metrics explorer:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Na barra de ferramentas do console Google Cloud , selecione seu projeto Google Cloud . Para configurações do App Hub, selecione o projeto host do App Hub ou o projeto de gerenciamento da pasta habilitada para apps.
- No elemento Metric, expanda o menu Selecionar uma métrica,
digite
Prometheus Targetna barra de filtro e use os submenus para selecionar um tipo de recurso e métrica específicos:- No menu Active resources, selecione Prometheus Target.
- Para selecionar uma métrica, use os menus Categorias de métricas ativas e Métricas ativas.
- Clique em Aplicar.
Para adicionar filtros que removem séries temporais dos resultados da consulta, use o elemento Filtro.
- Configure a visualização dos dados.
Para ver os rótulos, abra o menu Filtro. Cada entrada no menu Filtro corresponde a um rótulo.
Para mais informações sobre como configurar um gráfico, consulte Selecionar métricas ao usar o Metrics Explorer.
Se você não encontrar métricas do Prometheus, revise sua configuração.
-
Se as métricas do Prometheus não tiverem rótulos de aplicativo, faça o seguinte:
Verifique se você registrou sua carga de trabalho ou serviço no App Hub.
Analise os registros para determinar se há erros.
Por exemplo, se você implantar um coletor do OpenTelemetry ou o coletor criado pelo Google e estiver executando no Google Kubernetes Engine, faça o seguinte:
-
No console do Google Cloud , acesse a página Cargas de trabalho:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Kubernetes Engine.
- Selecione a implantação do coletor e, em seguida, a guia Registros.
-
Se você estiver usando um coletor do OpenTelemetry ou do Google, revise a configuração dele. O coletor precisa fazer o seguinte:
- Exportar dados de métricas com o exportador
googlemanagedprometheus. - Configure o processador
k8sattributespara extrair metadados, comonamespace, do ambiente. - Configure o processador
transform/collisionpara definir os atributosproject_id,location,clusterenamespace. - Configure o processador
transform/aco-gkepara preencher os rótulostop_level_controller_nameetop_level_controller_type.
Para ver um exemplo, consulte o arquivo de configuração do coletor criado pelo Google:
otlp-k8s-ingest/config/collector.yaml.- Exportar dados de métricas com o exportador
Adicionar atributos de aplicativo a períodos de trace
Você não instrumenta o aplicativo de modo que atributos específicos do aplicativo sejam anexados aos períodos enviados ao projeto do Google Cloud . Em vez disso, o Google Cloud Observability usa atributos de recurso do OpenTelemetry e a API App Hub para identificar o aplicativo do App Hub associado a um período e, em seguida, adiciona os atributos específicos do aplicativo antes de armazenar o período.
Para que o Google Cloud Observability anexe atributos de recursos específicos do aplicativo aos dados de trace gerados pelos serviços e cargas de trabalho do aplicativo, faça o seguinte:
Instrumente seu aplicativo com o OpenTelemetry e configure o exportador para enviar dados de trace para o endpoint da API Telemetry (OTLP).
Recomendamos uma exportação baseada em coletor. Os documentos a seguir descrevem coletores que anexam todos os atributos necessários aos dados de período:
- Implantar o coletor do OpenTelemetry criado pelo Google no Google Kubernetes Engine.
- Implantar o coletor do OpenTelemetry criado pelo Google no Cloud Run.
- Implantar o OpenTelemetry Collector no Container-Optimized OS.
Se você não usar um dos coletores anteriores, configure sua instrumentação ou coletor para anexar todos os atributos necessários.
Implante seus serviços e cargas de trabalho em uma infraestrutura compatível.
Registre seus serviços e cargas de trabalho no App Hub.
Para mais informações sobre esses atributos, consulte Convenções semânticas doGoogle Cloud App Hub.
Atributos obrigatórios
Esta seção se aplica a configurações em que você não usa um dos coletores recomendados. Por exemplo, talvez você queira escrever seu próprio coletor ou prefira exportar diretamente os dados de trace.
Atributos que identificam o projeto e o local do recurso
Defina os seguintes atributos:
- Defina
cloud.providercomo"gcp". cloud.account.id: defina como o ID do projeto.cloud.availability_zoneoucloud.region: defina como a zona ou região em que os recursos estão localizados. É possível definir os dois atributos.
Os detectores de recursos podem ajudar a definir os atributos anteriores:
resourcedetectionprocessor- Go:detector de recursos do Google Cloud
- Java:
opentelemetry-java-contrib/gcp-resources - Node.js:
resource-detector-gcp - Python:
opentelemetry-resourcedetector-gcp
Atributos para cargas de trabalho do Google Kubernetes Engine
Para uma carga de trabalho do Google Kubernetes Engine, configure o coletor ou a instrumentação para fazer o seguinte:
- Extraia metadados, como o
namespace, do ambiente. - Extraia metadados relevantes do processador
k8sattributes. - Defina os atributos
project_id,location,clusterenamespacepara métricas. - Defina os rótulos
top_level_controller_nameetop_level_controller_typepara métricas.
Para um exemplo baseado em coletor, consulte
otlp-k8s-ingest/config/collector.yaml.
Esse coletor usa o processador
k8sattributesprocessor.
Atributos para cargas de trabalho de VM
Se você implantar o aplicativo em uma VM, ela precisará estar associada a um grupo gerenciado de instâncias (MIG). Você também precisa anexar os seguintes atributos:
gcp.gce.instance_group_manager.namegcp.gce.instance_group_manager.regionougcp.gce.instance_group_manager.zone