Cloud Trace dan Cloud Service Mesh
Cloud Trace adalah sistem pelacakan terdistribusi yang mengumpulkan data latensi dari aplikasi dan menampilkannya hampir secara real-time. Hal ini memungkinkan Anda untuk mengikuti permintaan sampel melalui sistem terdistribusi Anda, amati panggilan jaringan dan membuat profil sistem Anda secara menyeluruh.
Cloud Trace tersedia dengan penginstalan Cloud Service Mesh untuk hal berikut platform:
- GKE di Google Cloud
- GKE Enterprise clusters lokal jika Anda menginstal dengan Certificate authority Cloud Service Mesh
Perlu diperhatikan bahwa Cloud Trace dinonaktifkan secara default. Setelah diaktifkan, Cloud Service Mesh di Konsol Google Cloud menyediakan link ke trace di Halaman Cloud Trace . Untuk informasi harga selengkapnya, lihat Halaman harga Cloud Trace.
Mengaktifkan Cloud Trace
Bagian ini menunjukkan cara mengaktifkan Cloud Trace.
Terkelola
Bagian ini menunjukkan cara mengaktifkan Cloud Trace di Cloud Service Mesh 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 EOF
dengan release-channel sebagai 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 pelacak adalah bagian dari bootstrap proxy sehingga setiap pod harus dimulai ulang dan dimasukkan kembali untuk melanjutkan pembaruan pelacak. 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 dalam cluster.
Untuk mengaktifkan Cloud Trace, deploy ulang bidang kontrol yang dikelola pelanggan menggunakan file {i>overlay<i} berikut. Untuk informasi selengkapnya tentang file overlay, lihat Tentang file overlay.
Default
Jalankan perintah berikut untuk mengaktifkan Cloud Trace:
./asmcli install \
OTHER_FLAGS \
--option cloud-trace
Perintah ini menerapkan file overlay berikut untuk mengaktifkan pelacakan dengan
opsi default. Perhatikan bahwa frekuensi sampling default adalah 1%. Jika Anda ingin
mengganti default, Anda harus menggunakan --custom-overlay
.
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
enableTracing: true
values:
global:
proxy:
tracer: stackdriver
Untuk daftar opsi, lihat
Paket anthos-service-mesh
.
Kustom
Anda dapat mengganti nilai default dengan menentukan nilai tracing.sampling
. Tujuan
nilai harus dalam kisaran 0,0 hingga 100,0 dengan presisi 0,01. Sebagai
misalnya, untuk melacak 5 permintaan dari setiap 10.000,gunakan 0, 05.
Contoh berikut menunjukkan frekuensi sampling 100% (yang hanya akan 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 {i>tracer<i} adalah bagian dari konfigurasi {i>bootstrap proxy<i}, sehingga pod harus dimulai ulang dan dimasukkan ulang untuk mengambil update tracer. Gunakan perintah berikut untuk memulai ulang pod yang termasuk dalam deployment:
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
Melacak propagasi konteks
Meskipun {i>proxy<i} file bantuan dapat secara otomatis mengirim span jejak, {i>proxy<i} itu memerlukan beberapa petunjuk untuk menggabungkan seluruh trace. Aplikasi harus menyebarkan yang sesuai sehingga ketika {i>proxy<i} mengirim informasi rentang, spans dapat dikorelasikan dengan tepat menjadi satu trace.
Untuk melakukannya, aplikasi harus mengumpulkan dan menyebarkan header yang sesuai dari permintaan masuk ke setiap permintaan keluar. Stackdriver Mesh Layanan Cloud akan menerima salah satu format header berikut, dan akan terapkan semua format berikut:
- B3 (
x-b3-traceid
,x-b3-spanid
,x-b3parentspanid
,x-b3-sampled
,x-b3-flags
) - TraceContext W3C (
traceparent
) - Google Cloud Trace (
x-cloud-trace-context
) - TraceBin gRPC (
grpc-trace-bin
)
Artinya, aplikasi Anda dapat menggunakan salah satu format tersebut untuk menyebarkan konteks pelacakan dan rekaman aktivitas akan dibuat serta ditetapkan ke Stackdriver dengan tepat.
Contoh
Berikut adalah contoh permintaan HTTP-Get dengan header traceparent
dalam versi aslinya
permintaan. Perhatikan header konteks rekaman aktivitas 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 trace lengkap terdapat header konteks.
Untuk contoh lainnya yang menyebarkan header, lihat Melacak propagasi konteks.
Membuat rekaman aktivitas dari klien dengan ID kustom
Untuk membuat rekaman aktivitas dari klien dengan ID kustom, gunakan perintah curl
untuk
membuat permintaan dengan klien eksternal dan memaksanya untuk menampilkan rekaman aktivitas. Contoh:
curl $URL --header "x-client-trace-id: 105445aa7843bc8bf206b12000100000"
Untuk informasi selengkapnya tentang x-client-trace-id
, lihat
Dokumentasi Envoy.
Mengakses rekaman aktivitas
Melihat contoh trace untuk layanan
Untuk melihat pengambilan sampel trace untuk layanan di aplikasi Anda, ikuti langkah-langkah berikut:
Buka halaman Cloud Service Mesh di Konsol Google Cloud.
Di bagian Layanan, pilih nama Layanan yang ingin Anda periksa.
Screenshot berikut menunjukkan contoh Layanan
frontend
.Di bagian Request trace, klik trace mana pun untuk melihat informasi selengkapnya.
Screenshot berikut menunjukkan contoh subpanel permintaan rekaman aktivitas.
Lihat semua rekaman aktivitas
Guna melihat semua trace untuk Layanan, ikuti langkah-langkah berikut:
Buka halaman Cloud Service Mesh di Konsol Google Cloud.
Di bagian Layanan, pilih nama Layanan yang ingin Anda periksa.
Buka halaman Metrics.
Tentukan rentang waktu dari menu dropdown Time Span atau menetapkan rentang kustom dengan linimasa.
Klik Lihat trace.
Trace untuk layanan di Cloud Service Mesh berisi informasi berikut:
- Meminta latensi di berbagai layanan di 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
, secara berurutan.