Este documento descreve as regras que o Google Cloud Observability usa para determinar o tipo de recurso monitorado do Logging para dados de registro ingeridos pela API Telemetry. O recurso monitorado descreve a origem dos dados de registro. Em um LogEntry, ele é representado usando rótulos. A Google Cloud Observability determina os valores desses rótulos usando os atributos de recurso do OTLP.
Estrutura geral dos dados de registro formatados em OTLP
Quando os dados de registro são enviados para Google Cloud usando a API Telemetry, eles precisam estar em um formato consistente com o OTLP. A estrutura geral desses dados é mostrada abaixo:
"resourceLogs": [
{
"resource": {
"attributes": [...]
},
"scopeLogs": [
{
"logRecords": [...]
}
]
}
]
O OpenTelemetry agrupa registros individuais, cada um representado por uma estrutura logRecord, com informações sobre a origem desses registros, que é representada pela estrutura resource.
Quando a Observabilidade do Google Cloud recebe um objeto resourceLogs, ela cria um
LogEntry para cada logRecord. Ao contrário do OTLP, que agrupa informações de origem com uma coleção de registros individuais, cada estrutura LogEntry contém informações sobre a origem do registro e o registro em si.
Para saber mais sobre a estrutura dos dados de registro formatados em OTLP, consulte o logs.proto do OpenTelemetry.
Definir atributos de recursos OTLP usando o detector de recursos Google Cloud
Para definir atributos de recursos OTLP nos dados de registros OTLP, use um detector de recursosGoogle Cloud . Esses detectores anexam à telemetria os atributos de recurso OTLP que descrevem a origem da telemetria:
Para a exportação baseada em coletor, configure a detecção de recursos como parte dos processadores do coletor. Por exemplo, seu coletor pode especificar dois detectores de recursos:
resourcedetection: detectors: ["env", "gcp"]Os documentos a seguir fornecem exemplos de coletores que exportam dados de métricas ou de rastreamento:
- Implante e use o coletor: descreve como enviar dados de métricas para a API Telemetry.
- Implantar o coletor do OpenTelemetry criado pelo Google no Google Kubernetes Engine: descreve como coletar dados de registros, métricas e rastreamentos ao executar no Google Kubernetes Engine. O coletor envia dados de rastreamento para a API Telemetry e dados de métricas para um exportador do Prometheus.
Se você estiver usando a exportação direta, use o detector de recursos Google Cloud adequado para seu idioma:
Como os rótulos de recursos são definidos
Cada entrada de registro contém um conjunto de rótulos que identifica a origem da entrada, também conhecida como um recurso monitorado do Logging. A ilustração a seguir mostra os rótulos do Google Kubernetes Engine.
resource: {
labels: {
cluster_name: "my-cluster"
container_name: "server"
location: "us-central1"
namespace_name: "default"
pod_name: "my-pod"
project_id: "my-project"
}
type: "k8s_container"
}
Como mostrado, um recurso monitorado tem um campo type e um ou mais labels.
No mínimo, os rótulos de um recurso monitorado incluem project_id ou resource_container.
A tabela a seguir descreve as regras que o Google Cloud Observability usa para mapear atributos de recursos do OTLP para um recurso monitorado. A tabela é ordenada. Ou seja, se os atributos do recurso incluírem cloud.platform e o valor for gcp_compute_engine, o tipo de recurso monitorado será definido como gce_instance. Para determinar o valor de um rótulo de recurso monitorado, o Google Cloud Observability usa uma lista priorizada de atributos de recursos.
O valor de um rótulo é uma string vazia quando nenhum dos atributos de recurso está disponível.
| Atributo e valor do OTLP anexados a um registro de log |
Tipo de recurso monitorado do Cloud Logging |
Valores de rótulo de recurso monitorado determinados pelos atributos de recurso do OTLP, por prioridade |
|---|---|---|
cloud.platformhas value gcp_compute_engine |
gce_instance |
|
cloud.platformhas value gcp_app_engine |
gae_app |
|
cloud.platformhas value aws_ec2 |
aws_ec2_instance |
|
cloud.platformhas value gcp_bare_metal_solution |
baremetal instance |
|
service.name eservice.instance.idnão estão vazios |
generic_task |
|
faas.name efaas.instancenão estão vazios |
generic_task |
|
k8s.cluster.name ek8s.container.namenão estão vazios |
k8s_container |
|
k8s.cluster.name ek8s.pod.namenão estão vazios |
k8s_pod |
|
k8s.cluster.name ek8s.node.namenão estão vazios |
k8s_node |
|
k8s.cluster.namenão está vazio |
k8s_cluster |
|
| Nenhum outro marcador corresponde | generic_node |
|
Inferir o valor do rótulo do ID do contêiner do projeto ou recurso
Todos os tipos de recursos monitorados do Logging têm um rótulo project_id ou resource_container.
O sistema pesquisa os seguintes atributos, em ordem, para determinar o valor desses rótulos:
project_idgcp.project.idgcp.project_idgcp.dest_project_idgcp.resource.containerresource_containercloud.account.idcloud.account_id