Managed OpenTelemetry untuk GKE

Dokumen ini menjelaskan Managed OpenTelemetry untuk Google Kubernetes Engine (GKE), yang memungkinkan Anda mengirim OpenTelemetry Protocol (OTLP) trace, metrik, dan log ke Google Cloud Observability dari aplikasi yang berjalan di GKE. OpenTelemetry Terkelola menyediakan satu-satunya solusi terkelola oleh Google Cloud untuk mengumpulkan data trace di GKE.

Untuk menggunakan Managed OpenTelemetry untuk Google Kubernetes Engine (GKE), aplikasi harus sudah diinstrumentasi untuk menghasilkan sinyal menggunakan protokol OpenTelemetry. Untuk mengetahui detailnya, lihat Workload yang didukung.

Managed OpenTelemetry untuk GKE memiliki dua komponen:

  • Pengumpulan terkelola: Kolektor terkelola menyediakan endpoint OpenTelemetry Protocol dalam cluster sebagai tujuan bagi workload untuk mengirim trace, metrik, dan log dalam format OTLP, tanpa harus mengelola kolektor.
  • Konfigurasi otomatis: Resource kustom yang disebut Instrumentation memungkinkan konfigurasi otomatis untuk workload GKE Anda guna membuat dan memproses log, metrik, dan rekaman aktivitas OpenTelemetry yang berkorelasi. Pendekatan ini mendukung Agent Development Kit (ADK) dan data perintah dan respons multimodal.

    Anda dapat menggunakan resource kustom Instrumentation untuk beban kerja yang menggunakan OpenTelemetry SDK dan dikonfigurasi dengan variabel lingkungan OpenTelemetry standar. Resource kustom Instrumentation ini, instrumentations.telemetry.googleapis.com, adalah resource yang berbeda dari resource Instrumentation untuk operator OpenTelemetry.

Untuk mengetahui langkah-langkah menggunakan OpenTelemetry Terkelola untuk GKE, lihat Men-deploy OpenTelemetry Terkelola untuk GKE.

OpenTelemetry Terkelola untuk GKE memungkinkan Anda mengumpulkan telemetri OTLP tanpa harus mengelola dan mengoperasikan kolektor OpenTelemetry. Menjalankan kolektor Anda sendiri dapat menimbulkan overhead, termasuk autentikasi, konfigurasi, upgrade, dan pemantauan. Namun, jika Anda memerlukan pemfilteran dan kontrol tingkat pengumpul, Anda dapat menggunakan Pengumpul OpenTelemetry Buatan Google daripada layanan terkelola ini.

OpenTelemetry menyediakan API, library, dan SDK untuk menghasilkan trace, metrik, dan log terdistribusi untuk pemantauan aplikasi. Untuk mengetahui informasi selengkapnya tentang OpenTelemetry, lihat dokumentasi tentang OpenTelemetry dan OpenTelemetry Protocol (OTLP). Untuk mengetahui detail selengkapnya tentang cara membuat dan mengumpulkan data perilaku runtime aplikasi, lihat Instrumentasi dan kemampuan pengamatan.

Cara kerja Managed OpenTelemetry untuk GKE

Managed OpenTelemetry untuk GKE memiliki dua komponen: pengumpulan terkelola dan konfigurasi otomatis.

Koleksi terkelola

Managed collection menyediakan endpoint OTLP dalam cluster dengan men-deploy Managed OpenTelemetry Collector ke cluster Anda. Endpoint OTLP dalam cluster ini menerima trace, metrik, dan log dalam format OTLP. Untuk menerima data dari workload, workload harus dikonfigurasi untuk mengirim data ke pengumpul.

Endpoint pengumpul terkelola adalah: http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318.

Koleksi terkelola mengirimkan data yang dikumpulkan ke Google Cloud Observability. Data tersebut kemudian tersedia di layanan berikut:

Pengumpul terkelola dapat diaktifkan untuk cluster GKE menggunakan konsol atau gcloud CLI. Untuk mengetahui petunjuknya, lihat Mengaktifkan Managed OpenTelemetry untuk GKE di cluster.

Konfigurasi otomatis

Konfigurasi otomatis memungkinkan GKE mengonfigurasi workload yang berjalan di GKE untuk mengirim sinyal ke endpoint kolektor terkelola.

Ada berbagai metode yang dapat digunakan untuk mengonfigurasi workload. Konfigurasi otomatis menggunakan variabel lingkungan yang dimasukkan dalam container workload agar workload mengirim sinyal ke kolektor terkelola. Jika mengonfigurasi workload secara manual, Anda dapat menggunakan metode lain. Untuk mengetahui detailnya, lihat Konfigurasi manual.

Saat menggunakan konfigurasi otomatis, Anda menentukan konfigurasi menggunakan resource kustom Instrumentation. Kemudian, GKE akan menyuntikkan variabel lingkungan, seperti endpoint pengekspor OTLP, ke dalam container workload. Jika penampung workload memiliki variabel lingkungan ini, data OpenTelemetry akan dikirim ke pengumpul terkelola saat workload berjalan.

Konfigurasi otomatis tersedia untuk workload yang secara native mendukung OpenTelemetry, yang berarti workload tersebut menggunakan OpenTelemetry SDK dan dikonfigurasi menggunakan variabel lingkungan OpenTelemetry standar. Untuk mengetahui detail selengkapnya, lihat Workload yang didukung.

Untuk mengetahui petunjuk cara mengonfigurasi aplikasi menggunakan konfigurasi otomatis, lihat Mengonfigurasi aplikasi untuk menggunakan kolektor OpenTelemetry Terkelola.

Resource kustom Instrumentation

Anda menggunakan resource kustom Instrumentation untuk melakukan hal berikut:

  • Tentukan apakah akan menyuntikkan variabel lingkungan ke dalam container dari Pod yang dipilih atau semua Pod dalam namespace.
  • Mengontrol jenis data yang dikumpulkan (log, metrik, dan rekaman aktivitas).
  • Mengontrol frekuensi pengiriman data metrik ke pengumpul terkelola.
  • Mengontrol frekuensi sampling data rekaman aktivitas.

Untuk mengetahui detail tentang cara menggunakan resource kustom Instrumentation, lihat Mengubah konfigurasi.

Menyuntikkan variabel lingkungan secara otomatis

Untuk menyuntikkan variabel lingkungan OpenTelemetry ke workload GKE Anda secara otomatis, Anda perlu mengonfigurasi objek Instrumentation di cluster Anda. Kemudian, saat Anda men-deploy aplikasi di cluster dengan objek Instrumentation, variabel akan dimasukkan oleh GKE.

Objek Instrumentation harus ada di cluster saat aplikasi di-deploy dan Pod dibuat. Jika Anda men-deploy aplikasi sebelum membuat objek Instrumentation, Anda perlu memulai ulang pod aplikasi untuk memicu injeksi otomatis variabel lingkungan.

Variabel lingkungan

Saat workload di-deploy ke namespace tempat konfigurasi otomatis diaktifkan, GKE akan menyuntikkan variabel lingkungan ke dalam container workload. Variabel lingkungan ini adalah variabel OpenTelemetry dari Konfigurasi SDK OpenTelemetry.

Daftar berikut berisi semua variabel lingkungan yang dapat diinjeksikan oleh OpenTelemetry Terkelola untuk GKE. Variabel lingkungan tertentu yang dimasukkan ke dalam container bergantung pada konfigurasi di resource kustom Instrumentation.

Variabel lingkungan yang dapat dimasukkan secara otomatis ke dalam container adalah sebagai berikut:

  • Endpoint pengekspor OpenTelemetry.
    • OTEL_EXPORTER_OTLP_ENDPOINT: URL endpoint dasar untuk semua jenis sinyal. Endpoint ini selalu mengarah ke endpoint HTTP pengumpul OpenTelemetry yang dikelola dalam cluster untuk log, metrik, dan trace. Endpoint-nya adalah: http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318.
  • Konfigurasi rasio sampling trace.
    • OTEL_TRACES_SAMPLER: Menetapkan sampler yang digunakan untuk mengambil sampel trace oleh SDK ke salah satu dari berikut ini:
      • parentbased_traceidratio saat pengambilan sampel rekaman aktivitas dikonfigurasi di resource kustom.
      • parentbased_always_on adalah nilai default variabel lingkungan ini. Nilai ini digunakan jika variabel lingkungan ini tidak dikonfigurasi atau bernilai null dalam resource kustom.
    • OTEL_TRACES_SAMPLER_ARG: Menentukan rasio pengambilan sampel rekaman aktivitas (antara 0,0 dan 1,0). Jika tidak dikonfigurasi di resource kustom, maka 1.0 akan digunakan.
  • Interval penundaan antara awal dua ekspor metrik berturut-turut.
    • OTEL_METRIC_EXPORT_INTERVAL: Interval waktu (dalam milidetik) antara awal dua upaya ekspor (min: 5000, maks: 300000, default: 30000).
  • Penonaktifan ekspor telemetri OTLP menurut jenis sinyal. Pengekspor sinyal dinonaktifkan saat tracer_provider, meter_provider, atau logger_provider ditetapkan ke null dalam file Instrumentation.
    • OTEL_TRACES_EXPORTER: Menonaktifkan ekspor trace jika ditetapkan ke none. Nilai default: otlp.
    • OTEL_METRICS_EXPORTER: Menonaktifkan ekspor metrik jika disetel ke none. Nilai default: otlp.
    • OTEL_LOGS_EXPORTER: Menonaktifkan ekspor log jika disetel ke none. Nilai default: otlp.
  • Identifikasi Pod hostNetwork untuk mengaitkan metadata oleh Kubernetes Attributes Processor dari OpenTelemetry Collector.
    • K8S_POD_UID: UID Pod hostNetwork untuk mengisi setelan k8s.pod.uid di variabel lingkungan OTEL_RESOURCE_ATTRIBUTES.
    • OTEL_RESOURCE_ATTRIBUTES: Nilai mencakup k8s.pod.uid=$(K8S_POD_UID) untuk memungkinkan Pemroses Atribut Kubernetes mengaitkan metadata, seperti k8s.namespace.name, k8s.deployment.name, dan k8s.node.name, ke Pod hostNetwork. Pengaitan metadata dan Pod hostNetwork memungkinkan penambahan metadata yang diekstrak ke rentang, metrik, dan log sebagai atribut resource.
  • Perintah dan respons.
    • OTEL_INSTRUMENTATION_GENAI_UPLOAD_FORMAT='jsonl': Menginstruksikan OpenTelemetry untuk memformat objek Cloud Storage sebagai JSON Lines. Variabel lingkungan ini memiliki nilai tetap: jsonl.
    • OTEL_INSTRUMENTATION_GENAI_COMPLETION_HOOK='upload': Menginstruksikan OpenTelemetry untuk mengupload data perintah dan respons, bukan menyematkan konten ini dalam span trace. Referensi ke objek yang diupload disertakan dalam entri log. Variabel lingkungan ini memiliki nilai tetap: upload.
    • OTEL_SEMCONV_STABILITY_OPT_IN='gen_ai_latest_experimental': Menginstruksikan OpenTelemetry untuk menggunakan konvensi semantik terbaru untuk AI generatif. Variabel lingkungan ini memiliki nilai tetap: gen_ai_latest_experimental.
    • OTEL_INSTRUMENTATION_GENAI_UPLOAD_BASE_PATH: Tentukan jalur untuk objek. Misalnya, gs://STORAGE_BUCKET_NAME/PATH

Konfigurasi manual

Ada berbagai metode yang dapat Anda gunakan untuk mengonfigurasi workload agar mengirimkan sinyal ke endpoint pengumpul terkelola. Jika mengonfigurasi workload secara manual, Anda dapat menambahkan dan mengubah variabel lingkungan secara manual, atau menggunakan metode lain seperti flag command line.

Sebaiknya jangan gunakan konfigurasi manual dan konfigurasi otomatis secara bersamaan untuk workload yang sama, karena konfigurasi otomatis dapat menggantikan perubahan manual. Kombinasi ini mungkin akan mempersulit pelacakan perubahan pada konfigurasi.

Untuk mengetahui detail tentang konfigurasi otomatis, lihat Konfigurasi otomatis

Workload yang didukung

Workload yang didukung adalah workload yang menggunakan OpenTelemetry untuk mengumpulkan data tentang perilaku runtime aplikasi. Workload mendukung OpenTelemetry secara native jika menggunakan OpenTelemetry SDK dan dikonfigurasi menggunakan variabel lingkungan OpenTelemetry standar. Misalnya, Agent Development Kit (ADK) secara native mendukung OpenTelemetry.

Untuk mengetahui detail selengkapnya tentang cara data perilaku runtime aplikasi Anda dibuat dan dikumpulkan, lihat Penginstrumentasian dan kemampuan observasi.

Jika workload mendukung beberapa jenis data OTLP dan tidak mendukung jenis data lainnya, OpenTelemetry Terkelola untuk GKE akan mengumpulkan data OTLP. Misalnya, jika workload menggunakan OpenTelemetry SDK untuk menerapkan rekaman aktivitas, tetapi tidak menggunakannya untuk log atau metrik, maka data log dan metrik tidak dikumpulkan oleh Managed OpenTelemetry untuk GKE. Untuk mengetahui detail tentang cara mengontrol jenis data yang akan dikumpulkan, lihat Memilih jenis sinyal yang akan dikumpulkan.

Penyisipan konfigurasi OpenTelemetry tidak didukung untuk workload istimewa dari partner GKE Autopilot.

Penagihan

Saat Anda mengirim data telemetri ke Google Cloud, Anda akan ditagih berdasarkan volume penyerapan. Metrik ditagih menggunakan harga Google Cloud Managed Service for Prometheus, log ditagih menggunakan harga Cloud Logging, dan trace ditagih menggunakan harga Cloud Trace.

Untuk mengetahui informasi tentang biaya yang terkait dengan penyerapan rekaman aktivitas, log, dan metrik Google Cloud Managed Service for Prometheus, lihat Harga Google Cloud Observability.

Kuota

Saat Anda menggunakan Managed OpenTelemetry untuk GKE, kuota untuk layanan Google Cloud Observability akan berlaku. Untuk mengetahui detailnya, lihat referensi berikut:

Langkah berikutnya