Mappatura degli attributi OTLP al tipo di risorsa

Questo documento descrive le regole utilizzate da Google Cloud Observability per determinare il tipo di risorsa monitorata Logging per i dati di log inseriti dall'API Telemetry. La risorsa monitorata descrive l'origine dei dati di log e, in un LogEntry, è rappresentata dall'utilizzo di etichette. Google Cloud Observability determina i valori di queste etichette utilizzando gli attributi delle risorse OTLP.

Struttura generale dei dati di log formattati in OTLP

Quando i dati di log vengono inviati a Google Cloud utilizzando l'API Telemetry, questi dati devono essere in un formato coerente con OTLP. La struttura generale di questi dati è la seguente:

"resourceLogs": [
    {
      "resource": {
        "attributes": [...]
      },
      "scopeLogs": [
        {
          "logRecords": [...]
        }
      ]
    }
]

Tieni presente che OpenTelemetry raggruppa i singoli log, ognuno dei quali è rappresentato da una struttura logRecord, con informazioni sull'origine di questi log, che è rappresentata dalla struttura resource.

Quando Google Cloud Observability riceve un oggetto resourceLogs, crea un LogEntry per ogni logRecord. A differenza di OTLP, che raggruppa le informazioni sull'origine con una raccolta di singoli log, ogni struttura LogEntry contiene informazioni sull'origine del log e sul log stesso.

Per scoprire di più sulla struttura dei dati di log in formato OTLP, consulta la pagina logs.proto di OpenTelemetry.

Imposta gli attributi delle risorse OTLP utilizzando il rilevatore di risorse Google Cloud

Per impostare gli attributi delle risorse OTLP nei dati di log OTLP, utilizza un Google Cloud detector di risorse. Questi rilevatori collegano alla telemetria gli attributi della risorsa OTLP che descrivono l'origine della telemetria:

Come vengono impostate le etichette delle risorse

Ogni voce di log contiene un insieme di etichette che identificano l'origine della voce di log, ovvero una risorsa monitorata di Logging. Di seguito sono illustrate le etichette per 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"
}

Come mostrato, una risorsa monitorata ha un campo type e uno o più labels. Come minimo, le etichette di una risorsa monitorata includono project_id o resource_container.

La tabella seguente descrive le regole utilizzate da Google Cloud Observability per mappare gli attributi delle risorse OTLP a una risorsa monitorata. La tabella è ordinata. ovvero, se gli attributi della risorsa includono cloud.platform e il valore è gcp_compute_engine, il tipo di risorsa monitorata è impostato su gce_instance. Per determinare il valore dell'etichetta di una risorsa monitorata, Google Cloud Observability utilizza un elenco prioritario di attributi della risorsa. Il valore di un'etichetta è una stringa vuota quando nessuno degli attributi della risorsa è disponibile.

Attributo
e valore
OTLP allegati a un record di log
Tipo di risorsa monitorata
Cloud Logging
Valori delle etichette delle risorse monitorate
determinati dagli attributi delle risorse OTLP, in base alla priorità
cloud.platform
has value
gcp_compute_engine
gce_instance

project_id: vedi Infer project ID.

instance_id: instance_id, host.id

zone: zona, cloud.availability_zone

cloud.platform
has value
gcp_app_engine
gae_app

project_id: vedi Infer project ID.

module_id: gae_module_id, faas.name

version_id: gae_version_id, faas.version

zone: zona, cloud.availability_zone

cloud.platform
has value
aws_ec2
aws_ec2_instance

project_id: vedi Infer project ID.

instance_id: instance_id, host.id

aws_account: aws_account, cloud.account.id

region: region, cloud.availability_zone, cloud.region

cloud.platform
has value
gcp_bare_metal_solution
baremetal instance

resource_container: vedi Infer resource_container ID.

region: region, cloud.availability_zone, cloud.region

instance_id: instance_id, host.id

service.name e
service.instance.id
non sono vuoti
generic_task

project_id: vedi Infer project ID.

location: location, cloud.availability_zone, cloud.region

namespace: namespace, service.namespace

job_name: job, service.name, faas.name

task_id: task_id, service.instance.id, faas.instance

faas.name e
faas.instance
non sono vuoti
generic_task

project_id: vedi Infer project ID.

location: location, cloud.availability_zone, cloud.region

namespace: namespace, service.namespace

job_name: job, service.name, faas.name

task_id: task_id, service.instance.id, faas.instance

k8s.cluster.name e
k8s.container.name
non sono vuoti
k8s_container

project_id: vedi Infer project ID.

location: location, cloud.availability_zone, cloud.region

cluster_name: cluster_name, k8s.cluster.name

namespace_name: namespace_name, k8s.namespace_name

pod_name: pod_name, k8s.pod.name

container_name: container_name, k8s.container.name

k8s.cluster.name e
k8s.pod.name
non sono vuoti
k8s_pod

project_id: vedi Infer project ID.

location: location, cloud.availability_zone, cloud.region

cluster_name: cluster_name, k8s.cluster.name

namespace_name: namespace_name, k8s.namespace_name

pod_name: pod_name, k8s.pod.name

k8s.cluster.name e
k8s.node.name
non sono vuoti
k8s_node

project_id: vedi Infer project ID.

location: location, cloud.availability_zone, cloud.region

cluster_name: cluster_name, k8s.cluster.name

node_name: node_name, k8s.node.name

k8s.cluster.name
non è vuoto
k8s_cluster

project_id: vedi Infer project ID.

location: location, cloud.availability_zone, cloud.region

cluster_name: cluster_name, k8s.cluster.name

Nessuna altra etichetta corrisponde generic_node

project_id: vedi Infer project ID.

location: location, cloud.availability_zone, cloud.region

namespace: namespace, service.namespace

node_id: node_id, host.id, host_name

Deduci il valore dell'etichetta dell'ID progetto o del container di risorse

Tutti i tipi di risorsa monitorata di Logging hanno un'etichetta project_id o un'etichetta resource_container. Il sistema cerca i seguenti attributi, in ordine, per determinare il valore di queste etichette:

  • project_id
  • gcp.project.id
  • gcp.project_id
  • gcp.dest_project_id
  • gcp.resource.container
  • resource_container
  • cloud.account.id
  • cloud.account_id