Pemetaan atribut OTLP ke jenis resource

Dokumen ini menjelaskan aturan yang digunakan Google Cloud Observability untuk menentukan jenis resource yang dipantau Logging untuk data log yang di-ingest oleh Telemetry API. Resource yang dipantau menjelaskan sumber data log, dan dalam LogEntry, resource ini diwakili dengan menggunakan label. Google Cloud Observability menentukan nilai label tersebut dengan menggunakan atribut resource OTLP.

Struktur umum data log berformat OTLP

Saat data log dikirim ke Google Cloud menggunakan Telemetry API, data ini harus dalam format yang konsisten dengan OTLP. Struktur umum untuk data ini adalah seperti yang ditunjukkan:

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

Perhatikan bahwa OpenTelemetry mengelompokkan log individual, yang masing-masing direpresentasikan oleh struktur logRecord, dengan informasi tentang sumber log tersebut, yang direpresentasikan oleh struktur resource.

Saat menerima objek resourceLogs, Google Cloud Observability akan membuat satu LogEntry untuk setiap logRecord. Tidak seperti OTLP yang mengelompokkan informasi sumber dengan kumpulan log individual, setiap struktur LogEntry berisi informasi tentang sumber log dan log itu sendiri.

Untuk mempelajari lebih lanjut struktur data log berformat OTLP, lihat logs.proto OpenTelemetry.

Menetapkan atribut resource OTLP menggunakan pendeteksi resource Google Cloud

Untuk menyetel atribut resource OTLP dalam data log OTLP, gunakan detektor resourceGoogle Cloud . Detektor ini melampirkan atribut resource OTLP yang menjelaskan sumber telemetri ke telemetri:

Cara menetapkan label resource

Setiap entri log berisi serangkaian label yang mengidentifikasi sumber entri log, yang juga dikenal sebagai Resource yang dipantau untuk logging. Berikut ini menggambarkan label untuk 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"
}

Seperti yang ditunjukkan, resource yang dipantau memiliki kolom type dan satu atau beberapa labels. Setidaknya, label untuk resource yang dipantau mencakup project_id atau resource_container.

Tabel berikut menjelaskan aturan yang digunakan Google Cloud Observability untuk memetakan atribut resource OTLP ke resource yang dipantau. Tabel diurutkan. Artinya, jika atribut resource mencakup cloud.platform dan nilainya adalah gcp_compute_engine, maka jenis resource yang dipantau ditetapkan ke gce_instance. Untuk menentukan nilai label resource yang dipantau, Google Cloud Observability menggunakan daftar atribut resource yang diprioritaskan. Nilai label adalah string kosong jika tidak ada atribut resource yang tersedia.

Atribut
dan nilai
OTLP yang dilampirkan ke rekaman log
Jenis resource yang dimonitor
Cloud Logging
Nilai label resource yang dipantau
sebagaimana ditentukan dari atribut resource OTLP, berdasarkan prioritas
cloud.platform
memiliki nilai
gcp_compute_engine
gce_instance

project_id: Lihat Menyimpulkan project ID.

instance_id: instance_id, host.id

zone: zone, cloud.availability_zone

cloud.platform
memiliki nilai
gcp_app_engine
gae_app

project_id: Lihat Menyimpulkan project ID.

module_id: gae_module_id, faas.name

version_id: gae_version_id, faas.version

zone: zone, cloud.availability_zone

cloud.platform
memiliki nilai
aws_ec2
aws_ec2_instance

project_id: Lihat Menyimpulkan project ID.

instance_id: instance_id, host.id

aws_account: aws_account, cloud.account.id

region: region, cloud.availability_zone, cloud.region

cloud.platform
memiliki nilai
gcp_bare_metal_solution
baremetal instance

resource_container: Lihat Menyimpulkan ID resource_container.

region: region, cloud.availability_zone, cloud.region

instance_id: instance_id, host.id

service.name dan
service.instance.id
tidak kosong
generic_task

project_id: Lihat Menyimpulkan 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 dan
faas.instance
tidak kosong
generic_task

project_id: Lihat Menyimpulkan 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 dan
k8s.container.name
tidak kosong
k8s_container

project_id: Lihat Menyimpulkan 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 dan
k8s.pod.name
tidak kosong
k8s_pod

project_id: Lihat Menyimpulkan 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 dan
k8s.node.name
tidak kosong
k8s_node

project_id: Lihat Menyimpulkan 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
tidak kosong
k8s_cluster

project_id: Lihat Menyimpulkan project ID.

location: location, cloud.availability_zone, cloud.region

cluster_name: cluster_name, k8s.cluster.name

Tidak ada kecocokan label lain generic_node

project_id: Lihat Menyimpulkan project ID.

location: location, cloud.availability_zone, cloud.region

namespace: namespace, service.namespace

node_id: node_id, host.id, host_name

Menyimpulkan nilai label ID container project atau resource

Semua jenis resource yang dimonitor Logging memiliki label project_id atau label resource_container. Sistem menelusuri atribut berikut, secara berurutan, untuk menentukan nilai label tersebut:

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