Service Mesh (ASM) menyediakan berbagai metrik pemantauan bawaan dengan beberapa dimensi yang membantu Anda memahami kinerja aplikasi secara real-time. Dengan mekanisme ekstensi yang kuat, ASM memungkinkan Anda menentukan logika pemrosesan berdasarkan konten permintaan atau respons dan menambahkan hasilnya ke dalam dimensi metrik pemantauan. Topik ini menjelaskan cara menggunakan plug-in Wasm untuk menambahkan dimensi kustom ke metrik pemantauan yang ada di ASM.
Informasi latar belakang
ASM menyediakan berbagai metrik pemantauan seperti istio_requests_total dan istio_request_duration_milliseconds. Secara default, metrik-metrik ini dikonfigurasi dengan beberapa dimensi, seperti source_workload, destination_workload, dan response_code. Anda dapat mengonfigurasi metrik pemantauan yang dihasilkan oleh proxy mesh berdasarkan dimensi-dimensi tersebut. Untuk informasi lebih lanjut, lihat Konfigurasikan Pengaturan Observabilitas. Dengan cara ini, Anda dapat membuat berbagai dashboard dan aturan peringatan.
Prasyarat
Tambahkan kluster ke instance ASM versi 1.18 atau lebih baru.
Injeksi proxy sidecar otomatis diaktifkan. Untuk informasi lebih lanjut, lihat Konfigurasikan Kebijakan Injeksi Proxy Sidecar.
Aplikasi HTTPBin telah diterapkan dan dapat diakses. Untuk informasi lebih lanjut, lihat Terapkan Aplikasi HTTPBin.
Langkah 1: Tulis plug-in Wasm dan terapkan pada aplikasi HTTPBin
Bagian ini menjelaskan cara mengembangkan plug-in Wasm dalam Rust, mendekode user-name dalam header permintaan menggunakan Base64, dan menambahkan user-name ke metrik istio_requests_total sebagai dimensi.
API untuk bahasa lainnya serupa dengan plug-in Rust. Jika Anda menulis plug-in Wasm dalam bahasa lain, silakan merujuk pada dokumentasi SDK yang sesuai.
Dapatkan kode sumber plug-in.
Kompilasi dan terapkan plug-in Wasm. Untuk informasi lebih lanjut, lihat Tulis Plug-in Wasm dalam Rust untuk Proxy Envoy di ASM.
Plug-in ini dirancang untuk memanggil fungsi
SetPropertyguna menentukan hasil penguraian sebagai filter_state. Contoh file YAML untukWasmPluginadalah sebagai berikut.apiVersion: extensions.istio.io/v1alpha1 kind: WasmPlugin metadata: name: add-metrics-log namespace: default spec: imagePullPolicy: IfNotPresent selector: matchLabels: app: httpbin url: oci://registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/asm-wasm-rust-add-metrics-tag:v1.22.6.7-g1926b20-aliyun phase: AUTHNGambar dalam contoh ini disimpan di repositori publik. Oleh karena itu, Anda tidak perlu mengonfigurasi
wasm-secrets. Jika ACR yang Anda gunakan adalah repositori pribadi, Anda perlu melakukan penyesuaian sesuai dengan file YAML contoh di Tulis Plug-in Wasm dalam Rust untuk Proxy Envoy di ASM.
Langkah 2: Ubah pengaturan observabilitas untuk menambahkan dimensi kustom
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi sebelah kiri, pilih .
Di daftar Monitoring Metrics Configuration, aktifkan Client-side Metrics dan Server-side Metrics untuk REQUEST_COUNT, serta tambahkan dimensi kustom
user_namedengan nilaifilter_state["wasm.user-name"]masing-masing.
Klik Submit untuk menambahkan
filter_stateke dimensi kustom.
Langkah 3: Akses layanan HTTPBin
Jalankan perintah berikut untuk mengakses layanan HTTPBin.
curl ${Alamat IP gateway ASM}:80/status/418 --header "user-name:YXNtLXRlc3QtdXNlcgo="YXNtLXRlc3QtdXNlcgo=adalah hasil dari asm-test-user yang dienkripsi dalam Base64.Output yang diharapkan:
-=[ teapot ]=- _...._ .' _ _ `. | ."` ^ `". _, \_;`"---"`|// | ;/ \_ _/ `"""`Jalankan perintah berikut menggunakan file kubeconfig kluster ASM di bidang data plane untuk melihat metrik Prometheus untuk pod HTTPBin.
kubectl exec deploy/httpbin -it -c istio-proxy -- curl localhost:15000/stats/prometheus | grep istio_requests_totalOutput yang diharapkan:
# TYPE istio_requests_total counter istio_requests_total{reporter="destination",source_workload="istio-ingressgateway",...,user_name="asm-test-user"} 3Dalam kasus ini, Anda dapat menentukan informasi statistik untuk pengguna tertentu di Prometheus berdasarkan dimensi ini.