Dokumen ini menjelaskan cara menyiapkan OpenTelemetry Terkelola untuk GKE guna mengirim trace, metrik, dan log OpenTelemetry Protocol (OTLP) ke Google Cloud Observability dari aplikasi yang berjalan di GKE.
Untuk mengetahui detail selengkapnya tentang cara kerja Managed OpenTelemetry untuk GKE, lihat Managed OpenTelemetry untuk GKE.
Anda dapat menggunakan Managed OpenTelemetry untuk GKE untuk melakukan hal berikut:
- Konfigurasikan workload yang berjalan di GKE untuk mengirim trace, metrik, dan log OpenTelemetry Protocol (OTLP) ke kolektor terkelola.
- Menerima trace, metrik, dan log OpenTelemetry Protocol (OTLP) dari aplikasi yang berjalan di GKE.
- Ekspor data tersebut ke Google Cloud Observability.
Jika Anda memerlukan pemfilteran dan kontrol tingkat pengumpul, gunakan Google-Built OpenTelemetry Collector daripada penawaran terkelola ini.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih project Google Cloud .
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Pastikan Anda memiliki izin yang diperlukan untuk menyelesaikan panduan ini.
-
Pastikan penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan GKE, Telemetry (OTLP), Cloud Logging, Cloud Monitoring, Cloud Trace API, jika ada yang belum diaktifkan:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable container.googleapis.com
telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com -
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih project Google Cloud .
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Pastikan Anda memiliki izin yang diperlukan untuk menyelesaikan panduan ini.
-
Pastikan penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan GKE, Telemetry (OTLP), Cloud Logging, Cloud Monitoring, Cloud Trace API, jika ada yang belum diaktifkan:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable container.googleapis.com
telemetry.googleapis.com logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com
Persyaratan
Untuk menggunakan Managed OpenTelemetry untuk GKE, Anda harus memenuhi persyaratan berikut:
- Cluster harus memiliki GKE versi 1.34.1-gke.2178000 atau yang lebih baru.
- gcloud CLI diaktifkan dengan versi 576.0.0 atau yang lebih baru.
- Jika menggunakan Terraform untuk menyediakan infrastruktur GKE, Anda harus menggunakan penyedia
terraform-provider-google-betadi versiv7.17.0atau yang lebih baru.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengaktifkan dan menggunakan OpenTelemetry yang dikelola GKE, minta administrator untuk memberi Anda peran IAM berikut di project Anda:
- Kubernetes Engine Cluster Admin (
roles/container.clusterAdmin) - Monitoring Viewer (
roles/monitoring.viewer) - Logs Viewer (
roles/logging.viewer) - Pengguna Cloud Trace (
roles/cloudtrace.user)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Biaya
Lihat Penagihan untuk mengetahui detail tentang biaya yang terkait dengan penggunaan Managed OpenTelemetry untuk GKE.
Mengaktifkan OpenTelemetry Terkelola untuk GKE di cluster
Untuk menyiapkan OpenTelemetry Terkelola untuk GKE, Anda harus melakukan hal berikut:
- Mengaktifkan OpenTelemetry Terkelola untuk GKE di cluster.
- Konfigurasi aplikasi yang Anda pantau untuk mengirim sinyal ke endpoint pengumpul terkelola.
Saat Anda mengaktifkan Managed OpenTelemetry untuk GKE, objek berikut akan di-deploy ke cluster:
- Deployment kolektor OpenTelemetry Terkelola GKE yang di-deploy dalam namespace
gke-managed-otel. Endpoint HTTP kolektor OpenTelemetry terkelola dalam cluster untuk log, metrik, dan trace adalah sebagai berikut:http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318. Definisi resource kustom,
instrumentations.telemetry.googleapis.com, yang dapat Anda gunakan untuk menyiapkan konfigurasi otomatis workload Anda.Untuk mengetahui detail selengkapnya tentang resource kustom, lihat resource kustom dalam dokumentasi Kubernetes.
Mengaktifkan di cluster baru
Untuk mengaktifkan Managed OpenTelemetry untuk GKE di cluster baru, ikuti langkah-langkah berikut:
gcloud
Untuk cluster Autopilot, gunakan perintah berikut:
gcloud container clusters create-auto CLUSTER_NAME \
--project=PROJECT_ID \
--managed-otel-scope=COLLECTION_AND_INSTRUMENTATION_COMPONENTS \
--location=LOCATION \
--cluster-version=VERSION
Ganti kode berikut:
CLUSTER_NAME: nama cluster.PROJECT_ID: Google Cloud Project IDLOCATION: region atau zona.VERSION: versi, yang harus berupa1.34.1-gke.2178000atau yang lebih baru.
Untuk cluster Standard, gunakan perintah berikut:
gcloud container clusters create CLUSTER_NAME \
--project=PROJECT_ID \
--managed-otel-scope=COLLECTION_AND_INSTRUMENTATION_COMPONENTS \
--location=LOCATION \
--cluster-version=VERSION
Ganti kode berikut:
CLUSTER_NAME: nama cluster.PROJECT_ID: Google Cloud Project IDLOCATION: region atau zona.VERSION: versi, yang harus merupakan versi1.34.1-gke.2178000atau yang lebih baru.
Konsol
Untuk cluster Autopilot, lakukan hal berikut:
Di konsol Google Cloud , buka halaman Create an Autopilot cluster.
Di panel navigasi, klik Advanced settings.
Di bagian Operations, pilih Enable managed OpenTelemetry.
Klik Create.
Untuk cluster Standard, lakukan hal berikut:
- Di konsol Google Cloud , buka halaman Create a Kubernetes cluster.
- Di panel navigasi, klik Advanced settings.
- Di baris Managed OpenTelemetry, klik edit Edit configuration.
- Pilih Aktifkan OpenTelemetry terkelola.
- Klik Simpan.
- Klik Create.
Terraform
Untuk mengaktifkan OpenTelemetry Terkelola untuk GKE di cluster baru menggunakan Terraform, lihat contoh berikut:
Untuk mempelajari lebih lanjut cara menggunakan Terraform, lihat Dukungan Terraform untuk GKE.
Mengaktifkan di cluster yang ada
Untuk mengaktifkan OpenTelemetry Terkelola untuk GKE di cluster yang ada, ikuti langkah-langkah berikut:
gcloud
Pastikan versi cluster adalah
1.34.1-gke.2178000atau yang lebih baru. Untuk mengetahui detail tentang cara mengupgrade cluster yang ada, lihat Upgrade cluster Standard dan Upgrade cluster Autopilot.Aktifkan Managed OpenTelemetry untuk GKE menggunakan perintah berikut:
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --managed-otel-scope=COLLECTION_AND_INSTRUMENTATION_COMPONENTS \ --location=LOCATIONGanti kode berikut:
CLUSTER_NAME: nama cluster.PROJECT_ID: Google Cloud Project IDLOCATION: region atau zona.
Konsol
Pastikan versi cluster adalah
1.34.1-gke.2178000atau yang lebih baru. Untuk detail tentang cara mengupgrade cluster yang ada, lihat Upgrade cluster standar dan Upgrade cluster Autopilot.Di konsol Google Cloud , buka halaman cluster Kubernetes:
Klik nama cluster.
Dalam daftar Features, cari opsi Managed OpenTelemetry. Jika tercantum sebagai dinonaktifkan, klik edit Edit, lalu pilih Enable managed OpenTelemetry.
Klik Simpan perubahan.
Terraform
Untuk mengaktifkan OpenTelemetry Terkelola untuk GKE di cluster yang ada,
tambahkan blok managed_opentelemetry_config ke resource google_container_cluster yang ada,
seperti contoh berikut:
Untuk mempelajari lebih lanjut cara menggunakan Terraform, lihat Dukungan Terraform untuk GKE.
Mengonfigurasi aplikasi Anda untuk menggunakan Managed OpenTelemetry Collector
Aplikasi harus dikonfigurasi agar dapat mengirim sinyal ke endpoint pengumpul terkelola. Setelah aplikasi dikonfigurasi, Managed OpenTelemetry Collector menerima sinyal dari aplikasi yang berjalan di cluster tempat collector diaktifkan. Sinyal dari aplikasi mencakup trace, metrik, dan log.
Untuk mengirim sinyal OpenTelemetry, aplikasi harus sudah diinstrumentasikan untuk menghasilkan metrik OpenTelemetry. Untuk mengetahui detailnya, lihat workload yang didukung.
Anda dapat mengonfigurasi aplikasi secara manual untuk mengirim sinyal ke endpoint kolektor terkelola, atau Anda dapat menggunakan konfigurasi otomatis. Sebaiknya jangan gunakan kedua metode bersama-sama untuk workload yang sama, karena konfigurasi otomatis dapat menggantikan perubahan manual. Kombinasi ini mungkin mempersulit pelacakan perubahan pada konfigurasi.
Bagian berikut menjelaskan cara mengonfigurasi aplikasi untuk mengirim sinyal ke pengumpul menggunakan konfigurasi otomatis.
Menyiapkan konfigurasi otomatis
Konfigurasi otomatis menggunakan variabel lingkungan untuk mengonfigurasi beban kerja agar mengirim sinyal ke endpoint pengumpul terkelola.
Untuk mengaktifkan penyisipan otomatis variabel lingkungan ke dalam Pod, Anda menggunakan resource kustom
Instrumentation. Variabel lingkungan memiliki konfigurasi OpenTelemetry, dan dapat disuntikkan ke beberapa Pod dengan label yang cocok dalam namespace atau semua Pod dalam namespace.
Kemudian, saat aplikasi di-deploy ke namespace, GKE menggunakan konfigurasi tersebut untuk otomatis memasukkan variabel lingkungan ke Pod tempat workload berjalan.
Untuk mengonfigurasi resource kustom
Instrumentation, lakukan hal berikut:Simpan manifes
Instrumentationberikut dalam file bernamaotlp-auto-config-namespace.yaml:apiVersion: telemetry.googleapis.com/v1alpha1 kind: Instrumentation metadata: namespace: NAMESPACE name: NAME spec: selector: matchLabels: KEY: VALUE autoInstrumentationConfig: configInjection: enabled: true otelSDKConfig: tracer_provider: sampler: parent_based: root: trace_id_ratio_based: ratio: "TRACE_RATIO" meter_provider: readers: - periodic: interval: METRICS_INTERVALGanti kode berikut:
NAMESPACE: namespace yang berisi Pod yang ingin Anda targetkan untuk instrumentasi otomatis. Gunakandefaultuntuk menargetkan namespace default.NAME: nama file manifes. Dalam contoh ini, namanya adalahotlp-auto-config-namespace.yaml.- (Opsional) Label yang dilampirkan ke Pod yang akan ditarget. Jika pemilih kosong ditentukan (
{}), semua Pod di namespace akan ditargetkan.KEY: kunci label.VALUE: nilai label.
TRACE_RATIO: rasio data rekaman aktivitas yang akan dikumpulkan. Jika tidak ditentukan, defaultnya adalah1.0. Untuk mengetahui detail selengkapnya, lihat Mengubah frekuensi pengambilan sampel rekaman aktivitas.METRICS_INTERVAL: interval, dalam milidetik, data pemantauan yang akan dikumpulkan. Defaultnya adalah30000. Nilai harus non-negatif, dengan minimum 5.000 md, maksimum 300.000 md, dan kelipatan 5.000 md. Untuk mengetahui detail selengkapnya, lihat Mengubah interval ekspor metrik.
Jika Anda ingin mengubah salah satu setelan, lihat bagian berikut untuk mengubah konfigurasi.
Terapkan konfigurasi dengan menjalankan perintah berikut:
kubectl apply -f otlp-auto-config-namespace.yaml
Untuk memasukkan variabel lingkungan secara otomatis, Anda perlu men-deploy aplikasi ke namespace di cluster yang telah menerapkan konfigurasi.
Untuk menerapkan konfigurasi ke workload yang belum berjalan di namespace, deploy workload menggunakan perintah berikut:
kubectl apply -f DEPLOYMENT_NAME -n NAMESPACEGanti kode berikut:
DEPLOYMENT_NAME: nama deployment.NAMESPACE: namespace.
Untuk menerapkan konfigurasi ke workload yang sudah berjalan di namespace, deploy ulang workload menggunakan perintah berikut:
kubectl rollout restart deployment DEPLOYMENT_NAME -n NAMESPACEGanti kode berikut:
DEPLOYMENT_NAME: nama deployment.NAMESPACE: namespace.
Setelah Anda menerapkan konfigurasi ke cluster, GKE akan otomatis mengonfigurasi semua workload saat di-deploy ke cluster. Beban kerja diinstrumentasikan dengan menyuntikkan variabel lingkungan ke Pod tempat beban kerja berjalan.
Saat workload yang dikonfigurasi dengan variabel lingkungan ini berjalan di cluster tempat pengumpul terkelola di-deploy, maka saat workload berjalan, workload tersebut akan mengirimkan sinyal OpenTelemetry ke pengumpul terkelola. Sinyal ini tersedia untuk Anda lihat di Google Cloud Observability.
Untuk mengetahui detail selengkapnya tentang cara melihat sinyal, lihat Melihat telemetri. Untuk contoh, lihat Membuat telemetri contoh.
Memodifikasi konfigurasi
Untuk mengubah konfigurasi, Anda harus melakukan hal berikut:
Ubah file manifes
Instrumentation.Terapkan konfigurasi yang telah diubah.
Deploy ulang atau mulai ulang aplikasi di namespace yang sesuai dari cluster Anda setelah menerapkan konfigurasi yang diubah.
Untuk mengetahui detail selengkapnya tentang langkah-langkah ini, ikuti petunjuk di bagian Membuat dan men-deploy konfigurasi.
Mengubah jumlah atau frekuensi pengumpulan data
Anda dapat mengubah jumlah data rekaman aktivitas yang dikumpulkan dengan mengubah frekuensi pengambilan sampel rekaman aktivitas.
Anda dapat mengubah frekuensi pengiriman data pemantauan ke Cloud Monitoring dengan mengubah interval ekspor metrik.
Anda tidak dapat mengubah jumlah atau frekuensi data logging yang dikumpulkan. Namun, Anda dapat menonaktifkan semua logging, metrik, atau data pelacakan agar tidak dikumpulkan. Untuk mengetahui detailnya, lihat Memilih jenis sinyal yang akan dikumpulkan.
Mengubah frekuensi sampling rekaman aktivitas
Workload dapat menghasilkan data trace dalam jumlah besar. Untuk situasi Anda sendiri, Anda harus menentukan keseimbangan antara biaya pengumpulan dan penyimpanan data, serta tingkat detail yang Anda butuhkan agar data tersebut bermanfaat.
Perilaku SDK OpenTelemetry default adalah always_on, yang setara dengan rasio 1.
Berikut adalah contoh konfigurasi frekuensi sampel rekaman aktivitas. Dalam contoh ini, rasio adalah 0,25 sehingga data aktivitas dikumpulkan dengan kecepatan 25 persen. Ubah angka rasio ini untuk mengubah frekuensi sampel.
tracer_provider:
sampler:
parent_based:
root:
trace_id_ratio_based:
ratio: "0.25"
Mengubah interval ekspor metrik
Interval ekspor metrik menentukan perincian data yang dapat Anda lihat di grafik di Cloud Monitoring.
Berikut adalah contoh konfigurasi interval ekspor metrik. Dalam contoh ini, interval ekspornya adalah 30.000 md.
Interval ekspor metrik digunakan untuk menentukan interval penundaan antara awal dua ekspor metrik berturut-turut dari OpenTelemetry SDK.
Nilai interval ini harus non-negatif, dengan minimum 5.000 md, maksimum 300.000 md, dan kelipatan 5.000 md. Nilai dinyatakan dalam milidetik.
meter_provider:
readers:
- periodic:
interval: 30000
Pilih jenis sinyal yang akan dikumpulkan
Anda dapat mengontrol jenis sinyal yang dikumpulkan dari workload dengan menonaktifkan jenis sinyal yang tidak ingin Anda kumpulkan. Jenis sinyal adalah rekaman aktivitas, metrik, dan log.
Anda dapat menonaktifkan jenis sinyal menggunakan variabel lingkungan di container tempat workload berjalan. Anda mengubah variabel lingkungan dengan mengubah resource kustom
Instrumentation, lalu men-deploy ulang workload ke
container.
Contoh berikut adalah file manifes Instrumentation yang dikonfigurasi untuk
pengumpulan hanya data rekaman aktivitas. Pengumpulan log dan metrik dinonaktifkan karena meter_provider dan logger_provider disetel ke null.
apiVersion: telemetry.googleapis.com/v1alpha1
kind: Instrumentation
metadata:
namespace: default
name: otlp-auto-config-disable-metrics-logs
spec:
selector:
matchLabels: # Update the labels to match your workloads
app: telemetrygen-app
autoInstrumentationConfig:
configInjection:
enabled: true
otelSDKConfig:
meter_provider: null
logger_provider: null
Mengumpulkan data perintah dan respons multimodal
Anda dapat mengonfigurasi Managed OpenTelemetry untuk GKE agar dapat mengumpulkan data multimodal prompting dan respons.
Fungsi ini tersedia untuk agen LangGraph ReAct dan agen AI generatif yang dibangun dengan framework Agent Development Kit (ADK).
Saat Anda mengumpulkan data multimodal prompting dan respons dengan Managed OpenTelemetry untuk GKE, seluruh konten multimodal prompting dan respons pengguna akhir Anda akan dikumpulkan. Data perintah dan respons ini disimpan di bucket Cloud Storage. Untuk mengetahui detail tentang cara mengelola bucket penyimpanan, termasuk mengontrol akses atau menghapus data, lihat dokumentasi Cloud Storage.
Anda dapat menggunakan produk seperti Model Armor dan Sensitive Data Protection untuk mengelola data sensitif yang mungkin ada dalam perintah dan respons.
Untuk mengonfigurasi Managed OpenTelemetry untuk GKE agar mengumpulkan data multimodal prompting dan respons, lakukan hal berikut:
Konfigurasikan project Google Cloud dan SDK yang Anda gunakan dengan mengikuti petunjuk di bagian Mengumpulkan multimodal prompting dan respons.
Buat atau identifikasi bucket Cloud Storage yang akan digunakan untuk mengumpulkan perintah dan respons multimodal. Untuk mengetahui detailnya, lihat Membuat bucket.
Beri akun layanan yang digunakan aplikasi Anda izin
storage.objects.createuntuk bucket Cloud Storage.Izin ini memungkinkan aplikasi Anda menulis objek ke bucket Cloud Storage. Objek ini menyimpan perintah dan respons yang dibuat dan diterima oleh aplikasi agentic. Untuk mengetahui informasi selengkapnya, lihat Menetapkan dan mengelola kebijakan IAM pada bucket.
Konfigurasi kolom
promptsResponses.uploadBasePathdi resource kustomInstrumentation, misalnya:apiVersion: telemetry.googleapis.com/v1alpha1 kind: Instrumentation metadata: namespace: default name: prompts-responses spec: selector: {} promptsResponses: uploadBasePath: gs://BUCKET_NAMEGanti
BUCKET_NAMEdengan nama bucket Cloud Storage.
Saat resource kustom Instrumentation diperbarui dan workload dimulai ulang, variabel lingkungan yang mengonfigurasi perintah dan respons akan dimasukkan ke dalam container workload.
Untuk mengetahui detail selengkapnya tentang jenis media yang dapat Anda kumpulkan dan cara menjelajahi multimodal prompting dan respons, lihat Mengumpulkan dan melihat multimodal prompting dan respons.
Menonaktifkan konfigurasi otomatis workload
Untuk menonaktifkan instrumentasi otomatis workload dengan konfigurasi yang ditentukan, hapus resource kustom Instrumentation dari cluster Anda. Untuk melakukannya, gunakan perintah berikut:
kubectl delete instrumentations.telemetry.googleapis.com INSTRUMENTATION_NAME -n NAMESPACE
Ganti kode berikut:
INSTRUMENTATION_NAME: nama resource kustomInstrumentation.NAMESPACE: namespace yang berisi Pod tempat Anda ingin menonaktifkan konfigurasi otomatis.
Untuk menonaktifkan injeksi variabel lingkungan otomatis untuk sementara sambil
mempertahankan konfigurasi instrumentasi otomatis untuk penggunaan di masa mendatang, tetapkan
autoInstrumentationConfig.configInjection.enabled ke false dan terapkan
resource kustom yang telah diupdate.
Berikut adalah contoh resource kustom dengan injeksi variabel lingkungan otomatis yang dinonaktifkan untuk sementara:
apiVersion: telemetry.googleapis.com/v1alpha1
kind: Instrumentation
metadata:
namespace: default
name: otlp-auto-config-example
spec:
selector:
matchLabels: # Update the labels to match your workloads
app: telemetrygen-app
autoInstrumentationConfig:
configInjection:
enabled: false # disable environment variables config injection
otelSDKConfig:
... # preserve OpenTelemetry configuration for future use
Setelah Anda menghapus resource kustom atau memperbaruinya untuk menonaktifkan injeksi konfigurasi otomatis, GKE tidak akan menginstrumentasi otomatis workload baru yang ditargetkan oleh resource kustom Instrumentation.
Untuk berhenti mengekspor sinyal OTLP ke kolektor terkelola dari workload yang sebelumnya diinstrumentasikan oleh resource kustom, Anda harus memulai ulang workload agar perubahan diterapkan. Untuk melakukannya, gunakan perintah berikut:
kubectl rollout restart deployment DEPLOYMENT_NAME -n NAMESPACE
Ganti kode berikut:
DEPLOYMENT_NAME: nama deployment.NAMESPACE: namespace.
Melihat telemetri
Saat workload yang dikonfigurasi berjalan di GKE dengan Managed OpenTelemetry untuk GKE diaktifkan, sinyal OpenTelemetry akan dikirim ke Google Cloud Observability.
Untuk mengetahui detail tentang cara melihat data di Google Cloud Observability, lihat artikel berikut:
- Menemukan dan menjelajahi trace.
- Membuat diagram dengan Metrics Explorer.
- Melihat dan menganalisis log.
Membuat telemetri contoh
Bagian ini menjelaskan cara men-deploy aplikasi contoh dan mengarahkan aplikasi tersebut ke endpoint OTLP Managed OpenTelemetry Collector. Kemudian, Anda dapat melihat telemetri di Google Cloud.
Aplikasi contoh adalah generator kecil yang mengekspor trace,
log, dan metrik ke endpoint HTTP OpenTelemetry Collector terkelola dalam cluster. Endpoint OTLP di-hardcode dalam aplikasi, yang mengarah ke
http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318.
Jika sudah memiliki aplikasi yang diinstrumentasikan dengan OpenTelemetry SDK, Anda dapat membuat telemetri dari aplikasi dengan mengarahkan aplikasi ke endpoint kolektor, atau mengonfigurasi instrumentasi otomatis untuk aplikasi.
Untuk men-deploy aplikasi contoh, lakukan hal berikut:
Hubungkan ke cluster tempat Anda telah mengaktifkan OpenTelemetry Terkelola. Untuk melakukannya, lihat Menetapkan cluster default untuk perintah
kubectl.Jalankan perintah berikut:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/main/sample/gke-app.yamlSetelah beberapa menit, telemetri yang dihasilkan oleh aplikasi mulai mengalir melalui pengumpul ke Google Cloud backend untuk setiap sinyal.
Pastikan telemetri diserap dengan melihat log, metrik, dan trace dari aplikasi demo di konsol Google Cloud :
Untuk melihat metrik, lakukan tindakan berikut:
Di konsol Google Cloud , buka halaman Metrics Explorer:
Jalankan kueri PromQL berikut di Metrics Explorer:
sum(avg_over_time({"__name__"="gen","namespace"="opentelemetry-demo","job"="telemetrygen"}[1h]))
Untuk melihat rekaman aktivitas, lakukan hal berikut:
Di konsol Google Cloud , buka halaman Trace Explorer.
Memfilter rentang rekaman aktivitas menurut nama rentang yang sama dengan
lets-go.
Untuk melihat log, lakukan hal berikut:
Di Konsol Google Cloud , buka halaman Logs Explorer.
Jalankan kueri berikut:
resource.type="k8s_pod" resource.labels.namespace_name="opentelemetry-demo"
Menonaktifkan Managed OpenTelemetry untuk GKE
Anda dapat menonaktifkan Managed OpenTelemetry untuk GKE di cluster. Saat Anda menonaktifkan kolektor, kolektor Managed OpenTelemetry akan dihapus dari cluster, dan tidak ada data telemetri baru yang dikumpulkan.
Untuk menonaktifkan OpenTelemetry Terkelola untuk GKE, gunakan langkah-langkah berikut.
gcloud
Untuk menonaktifkan Managed OpenTelemetry for GKE untuk cluster, jalankan perintah gcloud berikut:
gcloud container clusters update CLUSTER_NAME \
--project=PROJECT_ID \
--managed-otel-scope=NONE \
--location=LOCATION
Ganti kode berikut:
CLUSTER_NAME: nama cluster.PROJECT_ID: Google Cloud Project IDLOCATION: region atau zona.
Konsol
Di konsol, buka daftar cluster:
Pilih cluster yang Managed OpenTelemetry collector-nya ingin Anda nonaktifkan.
Di Cluster details, di samping Managed OpenTelemetry, pilih ikon edit.
Hapus centang pada kotak untuk menonaktifkan fitur.
Terraform
Untuk menonaktifkan Managed OpenTelemetry untuk GKE, perbarui blok
managed_opentelemetry_config di resource google_container_cluster Anda untuk menyetel cakupan ke NONE.
Perbarui file konfigurasi Terraform Anda:
resource "google_container_cluster" "default" { provider = google-beta name = "CLUSTER_NAME" location = "LOCATION" project = "PROJECT_ID" # ... other configuration ... managed_opentelemetry_config { scope = "NONE" } }Terapkan konfigurasi Terraform:
terraform apply
Ganti kode berikut:
CLUSTER_NAME: nama cluster.LOCATION: region atau zona.PROJECT_ID: Google Cloud Project ID
Saat Anda menonaktifkan Managed OpenTelemetry untuk GKE, definisi resource kustom Instrumentation dan resource kustom Instrumentation tidak akan dihapus dari cluster.
Jika Anda mengaktifkan kembali OpenTelemetry terkelola, OpenTelemetry akan menggunakan konfigurasi yang dipertahankan
dalam resource kustom Instrumentation.
Jika Anda memiliki data telemetri yang sudah dikumpulkan oleh Managed OpenTelemetry for GKE, maka menonaktifkan pengumpul tidak akan memengaruhi data ini. Data yang ada tetap disimpan di Google Cloud Observability, dan tidak ada data telemetri baru yang dikumpulkan.
Pemecahan masalah
Workload dengan hak istimewa partner Autopilot
Jika Anda mencoba menggunakan konfigurasi otomatis dengan workload dengan hak istimewa partner Autopilot, Anda mungkin melihat bahwa Pod workload tersebut ditolak.
Injeksi konfigurasi OpenTelemetry tidak didukung untuk
workload dengan hak istimewa dari partner GKE Autopilot.
Menargetkan workload tersebut menggunakan resource kustom Instrumentation untuk mengaktifkan penyisipan variabel lingkungan OpenTelemetry dapat menyebabkan workload gagal cocok dengan daftar yang diizinkan untuk workload istimewa Autopilot, yang berarti Pod yang disisipkan konfigurasi akan ditolak oleh GKE Autopilot.
Log, metrik, atau trace tidak terlihat di konsol Google Cloud
Data mungkin tidak terlihat karena berbagai alasan. Alasan tersebut mencakup izin yang tidak ada untuk melihat data, atau konfigurasi yang salah yang mencegah pengumpulan data.
Langkah-langkah yang dapat Anda lakukan untuk mengatasi masalah umum adalah sebagai berikut:
Pastikan Anda telah mengaktifkan semua API yang diperlukan di project Anda.
Pastikan resource kustom
Instrumentationdikonfigurasi dengan benar, dengan namespace yang cocok dengan namespace tempat workload berjalan, dan pemilih yang cocok dengan label workload Anda.Periksa Pod workload untuk melihat apakah variabel lingkungan disisipkan dengan benar.
Periksa log container OpenTelemetry Collector untuk melihat apakah ada error di collector. Untuk melakukannya, jalankan perintah berikut:
kubectl logs -n gke-managed-otel -l app=opentelemetry-collector -c opentelemetry-collector
Penonaktifan sinyal telemetri tidak berfungsi
Saat menonaktifkan sinyal telemetri menggunakan resource kustom Instrumentation, pastikan Anda menerapkan resource kustom dan men-deploy ulang beban kerja.
Saat menerapkan resource kustom, gunakan
Penerapan Sisi Server
dalam perintah kubectl apply saat memperbarui resource kustom Instrumentation.
Untuk mengetahui detail tentang cara menonaktifkan sinyal telemetri, lihat Pilih jenis sinyal yang akan dikumpulkan.
Variabel yang disuntikkan OpenTelemetry tidak terlihat di beban kerja saya
Variabel disuntikkan ke dalam container pod workload , bukan workload. Periksa Pod, bukan objek pemilik seperti ReplicaSet atau Deployment.
Misalnya, untuk mengonfirmasi bahwa variabel dimasukkan dengan benar untuk contoh workload di namespace default yang digunakan di bagian sebelumnya Membuat telemetri, lakukan hal berikut:
Jalankan perintah berikut:
kubectl get pods -n default -l app=telemetrygen-app -o yamlPeriksa
spec.containers[*].envPod.Pastikan ada objek
Instrumentationdi namespace yang sama dan periksa apakah objek tersebut menargetkan Pod dan mengaktifkan fitur injeksi konfigurasi. Untuk melakukannya, jalankan perintah berikut:kubectl get instrumentations.telemetry.googleapis.com -n default -o yaml
Variabel disisipkan ke dalam container hanya saat Pod dibuat
karena
Kubernetes API tidak mengizinkan modifikasi sebagian besar kolom dalam spesifikasi
Pod yang ada, seperti variabel lingkungan. Agar konfigurasi diterapkan pada
workload yang dibuat sebelum Anda membuat objek Instrumentation,
mulai ulang workload. Misalnya, untuk Deployment bernama telemetry-gen-app,
jalankan perintah berikut:
kubectl rollout restart deployment -n default telemetry-gen-app
Jumlah data trace yang berlebihan di Cloud Trace
Untuk mengurangi pengumpulan data yang dikumpulkan oleh Cloud Trace, Anda dapat mengonfigurasi sampler berbasis induk dengan rasio ID trace untuk mengambil sampel hanya persentase trace Anda.
Misalnya, tambahkan berikut ini ke objek Instrumentation:
spec:
otelSDKConfig:
tracer_provider:
sampler:
parent_based:
root:
trace_id_ratio_based:
ratio: "0.01"
Perilaku default OpenTelemetry SDK adalah pelacakan "always_on", yang setara dengan rasio 1.
Variabel lingkungan tidak cocok dengan konfigurasi
Jika Anda telah mengupdate objek Instrumentation, pastikan Anda telah
memulai ulang Pod seperti yang dijelaskan di bagian
Mengubah konfigurasi.
Jika Anda melihat konfigurasi yang salah untuk Pod, periksa apakah Pod ditargetkan dengan benar oleh objek Instrumentation, dan apakah Anda tidak memiliki beberapa objek Instrumentation yang menargetkan Pod yang sama:
kubectl get instrumentations --all-namespaces \
-o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,SELECTOR:.spec.selector
kubectl get pod -n ${NAMESPACE:?} ${POD_NAME:?} --show-labels
Perhatikan bahwa pemilih kosong menargetkan semua Pod di namespace-nya.
Jika beberapa instrumentasi menargetkan Pod yang sama saat dibuat, instrumentasi yang terakhir diperbarui akan diterapkan.
Perintah kubectl logs tidak menampilkan output
Jika log di-streaming langsung dari aplikasi ke pengumpul
OpenTelemetry, log akan melewati jalur logging standar untuk runtime container. Ini adalah skenario umum saat menggunakan OpenTelemetry untuk log. Secara default, pengekspor mengirimkan log ke endpoint otlp, bukan ke aliran stdout dan stderr.
Dalam hal ini, karena log tidak ditulis ke aliran
stdout atau stderr agar dapat diambil oleh runtime penampung, perintah
kubectl logs tidak akan menampilkan output apa pun untuk aplikasi tersebut. Sebagai gantinya,
output logging tersedia di Cloud Logging.
Jika ingin menggunakan OpenTelemetry SDK dan juga mengirim log ke aliran stdout, Anda dapat mengonfigurasinya menggunakan pengekspor log. Untuk mengetahui informasi selengkapnya, lihat Logs Exporter - output standar.
Langkah berikutnya
- Untuk mengetahui detail tentang cara kerja OpenTelemetry Terkelola untuk GKE, lihat OpenTelemetry Terkelola untuk GKE.
- Untuk alternatif yang di-deploy sendiri selain OpenTelemetry Terkelola untuk GKE, lihat Google-Built OpenTelemetry Collector.