Asignación de atributos de OTLP a tipos de recursos

En este documento, se describen las reglas que usa Google Cloud Observability para determinar el tipo de recurso supervisado de Logging para los datos de registro que se transfieren a través de la API de Telemetry. El recurso supervisado describe la fuente de los datos de registro y, en un LogEntry, se representa mediante etiquetas. Google Cloud Observability determina los valores de esas etiquetas mediante los atributos de recursos de OTLP.

Estructura general de los datos de registro con formato OTLP

Cuando los datos de registro se envían a través de la API de Telemetry, estos datos deben tener un formato coherente con OTLP. Google Cloud La estructura general de estos datos es la siguiente:

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

Ten en cuenta que OpenTelemetry procesa por lotes los registros individuales, cada uno de los cuales se representa mediante una estructura logRecord, con información sobre la fuente de esos registros, que se representa mediante la estructura resource.

Cuando Google Cloud Observability recibe un objeto resourceLogs, construye uno LogEntry para cada logRecord. A diferencia de OTLP, que procesa por lotes la información de origen con una colección de registros individuales, cada estructura LogEntry contiene información sobre la fuente del registro y el registro en sí.

Para obtener más información sobre la estructura de los datos de registro con formato OTLP, consulta logs.proto de OpenTelemetry.

Configura los atributos de recursos de OTLP con el Google Cloud detector de recursos

Para configurar los atributos de recursos de OTLP en tus datos de registro de OTLP, usa un Google Cloud detector de recursos. Estos detectores adjuntan a la telemetría los atributos de recursos de OTLP que describen la fuente de la telemetría:

Cómo se configuran las etiquetas de recursos

Cada entrada de registro contiene un conjunto de etiquetas que identifica la fuente de la entrada de registro, que es también se conoce como un recurso supervisado de Logging. En la siguiente ilustración, se muestran las etiquetas de 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 se muestra, un recurso supervisado tiene un campo type y una o más labels. Como mínimo, las etiquetas de un recurso supervisado incluyen project_id o resource_container.

En la siguiente tabla, se describen las reglas que usa Google Cloud Observability para asignar atributos de recursos de OTLP a un recurso supervisado. La tabla está ordenada. Es decir, si los atributos de recursos incluyen cloud.platform y el valor es gcp_compute_engine, el tipo de recurso supervisado se establece en gce_instance. Para determinar el valor de la etiqueta de un recurso supervisado, Google Cloud Observability usa una lista priorizada de atributos de recursos. El valor de una etiqueta es una cadena vacía cuando no hay ninguno de los atributos de recursos disponibles.

Atributo OTLP
y valor
adjuntos a un registro de registro
Cloud Logging
tipo de recurso supervisado
Valores de etiquetas de recursos supervisados
según lo determinado a partir de los atributos de recursos de OTLP, por prioridad
cloud.platform
tiene el valor
gcp_compute_engine
gce_instance

project_id: Consulta Infiere el ID del proyecto.

instance_id: instance_id, host.id

zone: zone, cloud.availability_zone

cloud.platform
tiene el valor
gcp_app_engine
gae_app

project_id: Consulta Infiere el ID del proyecto.

module_id: gae_module_id, faas.name

version_id: gae_version_id, faas.version

zone: zone, cloud.availability_zone

cloud.platform
tiene el valor
aws_ec2
aws_ec2_instance

project_id: Consulta Infiere el ID del proyecto.

instance_id: instance_id, host.id

aws_account: aws_account, cloud.account.id

region: region, cloud.availability_zone, cloud.region

cloud.platform
tiene el valor
gcp_bare_metal_solution
baremetal instance

resource_container: Consulta Infiere el ID de resource_container.

region: region, cloud.availability_zone, cloud.region

instance_id: instance_id, host.id

service.name y
service.instance.id
no están vacíos
generic_task

project_id: Consulta Infiere el ID del proyecto.

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 y
faas.instance
no están vacíos
generic_task

project_id: Consulta Infiere el ID del proyecto.

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 y
k8s.container.name
no están vacíos
k8s_container

project_id: Consulta Infiere el ID del proyecto.

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 y
k8s.pod.name
no están vacíos
k8s_pod

project_id: Consulta Infiere el ID del proyecto.

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 y
k8s.node.name
no están vacíos
k8s_node

project_id: Consulta Infiere el ID del proyecto.

location: location, cloud.availability_zone, cloud.region

cluster_name: cluster_name, k8s.cluster.name

node_name: node_name, k8s.node.name

k8s.cluster.name
no está vacío
k8s_cluster

project_id: Consulta Infiere el ID del proyecto.

location: location, cloud.availability_zone, cloud.region

cluster_name: cluster_name, k8s.cluster.name

No coincide con ninguna otra etiqueta generic_node

project_id: Consulta Infiere el ID del proyecto.

location: location, cloud.availability_zone, cloud.region

namespace: namespace, service.namespace

node_id: node_id, host.id, host_name

Infiere el valor de la etiqueta del ID del proyecto o del contenedor de recursos

Todos los tipos de recurso supervisado de Logging tienen una etiqueta project_id o una etiqueta resource_container. El sistema busca los siguientes atributos, en orden, para determinar el valor de esas etiquetas:

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