Memecahkan Masalah OpenTelemetry Collector Buatan Google

Dokumen ini menjelaskan langkah-langkah pemecahan masalah dan masalah umum saat menggunakan OpenTelemetry Collector seperti Google-Built OpenTelemetry Collector untuk mengirim data ke Google Cloud Observability.

Memecahkan masalah pengumpulan data

Bagian ini menjelaskan strategi yang dapat Anda gunakan untuk memecahkan masalah pengumpulan data.

Menggunakan eksportir debug

Eksportir debug adalah cara terbaik untuk melihat data di tingkat OpenTelemetry Collector. Eksportir mengambil data apa pun yang diterimanya dan menuliskannya ke stdout dalam format yang dapat dibaca manusia. Hal ini paling berguna saat Anda perlu memverifikasi bahwa transformasi apa pun dalam pipeline Anda menghasilkan hasil yang diinginkan.

Eksportir debug disertakan dalam Google-Built OpenTelemetry Collector. Anda dapat mengonfigurasi eksportir debug dengan verbosity: detailed untuk melihat seluruh payload telemetri.

exporters:
  debug:
    verbosity: detailed

Anda dapat menyertakan eksportir dalam pipeline:

service:
  pipelines:
    metrics:
      receivers: [
        # ...
      ]
      processors: [
        # ...
      ]
      exporters: [
        debug, # can be added alongside any other configured exporters
        # ...
      ]

Menguji OpenTelemetry Transformation Language (OTTL) secara online dengan OTTL Playground

OTTL Playground adalah alat yang dikembangkan komunitas yang memungkinkan Anda mengembangkan pipeline OpenTelemetry Transformation Language secara interaktif. Anda mulai dengan menyediakan OTLP JSON sebagai input, menulis pipeline menggunakan konfigurasi yang sama seperti yang Anda lakukan untuk OpenTelemetry Collector, dan memeriksa hasilnya secara visual.

Cara terbaik untuk mendapatkan OTLP JSON dari pipeline adalah dengan menempatkan a file eksportir di tempat sebelum prosesor transformasi Anda berada. Mulai dengan mengonfigurasi eksportir file:

exporters:
  file:
    path: example.json

Jika Anda memiliki pipeline seperti ini:

service:
  pipelines:
    metrics:
      receivers: [hostmetrics]
      processors: [
        memorylimiter,
        groupbyattrs,
        transform, # where your OTTL pipeline will go
        cumulativetodelta,
        metricstarttime,
      ]
      exporters: [
        otlp,
      ]

Anda dapat mengubah pipeline untuk sementara guna mengekspor data seperti yang akan terlihat saat masuk ke prosesor transform yang sedang Anda kerjakan.

service:
  pipelines:
    metrics:
      receivers: [hostmetrics]
      processors: [
        memorylimiter,
        groupbyattrs,
        # transform,
        # cumulativetodelta,
        # metricstarttime,
      ]
      exporters: [
        # otlp,
        file,
      ]

Eksportir file akan menulis setiap payload yang diterimanya ke baris dalam file. Anda dapat menggunakan satu baris data sebagai input ke OTTL Playground.

Masalah umum

Bagian ini menjelaskan masalah umum dengan OpenTelemetry Collector/Google-Built OpenTelemetry Collector dan cara mengatasinya jika memungkinkan.

Error connect: network is unreachable yang berlebihan saat menggunakan eksportir otlp

CATATAN: Masalah ini hanya berlaku untuk eksportir otlp gRPC, bukan eksportir HTTP yang setara yang disebut otlphttp.

CATATAN: Masalah ini baru diamati secara langsung di lingkungan Compute Engine sejauh ini, tetapi karena sifat masalah ini, kami tidak dapat mengonfirmasi bahwa masalah ini benar-benar terbatas pada Compute Engine.

Mulai Google-Built OpenTelemetry Collector versi 0.147.0 dan OpenTelemetry Collector versi 0.145.0 upstream, eksportir otlp akan mulai menggunakan strategi load balancing sisi klien round_robin secara default, yang sebelumnya adalah pick_first. Saat eksportir sebelumnya menggunakan strategi pick_first, eksportir juga memiliki penggantian IPV4 yang berfungsi penuh dalam skenario saat IPV6 tidak berfungsi. Strategi round_robin tidak memiliki properti ini, dan akan berulang kali mencoba mengirim ke semua alamat yang di-resolve pada waktu mulai eksportir, meskipun alamat tersebut tidak berfungsi.

Akibatnya, jika Anda menggunakan eksportir otlp untuk mengirim data ke Telemetry API, Anda mungkin melihat pesan error seperti ini:

2026-02-13T20:50:00.665Z        warn    grpc@v1.78.0/clientconn.go:1526 [core] [Channel #1 SubChannel #18] grpc: addrConn.createTransport failed to connect to {Addr: "[2607:f8b0:4001:c62::5f]:443", ServerName: "telemetry.googleapis.com:443", }. Err: connection error: desc = "transport: Error while dialing: dial tcp [2607:f8b0:4001:c62::5f]:443: connect: network is unreachable"   {"resource": {"service.instance.id": "feb467f0-ecc6-4a0c-b1e2-90c908131fdd", "service.name": "otelcol-google", "service.version": "v0.147.0"}, "grpc_log": true}

Mengisolasi error sebenarnya dari log:

transport: Error while dialing: dial tcp [2607:f8b0:4001:c62::5f]:443: connect: network is unreachable

Untuk mengatasi error ini, Anda dapat beralih ke eksportir otlphttp (lihat panduan pengguna metrik OTLP kami untuk melihat contohnya) atau Anda dapat mengonfigurasi load balancer pick_first secara manual di eksportir otlp:

exporters:
  otlp:
    # ...
    balancer_name: pick_first
    # ...

Jika error berlanjut setelah salah satu solusi tersebut, kemungkinan pesan error ini adalah gejala masalah konektivitas jaringan yang sebenarnya, sehingga Anda harus memastikan bahwa pengumpul Anda benar-benar dapat menjangkau jaringan.