Dokumen ini menjelaskan cara menyiapkan Managed OpenTelemetry 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:
- Konfigurasi workload yang berjalan di GKE untuk mengirim trace, metrik, dan log OpenTelemetry Protocol (OTLP) ke pengumpul 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 Pengumpul OpenTelemetry Buatan Google 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 Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project
(
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.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan GKE, Telemetry (OTLP), Cloud Logging, Cloud Monitoring, Cloud Trace API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. 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 Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project
(
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.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan GKE, Telemetry (OTLP), Cloud Logging, Cloud Monitoring, Cloud Trace API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. 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 551.0.0 atau yang lebih baru.
- Jika Anda menggunakan Terraform untuk menyediakan infrastruktur GKE, Anda harus menggunakan penyedia
terraform-provider-google-betapada versiv7.17.0atau yang lebih baru.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan guna mengaktifkan dan menggunakan OpenTelemetry terkelola GKE, minta administrator Anda 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) - 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 biaya yang terkait dengan penggunaan Managed OpenTelemetry untuk GKE.
Mengaktifkan Managed OpenTelemetry untuk GKE di cluster
Untuk menyiapkan Managed OpenTelemetry untuk GKE, Anda perlu melakukan hal berikut:
- Aktifkan Managed OpenTelemetry 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 pengumpul OpenTelemetry Terkelola GKE yang
di-deploy dalam namespace
gke-managed-otel. Endpoint HTTP pengumpul 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 beta 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 beta 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 berupa1.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 Setelan Lanjutan.
Di bagian Operations, pilih Enable managed OpenTelemetry.
Klik Simpan.
Untuk cluster Standard, lakukan hal berikut:
- Di konsol Google Cloud , buka halaman Create a Kubernetes cluster.
- Di panel navigasi, klik Fitur.
Di bagian Operations, pilih Enable managed OpenTelemetry.
Klik Simpan.
Terraform
Untuk mengaktifkan Managed OpenTelemetry 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 Managed OpenTelemetry untuk GKE di cluster yang ada, ikuti langkah-langkah berikut:
gcloud
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.Aktifkan Managed OpenTelemetry untuk GKE menggunakan perintah berikut:
gcloud beta 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 Fitur, cari opsi Managed OpenTelemetry. Jika tercantum sebagai dinonaktifkan, klik edit Edit, lalu pilih Aktifkan OpenTelemetry terkelola.
Klik Simpan perubahan.
Terraform
Untuk mengaktifkan Managed OpenTelemetry untuk GKE di cluster yang ada, tambahkan blok managed_opentelemetry_config ke resource google_container_cluster yang ada, mirip dengan 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, pengumpul Managed OpenTelemetry akan menerima sinyal dari aplikasi yang berjalan di cluster tempat pengumpul 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 pengumpul 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 dapat 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 untuk menyuntikkan variabel lingkungan secara otomatis ke Pod tempat beban kerja 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 untuk ditargetkan. Jika pemilih
kosong ditentukan (
{}), semua Pod di namespace akan menjadi target.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 menyuntikkan 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 beban kerja yang sudah berjalan di namespace, deploy ulang beban kerja 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 di cluster Anda setelah menerapkan konfigurasi yang diubah.
Untuk mengetahui detail selengkapnya tentang langkah-langkah ini, ikuti petunjuk di bagian Buat dan 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 pengumpulan semua data logging, metrik, atau pelacakan. Untuk mengetahui detailnya, lihat Memilih jenis sinyal yang akan dikumpulkan.
Mengubah frekuensi sampling rekaman aktivitas
Workload dapat menghasilkan data rekaman aktivitas 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 pengambilan sampel rekaman aktivitas. Dalam contoh ini, rasio adalah 0,25 sehingga data rekaman 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 dimulainya 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
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 beban kerja berjalan. Anda mengubah variabel lingkungan dengan mengubah resource kustom
Instrumentation, lalu men-deploy ulang beban kerja 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 guna 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).
Untuk mengonfigurasi Managed OpenTelemetry for GKE agar mengumpulkan data perintah dan respons multimodal, lakukan hal berikut:
Konfigurasi 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.
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 beban kerja dimulai ulang, variabel lingkungan yang mengonfigurasi perintah dan respons akan dimasukkan ke dalam container beban kerja.
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 beban kerja 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 penyisipan 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 workload baru secara otomatis yang ditargetkan oleh resource kustom Instrumentation.
Untuk berhenti mengekspor sinyal OTLP ke pengumpul terkelola dari beban kerja yang sebelumnya diinstrumentasi oleh resource kustom, Anda harus memulai ulang beban kerja 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 for 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 rekaman aktivitas.
- 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 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-hard code dalam aplikasi, yang mengarah ke
http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318.
Jika sudah memiliki aplikasi yang diinstrumentasi dengan SDK OpenTelemetry, Anda dapat membuat telemetri dari aplikasi dengan mengarahkan aplikasi ke endpoint pengumpul, atau mengonfigurasi instrumentasi otomatis untuk aplikasi.
Untuk men-deploy aplikasi contoh, lakukan hal berikut:
Buat koneksi ke cluster tempat Anda mengaktifkan Managed OpenTelemetry. 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 backend untuk setiap sinyal. Google Cloud
Verifikasi bahwa telemetri diserap dengan melihat log, metrik, dan rekaman aktivitas 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. Jika Anda menonaktifkan pengumpul, pengumpul Managed OpenTelemetry akan dihapus dari cluster, dan tidak ada data telemetri baru yang dikumpulkan.
Untuk menonaktifkan Managed OpenTelemetry untuk GKE, ikuti langkah-langkah berikut.
gcloud
Untuk menonaktifkan Managed OpenTelemetry untuk GKE bagi cluster, jalankan perintah gcloud berikut:
gcloud beta 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 ingin Anda nonaktifkan pengumpul Managed OpenTelemetry.
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 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 untuk GKE, maka menonaktifkan pengumpul tidak akan memengaruhi data ini. Data yang ada masih disimpan di Google Cloud Observability, dan tidak ada data telemetri baru yang dikumpulkan.
Pemecahan masalah
Workload istimewa partner Autopilot
Jika Anda mencoba menggunakan konfigurasi otomatis dengan workload istimewa partner Autopilot, Anda mungkin melihat bahwa Pod workload ditolak.
Penyisipan konfigurasi OpenTelemetry tidak didukung untuk
workload 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 rekaman aktivitas 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 beban kerja 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
Menonaktifkan sinyal telemetri tidak berfungsi
Saat Anda 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 Memilih 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 disuntikkan dengan benar untuk beban kerja contoh di namespace default yang digunakan di bagian Membuat telemetri sebelumnya, 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 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 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 melakukan update pada objek Instrumentation, periksa apakah Anda telah memulai ulang Pod seperti yang dijelaskan di bagian Ubah 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 berlaku.
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
stream, Anda dapat mengonfigurasi hal ini dengan menggunakan pengekspor log. Untuk mengetahui informasi selengkapnya, lihat Logs Exporter - Standard output.
Langkah berikutnya
- Untuk mengetahui detail tentang cara kerja Managed OpenTelemetry untuk GKE, lihat Managed OpenTelemetry untuk GKE.
- Untuk alternatif yang di-deploy sendiri dari Managed OpenTelemetry untuk GKE, lihat Google-Built OpenTelemetry Collector.