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. Managed OpenTelemetry menyediakan satu-satunya solusi terkelola dari 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:
- Koleksi terkelola: Kolektor terkelola menyediakan endpoint OpenTelemetry Protocol dalam cluster sebagai tujuan workload untuk mengirim trace, metrik, dan log dalam format OTLP, tanpa harus mengelola kolektor.
Konfigurasi otomatis: Resource kustom yang disebut
Instrumentationmemungkinkan konfigurasi otomatis untuk workload GKE Anda guna menghasilkan dan menyerap trace, metrik, dan log OpenTelemetry yang berkorelasi. Pendekatan ini mendukung Agent Development Kit (ADK) dan data perintah serta respons multimodal.Anda dapat menggunakan resource kustom
Instrumentationuntuk workload yang menggunakan OpenTelemetry SDK dan dikonfigurasi dengan variabel lingkungan OpenTelemetry standar. Resource kustomInstrumentation,instrumentations.telemetry.googleapis.com, adalah resource yang berbeda dari resourceInstrumentationuntuk operator OpenTelemetry.
Untuk mengetahui langkah-langkah menggunakan Managed OpenTelemetry untuk GKE, lihat Men-deploy Managed OpenTelemetry untuk GKE.
Managed OpenTelemetry 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 memerlukan kontrol dan pemfilteran tingkat kolektor, Anda dapat menggunakan Google-Built OpenTelemetry Collector bukan 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 observabilitas.
Cara kerja Managed OpenTelemetry untuk GKE
Managed OpenTelemetry untuk GKE memiliki dua komponen: koleksi terkelola dan konfigurasi otomatis.
Koleksi terkelola
Koleksi terkelola menyediakan endpoint OTLP dalam cluster dengan men-deploy kolektor OpenTelemetry terkelola 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 kolektor.
Endpoint kolektor 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:
Kolektor 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 memasukkan variabel lingkungan, seperti endpoint eksportir OTLP, ke dalam container workload. Jika container workload memiliki variabel lingkungan ini, data OpenTelemetry akan dikirim ke kolektor 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 Managed OpenTelemetry.
Resource kustom Instrumentation
Anda menggunakan resource kustom Instrumentation untuk melakukan hal berikut:
- Menentukan apakah akan memasukkan variabel lingkungan ke dalam container Pod yang dipilih atau semua Pod dalam namespace.
- Mengontrol jenis data yang dikumpulkan (log, metrik, dan trace).
- Mengontrol frekuensi pengiriman data metrik ke kolektor terkelola.
- Mengontrol frekuensi sampling data trace.
Untuk mengetahui detail tentang cara menggunakan resource kustom Instrumentation, lihat
Mengubah konfigurasi.
Memasukkan variabel lingkungan secara otomatis
Untuk memasukkan variabel lingkungan OpenTelemetry ke workload GKE Anda secara otomatis, Anda harus mengonfigurasi objek Instrumentation di cluster.
Kemudian, saat Anda men-deploy aplikasi di cluster dengan objek Instrumentation, variabel akan dimasukkan oleh GKE.
Objek Instrumentation harus berada di cluster saat aplikasi di-deploy dan Pod dibuat. Jika Anda men-deploy aplikasi sebelum membuat objek Instrumentation, Anda harus memulai ulang pod aplikasi untuk memicu penyisipan otomatis variabel lingkungan.
Variabel lingkungan
Saat workload di-deploy ke namespace tempat konfigurasi otomatis diaktifkan, GKE akan memasukkan variabel lingkungan ke dalam container workload. Variabel lingkungan ini adalah variabel OpenTelemetry dari Konfigurasi OpenTelemetry SDK.
Daftar berikut berisi semua variabel lingkungan yang dapat dimasukkan oleh Managed OpenTelemetry 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 eksportir OpenTelemetry.
OTEL_EXPORTER_OTLP_ENDPOINT: URL endpoint dasar untuk jenis sinyal apa pun. Endpoint ini selalu mengarah ke endpoint HTTP kolektor OpenTelemetry terkelola 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 nilai berikut:parentbased_traceidratiosaat pengambilan sampel trace dikonfigurasi dalam resource kustom.parentbased_always_onadalah nilai default variabel lingkungan ini. Nilai ini digunakan jika variabel lingkungan ini tidak dikonfigurasi atau null dalam resource kustom.
OTEL_TRACES_SAMPLER_ARG: Menentukan rasio sampling trace (antara 0,0 dan 1,0). Jika tidak dikonfigurasi dalam resource kustom, 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 berdasarkan jenis sinyal. Eksportir sinyal dinonaktifkan saat
tracer_provider,meter_provider, ataulogger_providerditetapkan kenulldalam fileInstrumentation.OTEL_TRACES_EXPORTER: Menonaktifkan ekspor trace saat ditetapkan kenone. Nilai default:otlp.OTEL_METRICS_EXPORTER: Menonaktifkan ekspor metrik saat ditetapkan kenone. Nilai default:otlp.OTEL_LOGS_EXPORTER: Menonaktifkan ekspor log saat ditetapkan kenone. Nilai default:otlp.
- Identifikasi Pod hostNetwork untuk mengaitkan metadata oleh
Kubernetes Attributes Processor
dari OpenTelemetry Collector.
K8S_POD_UID: Pod UID dari Pod hostNetwork untuk mengisi setelank8s.pod.uiddalam variabel lingkunganOTEL_RESOURCE_ATTRIBUTES.OTEL_RESOURCE_ATTRIBUTES: Nilai ini mencakupk8s.pod.uid=$(K8S_POD_UID)untuk memungkinkan Kubernetes Attributes Processor mengaitkan metadata, sepertik8s.namespace.name,k8s.deployment.name, dank8s.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 rentang 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: Menentukan jalur untuk objek. Misalnya,gs://STORAGE_BUCKET_NAME/PATH
Konfigurasi manual
Ada berbagai metode yang dapat Anda gunakan untuk mengonfigurasi workload agar mengirim sinyal ke endpoint kolektor 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 mengganti perubahan manual. Kombinasi ini dapat 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 secara native mendukung OpenTelemetry jika menggunakan OpenTelemetry SDK dan dikonfigurasi menggunakan variabel lingkungan OpenTelemetry standar. Misalnya, the Agent Development Kit (ADK) secara native mendukung OpenTelemetry.
Untuk mengetahui detail selengkapnya tentang cara data perilaku runtime aplikasi Anda dibuat dan dikumpulkan, lihat Instrumentasi dan observabilitas.
Jika workload mendukung beberapa jenis data OTLP dan tidak mendukung jenis lainnya, Managed OpenTelemetry untuk GKE akan mengumpulkan data OTLP. Misalnya, jika workload menggunakan OpenTelemetry SDK untuk menerapkan trace, tetapi tidak menggunakannya untuk log atau metrik, data log dan metrik tidak akan 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 yang memiliki hak 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 trace, 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 hal berikut:
Langkah berikutnya
- Untuk men-deploy kolektor, lihat Men-deploy Managed OpenTelemetry untuk GKE.
- Untuk mengetahui alternatif yang di-deploy sendiri untuk Managed OpenTelemetry untuk GKE, lihat Google-Built OpenTelemetry Collector.
- Untuk mengetahui informasi tentang cara menyiapkan instrumentasi OpenTelemetry untuk menghasilkan trace, metrik, dan log dari aplikasi Anda, lihat hal berikut:
- Menambahkan trace dan metrik kustom ke aplikasi Anda dengan OpenTelemetry.