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 OpenTelemetry Terkelola untuk GKE, lihat OpenTelemetry Terkelola untuk GKE.
Anda dapat menggunakan OpenTelemetry Terkelola untuk GKE guna 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.
- Mengekspor data tersebut ke Google Cloud Observability.
Jika Anda memerlukan pemfilteran dan kontrol tingkat kolektor, gunakan Google-Built OpenTelemetry Collector, bukan 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
- Memilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project apa pun yang perannya telah diberikan kepada Anda.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat project Google Cloud :
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 API GKE, Telemetry (OTLP), Cloud Logging, Cloud Monitoring, Cloud Trace, jika 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 Service Usage Admin (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
- Memilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project apa pun yang perannya telah diberikan kepada Anda.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat project Google Cloud :
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 API GKE, Telemetry (OTLP), Cloud Logging, Cloud Monitoring, Cloud Trace, jika 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 Service Usage Admin (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. Untuk mengonfigurasi protokol ekspor OTLP sebagai gRPC di resource kustom Instrumentasi, Anda harus menggunakan GKE versi 1.37.1-gke.1697000 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 terraform-provider-google pada versi v8.8.0 atau yang lebih baru.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengaktifkan dan menggunakan OpenTelemetry terkelola GKE, minta administrator untuk memberi Anda peran IAM berikut pada project Anda:
- Kubernetes Engine Cluster Admin (
roles/container.clusterAdmin) - Monitoring Viewer (
roles/monitoring.viewer) - Logs Viewer (
roles/logging.viewer) - Cloud Trace User (
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 OpenTelemetry Terkelola 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.
- Konfigurasikan aplikasi yang Anda pantau untuk mengirim sinyal ke endpoint kolektor 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 kolektor OpenTelemetry terkelola dalam cluster untuk log, metrik, dan trace adalah sebagai berikut:- Endpoint HTTP:
http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318 - Endpoint gRPC:
http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4317
- Endpoint HTTP:
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 OpenTelemetry Terkelola 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 GKE. Lihat Persyaratan untuk mengetahui versi minimum yang dapat Anda gunakan.
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 GKE. Lihat Persyaratan untuk mengetahui versi minimum yang dapat Anda gunakan.
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 Enable managed OpenTelemetry.
- 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 memenuhi persyaratan. Untuk mengetahui detail tentang cara mengupgrade cluster yang ada, lihat Upgrade cluster standar dan Upgrade cluster Autopilot.
Aktifkan OpenTelemetry Terkelola 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 memenuhi persyaratan. Untuk mengetahui 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 kolektor OpenTelemetry Terkelola
Aplikasi harus dikonfigurasi agar dapat mengirim sinyal ke endpoint kolektor terkelola. Setelah aplikasi dikonfigurasi, kolektor OpenTelemetry Terkelola akan menerima sinyal dari aplikasi yang berjalan di cluster tempat kolektor 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 secara bersamaan untuk workload yang sama, karena konfigurasi otomatis dapat mengganti perubahan manual. Kombinasi ini mungkin akan mempersulit pelacakan perubahan pada konfigurasi.
Bagian berikut menjelaskan cara mengonfigurasi aplikasi untuk mengirim sinyal ke kolektor menggunakan konfigurasi otomatis.
Menyiapkan konfigurasi otomatis
Konfigurasi otomatis menggunakan variabel lingkungan untuk mengonfigurasi workload agar mengirim sinyal ke endpoint kolektor terkelola.
Untuk mengaktifkan injeksi otomatis variabel lingkungan ke dalam Pod, Anda menggunakan resource kustom Instrumentasi. Variabel lingkungan memiliki konfigurasi OpenTelemetry, dan dapat dimasukkan 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 Instrumentasi, lakukan hal berikut:
Simpan manifes Instrumentation berikut dalam file bernama
otlp-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 objek Instrumentasi dalam file manifes.- (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 sampling trace.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 setelan apa pun, 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 harus 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. Workload diinstrumentasikan dengan memasukkan variabel lingkungan ke Pod tempat workload berjalan.
Saat workload yang dikonfigurasi dengan variabel lingkungan ini berjalan di cluster tempat kolektor terkelola di-deploy, workload tersebut akan mengirimkan sinyal OpenTelemetry ke kolektor terkelola saat berjalan. 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 contoh telemetri.
Memodifikasi konfigurasi
Untuk mengubah konfigurasi, Anda perlu melakukan hal berikut:
Ubah file manifes Instrumentasi.
Terapkan konfigurasi yang telah diubah.
Deploy ulang atau mulai ulang aplikasi di namespace yang sesuai di cluster Anda setelah menerapkan konfigurasi yang diubah.
Untuk mengetahui detail selengkapnya tentang langkah-langkah ini, ikuti petunjuk di bagian Menyiapkan konfigurasi otomatis.
Mengonfigurasi protokol ekspor OTLP (HTTP atau gRPC)
Secara default, konfigurasi otomatis menyiapkan workload untuk mengekspor telemetri melalui HTTP. Di GKE versi 1.37.1-gke.1697000 dan yang lebih baru, Anda dapat mengonfigurasi resource kustom Instrumentasi untuk mengekspor telemetri melalui HTTP atau gRPC.
Resource kustom Instrumentasi hanya mendukung satu protokol untuk semua penyedia. Untuk menggunakan gRPC, tetapkan pengekspor ke otlp_grpc: {} untuk setiap penyedia
yang Anda gunakan, dan tetapkan penyedia yang tidak digunakan ke null. Misalnya, untuk menonaktifkan
metrik, gunakan meter_provider: null.
Contoh berikut adalah file manifes Instrumentasi yang dikonfigurasi untuk mengekspor telemetri melalui gRPC untuk penyedia trace, metrik, dan logging:
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"
processors:
- batch:
exporter:
otlp_grpc: {}
meter_provider:
readers:
- periodic:
interval: METRICS_INTERVAL
exporter:
otlp_grpc: {}
logger_provider:
processors:
- batch:
exporter:
otlp_grpc: {}
Ganti kode berikut:
NAMESPACE: namespace yang berisi Pod yang ingin Anda targetkan untuk instrumentasi otomatis. Gunakandefaultuntuk menargetkan namespace default.NAME: nama objek Instrumentasi dalam file manifes.- (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 sampling trace.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.
Mengubah jumlah atau frekuensi pengumpulan data
Anda dapat mengubah jumlah data trace yang dikumpulkan dengan mengubah frekuensi sampling trace.
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 trace
Workload dapat menghasilkan data trace dalam jumlah besar. Untuk situasi Anda sendiri, penting bagi Anda untuk menentukan keseimbangan antara biaya pengumpulan dan penyimpanan data, serta tingkat detail yang Anda perlukan agar data tersebut berguna.
Perilaku SDK OpenTelemetry default
adalah always_on, yang setara dengan rasio 1.
Berikut adalah contoh konfigurasi frekuensi sampel trace. Dalam contoh ini, rasionya adalah 0,25 sehingga data trace dikumpulkan dengan rasio 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 dalam grafik di Cloud Monitoring.
Berikut adalah contoh konfigurasi interval ekspor metrik. Dalam contoh ini, interval ekspornya adalah 30.000 mdtk.
Interval ekspor metrik digunakan untuk menentukan interval penundaan antara awal dua ekspor metrik berturut-turut dari SDK OpenTelemetry.
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
Memilih 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 trace, metrik, dan log.
Anda dapat menonaktifkan jenis sinyal menggunakan variabel lingkungan di container tempat workload berjalan. Anda dapat mengubah variabel lingkungan dengan mengubah resource kustom Instrumentasi, lalu men-deploy ulang workload ke container.
Contoh berikut adalah file manifes Instrumentasi yang dikonfigurasi untuk
pengumpulan data trace saja. Pengumpulan log dan metrik dinonaktifkan karena meter_provider dan logger_provider ditetapkan 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
Di cluster GKE versi 1.35.2-gke.1210000 atau yang lebih baru, Anda dapat mengonfigurasi OpenTelemetry Terkelola untuk GKE agar mengumpulkan data perintah dan respons multimodal.
Fungsi ini tersedia untuk agen ReAct LangGraph dan agen AI generatif yang dibangun dengan framework Agent Development Kit (ADK).
Saat Anda mengumpulkan data perintah dan respons multimodal dengan OpenTelemetry Terkelola untuk GKE, konten lengkap perintah 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 perintah dan respons multimodal, lakukan hal berikut:
Konfigurasikan project Google Cloud dan SDK yang Anda gunakan dengan mengikuti petunjuk di bagian Mengumpulkan perintah dan respons multimodal.
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.
Konfigurasikan kolom
promptsResponses.uploadBasePathdi resource kustom Instrumentasi, 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 Instrumentasi 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 perintah dan respons multimodal, lihat Mengumpulkan dan melihat perintah dan respons multimodal.
Menonaktifkan konfigurasi otomatis workload
Untuk menonaktifkan instrumentasi otomatis workload dengan konfigurasi yang ditentukan, hapus resource kustom Instrumentasi 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 kustom Instrumentasi.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 mengupdatenya untuk menonaktifkan injeksi konfigurasi otomatis, GKE tidak akan menginstrumentasikan workload baru secara otomatis 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 OpenTelemetry Terkelola untuk GKE diaktifkan, sinyal OpenTelemetry akan dikirim ke Google Cloud Observability.
Untuk mengetahui detail tentang cara melihat data di Google Cloud Observability, lihat referensi berikut:
- Menemukan dan menjelajahi trace.
- Membuat diagram dengan Metrics Explorer.
- Melihat dan menganalisis log.
Membuat contoh telemetri
Bagian ini menjelaskan cara men-deploy aplikasi contoh dan mengarahkan aplikasi tersebut ke endpoint OTLP dari kolektor OpenTelemetry Terkelola. Kemudian, Anda dapat melihat telemetri di Google Cloud.
Aplikasi contoh adalah generator kecil yang mengekspor trace, log, dan metrik ke kolektor OpenTelemetry terkelola dalam cluster.
Aplikasi di-hard code untuk menggunakan endpoint gRPC kolektor:
http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4317
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 kolektor ke backend Google Cloud 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 trace, lakukan hal berikut:
Di konsol Google Cloud , buka halaman Trace Explorer.
Memfilter span trace berdasarkan nama span 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 OpenTelemetry Terkelola untuk GKE
Anda dapat menonaktifkan OpenTelemetry Terkelola 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 tempat Anda ingin menonaktifkan OpenTelemetry Terkelola.
Di Cluster details, di samping Managed OpenTelemetry, pilih ikon edit.
Hapus centang pada kotak untuk menonaktifkan fitur.
Terraform
Untuk menonaktifkan OpenTelemetry Terkelola untuk GKE, perbarui blok managed_opentelemetry_config di resource google_container_cluster Anda untuk menetapkan cakupan ke NONE.
Perbarui file konfigurasi Terraform Anda:
resource "google_container_cluster" "default" { 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, CustomResourceDefinition Instrumentasi dan resource kustom Instrumentasi apa pun yang Anda buat tidak akan dihapus dari cluster.
Jika Anda mengaktifkan kembali OpenTelemetry terkelola, OpenTelemetry akan menggunakan konfigurasi yang dipertahankan dalam resource kustom Instrumentasi.
Jika Anda memiliki data telemetri yang telah dikumpulkan oleh OpenTelemetry Terkelola untuk GKE, menonaktifkan kolektor 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 ditolak.
Injeksi konfigurasi OpenTelemetry tidak didukung untuk workload dengan hak istimewa dari partner GKE Autopilot. Menargetkan workload tersebut menggunakan resource kustom Instrumentasi untuk mengaktifkan injeksi variabel lingkungan OpenTelemetry dapat menyebabkan workload gagal mencocokkan daftar yang diizinkan workload dengan hak istimewa Autopilot, yang berarti Pod yang diinjeksikan konfigurasi akan ditolak oleh GKE Autopilot.
Log, metrik, atau trace tidak terlihat di konsol Google Cloud
Data mungkin tidak terlihat karena berbagai alasan. Alasan ini mencakup tidak adanya izin untuk melihat data, atau konfigurasi yang salah yang mencegah data dikumpulkan.
Langkah-langkah yang dapat Anda lakukan untuk menyelesaikan masalah umum adalah sebagai berikut:
Pastikan Anda telah mengaktifkan semua API yang diperlukan di project Anda.
Pastikan resource kustom Instrumentasi dikonfigurasi 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 diinjeksikan dengan benar.
Periksa log container kolektor OpenTelemetry untuk melihat apakah ada error di kolektor. Untuk melakukannya, jalankan perintah berikut:
kubectl logs -n gke-managed-otel -l app=opentelemetry-collector -c opentelemetry-collector
Menonaktifkan sinyal telemetri tidak berfungsi
Saat Anda menonaktifkan sinyal telemetri menggunakan resource kustom Instrumentasi, pastikan Anda menerapkan resource kustom dan men-deploy ulang workload.
Saat menerapkan resource kustom, gunakan
Server-Side Apply
dalam perintah kubectl apply saat mengupdate resource kustom
Instrumentasi.
Untuk mengetahui detail tentang cara menonaktifkan sinyal telemetri, lihat Memilih jenis sinyal yang akan dikumpulkan.
Variabel yang dimasukkan OpenTelemetry tidak terlihat di workload saya
Variabel dimasukkan 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 Instrumentation di 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 dimasukkan 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 Instrumentasi,
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 hanya mengambil sampel persentase trace Anda.
Misalnya, tambahkan kode berikut ke objek Instrumentation:
spec:
otelSDKConfig:
tracer_provider:
sampler:
parent_based:
root:
trace_id_ratio_based:
ratio: "0.01"
Perilaku SDK OpenTelemetry default adalah pelacakan "always_on", yang setara dengan rasio 1.
Variabel lingkungan tidak cocok dengan konfigurasi
Jika Anda telah melakukan update pada objek Instrumentasi, pastikan Anda telah memulai ulang Pod seperti yang dijelaskan di bagian Mengubah konfigurasi.
Jika Anda melihat konfigurasi yang salah untuk Pod, pastikan Pod tersebut ditargetkan dengan benar oleh objek Instrumentation, dan 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
Saat log di-streaming langsung dari aplikasi ke
kolektor OpenTelemetry, log akan mengabaikan 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 data stdout dan stderr.
Dalam hal ini, karena log tidak ditulis ke
stream stdout atau stderr untuk diambil oleh runtime container, 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 data 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 untuk OpenTelemetry Terkelola untuk GKE, lihat Google-Built OpenTelemetry Collector.