Cloud Trace dan Cloud Service Mesh
Catatan: Panduan ini hanya mendukung Cloud Service Mesh dengan Istio API dan tidak mendukung API. Google Cloud Untuk mengetahui informasi selengkapnya, lihat Ringkasan Cloud Service Mesh.Cloud Trace adalah sistem pelacakan terdistribusi yang mengumpulkan data latensi dari aplikasi dan menampilkannya dalam waktu hampir real-time. Dengan Cloud Trace, Anda dapat mengikuti contoh permintaan melalui sistem terdistribusi, mengamati panggilan jaringan, dan membuat profil sistem secara menyeluruh.
Cloud Trace tersedia dengan penginstalan Cloud Service Mesh di platform berikut:
- GKE di Google Cloud
- Cluster GKE Enterprise di infrastruktur lokal jika Anda menginstal dengan otoritas sertifikat Cloud Service Mesh
Perhatikan bahwa Cloud Trace dinonaktifkan secara default. Setelah diaktifkan, halaman Cloud Service Mesh di Google Cloud konsol akan menyediakan link ke pelacakan di halaman Cloud Trace . Untuk mengetahui informasi harga mendetail, lihat halaman harga Cloud Trace.
Mengaktifkan Cloud Trace
Bagian ini menunjukkan cara mengaktifkan Cloud Trace.
Terkelola (TD)
Bagian ini menunjukkan cara mengaktifkan Cloud Trace di Cloud Service Mesh dengan bidang kontrol Traffic Director terkelola.
Jalankan perintah berikut untuk mengaktifkan Cloud Trace:
cat <<EOF | kubectl apply -n istio-system -f - apiVersion: telemetry.istio.io/v1alpha1 kind: Telemetry metadata: name: enable-cloud-trace namespace: istio-system spec: tracing: - providers: - name: stackdriver EOF
Terkelola (Istiod)
Bagian ini menunjukkan cara mengaktifkan Cloud Trace di Cloud Service Mesh dengan bidang kontrol Istiod terkelola.
Jalankan perintah berikut:
cat <<EOF | kubectl apply -f - apiVersion: v1 data: mesh: |- defaultConfig: tracing: stackdriver: {} kind: ConfigMap metadata: name: istio-release-channel namespace: istio-system EOFdengan release-channel adalah saluran rilis Anda (
asm-managed,asm-managed-stable, atauasm-managed-rapid).Jalankan perintah berikut untuk melihat configmap:
kubectl get configmap istio-release-channel -n istio-system -o yaml
Untuk memverifikasi bahwa Cloud Trace diaktifkan, pastikan baris berikut muncul di bagian
mesh:.... apiVersion: v1 data: mesh: | .... defaultConfig: tracing: stackdriver:{} ...Mulai ulang proxy.
Perhatikan bahwa konfigurasi tracer adalah bagian dari konfigurasi bootstrap proxy, sehingga setiap pod perlu dimulai ulang dan disisipkan kembali untuk mengambil update tracer. Misalnya, Anda dapat menggunakan perintah berikut untuk memulai ulang pod yang termasuk dalam deployment:
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
Dalam cluster
Bagian ini menunjukkan cara mengaktifkan Cloud Trace di Cloud Service Mesh dengan bidang kontrol dalam cluster.
Untuk mengaktifkan Cloud Trace, deploy ulang bidang kontrol yang dikelola pelanggan menggunakan file overlay berikut. Untuk mengetahui informasi selengkapnya tentang file overlay, lihat Tentang file overlay.
Default
Jalankan perintah berikut untuk mengaktifkan Cloud Trace:
./asmcli install \
OTHER_FLAGS \
--option cloud-tracing
Perintah ini menerapkan file overlay berikut untuk mengaktifkan pelacakan dengan opsi default. Perhatikan bahwa frekuensi sampling default adalah 1%. Jika ingin mengganti nilai default, Anda harus menggunakan --custom-overlay.
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
enableTracing: true
values:
global:
proxy:
tracer: stackdriver
Untuk mengetahui daftar opsi, lihat paket
anthos-service-mesh.
Kustom
Anda dapat mengganti nilai default dengan menentukan nilai tracing.sampling. Nilai
harus berada dalam rentang 0,0 hingga 100,0 dengan presisi 0,01. Misalnya, untuk melacak 5 permintaan dari setiap 10.000 permintaan,gunakan 0, 05.
Contoh berikut menunjukkan frekuensi sampling 100% (yang hanya akan Anda lakukan untuk tujuan demo atau pemecahan masalah).
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
enableTracing: true
defaultConfig:
tracing:
sampling: 100
values:
global:
proxy:
tracer: stackdriver
Jalankan perintah berikut untuk mengaktifkan Cloud Trace:
./asmcli install \
OTHER_FLAGS \
--custom_overlay PATH_TO_FILE
Perhatikan bahwa konfigurasi tracer adalah bagian dari konfigurasi bootstrap proxy, sehingga pod perlu dimulai ulang dan disisipkan kembali untuk mengambil update tracer. Gunakan perintah berikut untuk memulai ulang pod yang termasuk dalam deployment:
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
Penerapan konteks pelacakan
Meskipun proxy sidecar dapat mengirim rentang pelacakan secara otomatis, proxy tersebut memerlukan beberapa petunjuk untuk mengikat seluruh pelacakan. Aplikasi perlu menyebarkan header HTTP yang sesuai sehingga saat proxy mengirim informasi rentang, rentang dapat dikorelasikan dengan benar ke dalam satu pelacakan.
Untuk melakukannya, aplikasi perlu mengumpulkan dan menyebarkan header yang sesuai dari permintaan masuk ke permintaan keluar. Konfigurasi pelacakan Cloud Service Mesh Stackdriver akan menerima salah satu format header berikut, dan akan menyebarkan semua format berikut:
- B3 (
x-b3-traceid,x-b3-spanid,x-b3parentspanid,x-b3-sampled,x-b3-flags) - TraceContext W3C (
traceparent) - Cloud Trace Google (
x-cloud-trace-context) - TraceBin gRPC (
grpc-trace-bin)
Artinya, aplikasi Anda dapat menggunakan salah satu format tersebut untuk menyebarkan konteks pelacakan dan pelacakan akan dibuat serta ditetapkan ke Stackdriver dengan tepat.
Contoh
Berikut adalah contoh permintaan HTTP-Get dengan header traceparent dalam permintaan asli. Perhatikan header konteks pelacakan tambahan yang ditambahkan oleh proxy.
$ kubectl exec -it sleep-557747455f-n6flv -- curl "httpbin:8000/anything?freeform=" -H "accept: application/json" -H "Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01" -vv
* Trying 10.12.3.52:8000...
* Connected to httpbin (10.12.3.52) port 8000 (#0)
> GET /anything?freeform= HTTP/1.1
> Host: httpbin:8000
> User-Agent: curl/7.80.0-DEV
> accept: application/json
> Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< server: envoy
< date: Wed, 10 Nov 2021 20:36:04 GMT
< content-type: application/json
< content-length: 1032
< access-control-allow-origin: *
< access-control-allow-credentials: true
< x-envoy-upstream-service-time: 5
<
{
"args": {
"freeform": ""
},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept": "application/json",
"Grpc-Trace-Bin": "AAB1Q9FeCeXWGAHU90zeEmm4AaDHmGRtdM7wAgE",
"Host": "httpbin:8000",
"Traceparent": "00-7543d15e09e5d61801d4f74cde1269b8-a0c798646d74cef0-01",
"User-Agent": "curl/7.80.0-DEV",
"X-B3-Sampled": "1",
"X-B3-Spanid": "a0c798646d74cef0",
"X-B3-Traceid": "7543d15e09e5d61801d4f74cde1269b8",
"X-Cloud-Trace-Context": "7543d15e09e5d61801d4f74cde1269b8/11585396123534413552;o=1",
"X-Envoy-Attempt-Count": "1",
"X-Forwarded-Client-Cert": "<REDACTED>"
},
"json": null,
"method": "GET",
"origin": "127.0.0.6",
"url": "http://httpbin:8000/anything?freeform="
}
Perhatikan bahwa dalam kumpulan header permintaan yang ditampilkan, kumpulan lengkap header konteks pelacakan ada.
Untuk mengetahui contoh lainnya tentang penyebaran header, lihat Penerapan konteks pelacakan.
Membuat pelacakan dari klien dengan ID kustom
Untuk membuat pelacakan dari klien dengan ID kustom, gunakan perintah curl untuk membuat permintaan dengan klien eksternal dan memaksanya menampilkan pelacakan. Contoh:
curl $URL --header "x-client-trace-id: 105445aa7843bc8bf206b12000100000"
Untuk mengetahui informasi selengkapnya tentang x-client-trace-id, lihat
dokumentasi Envoy.
Mengakses pelacakan
Melihat contoh pelacakan untuk layanan
Untuk melihat contoh pelacakan untuk layanan di aplikasi Anda, ikuti langkah-langkah berikut:
Buka halaman Cloud Service Mesh di Google Cloud konsol.
Di bagian Services, pilih nama Layanan yang ingin Anda periksa.
Screenshot berikut menunjukkan contoh Layanan
frontend.
Di bagian Request traces, klik pelacakan mana pun untuk melihat informasi selengkapnya.
Screenshot berikut menunjukkan contoh subpanel permintaan pelacakan.

Melihat semua pelacakan
Untuk melihat semua pelacakan untuk Layanan, ikuti langkah-langkah berikut:
Buka halaman Cloud Service Mesh di Google Cloud konsol.
Di bagian Services, pilih nama Layanan yang ingin Anda periksa.
Buka halaman Metrics.
Tentukan rentang waktu dari menu dropdown Time Span atau tetapkan rentang kustom dengan linimasa.
Klik View traces.
Pelacakan untuk layanan di Cloud Service Mesh berisi informasi berikut:
- Latensi permintaan di berbagai layanan dalam mesh.
- Properti permintaan HTTP, termasuk ID, URL, ukuran, latensi, dan protokol.
- Nama layanan, namespace, dan ID mesh sebagai bagian dari label
istio.canonical_service,istio.namespace, danistio.mesh_id.