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 e, em uma LogEntry, é representado usando
rótulos. O Google Cloud Observability determina os valores desses rótulos usando os atributos de recurso 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, estes dados 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 o Google Cloud Observability recebe um objeto resourceLogs, ele 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 próprio registro.
Para saber mais sobre a estrutura dos dados de registro formatados em OTLP,
consulte o OpenTelemetry logs.proto.
Definir atributos de recurso OTLP usando o Google Cloud detector de recursos
Para definir atributos de recurso OTLP nos dados de registro OTLP, use um Google Cloud detector de recursos. Esses detectores anexam à telemetria os atributos de recurso OTLP que descrevem a origem da telemetria:
Para exportação baseada em coletor, configure a detecção de recursos como parte dos processadores do coletor. Por exemplo, o 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 trace:
- Implantar e usar o coletor: descreve como enviar dados de métricas para a API Telemetry.
- Implantar o coletor OpenTelemetry criado pelo Google no Google Kubernetes Engine: descreve como coletar dados de registro, métricas e trace ao executar no Google Kubernetes Engine. O coletor envia dados de trace 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 apropriado Google Cloud 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 de registro, que é também conhecida como um recurso monitorado do Logging. A seguir, ilustramos 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 recurso OTLP para um recurso monitorado. A tabela está ordenada. Ou seja, se os atributos de 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 do rótulo de um recurso monitorado, o Google Cloud Observability usa uma lista priorizada de atributos de recurso.
O valor de um rótulo é uma string vazia quando nenhum dos atributos de recurso está disponível.
| Atributo OTLP e valor anexado a um registro de registro |
Tipo de recurso monitorado do Cloud Logging |
Valores de rótulo de recurso monitorado determinados pelos atributos de recurso OTLP, por prioridade |
|---|---|---|
cloud.platformtem valor gcp_compute_engine |
gce_instance |
|
cloud.platformtem valor gcp_app_engine |
gae_app |
|
cloud.platformtem valor aws_ec2 |
aws_ec2_instance |
|
cloud.platformtem valor 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 rótulo corresponde | generic_node |
|
Inferir o valor do rótulo do ID do contêiner do projeto ou do recurso
Todos os tipos de recursos monitorados do Logging têm um rótulo project_id ou um rótulo 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