Service Mesh (ASM) dilengkapi berbagai metrik pemantauan bawaan dan beberapa dimensi untuk membantu Anda memahami kondisi aplikasi secara real-time. Dengan mekanisme ekstensi yang kuat, ASM memungkinkan Anda menentukan logika pemrosesan berdasarkan konten permintaan atau respons, lalu menambahkan hasil pemrosesan tersebut sebagai dimensi pada metrik pemantauan. Topik ini menjelaskan cara menggunakan plug-in Wasm untuk menambahkan dimensi kustom ke metrik pemantauan yang tersedia di ASM.
Informasi latar belakang
ASM menyediakan berbagai metrik pemantauan, termasuk istio_requests_total dan istio_request_duration_milliseconds. Secara default, 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 selengkapnya, lihat Konfigurasi pengaturan observabilitas. Dengan demikian, Anda dapat membuat berbagai dasbor dan aturan peringatan.
Prasyarat
Tambahkan kluster ke instans ASM versi 1.18 atau lebih baru.
Injeksi proxy sidecar otomatis telah diaktifkan. Untuk informasi selengkapnya, lihat Konfigurasi kebijakan injeksi sidecar.
Aplikasi HTTPBin telah dideploy dan dapat diakses. Untuk informasi selengkapnya, lihat Deploy aplikasi HTTPBin.
Langkah 1: Tulis plug-in Wasm dan terapkan ke aplikasi HTTPBin
Bagian ini menjelaskan cara mengembangkan plug-in Wasm dalam Rust, mendekode user-name dari header permintaan menggunakan Base64, lalu menambahkan user-name tersebut sebagai dimensi pada metrik istio_requests_total.
API untuk bahasa lain serupa dengan plug-in Rust. Jika Anda menulis plug-in Wasm dalam bahasa lain, silakan merujuk ke dokumentasi SDK yang sesuai.
Ambil kode sumber plug-in.
Kompilasi dan deploy plug-in Wasm. Untuk informasi selengkapnya, lihat Tulis plug-in Wasm dalam Rust untuk proxy Envoy di ASM.
Plug-in ini dirancang untuk memanggil fungsi SetProperty guna menetapkan 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: AUTHNCitra 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 contoh file YAML 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 .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih .
-
Pada tab Metric Settings, aktifkan Client-side Metrics dan Server-side Metrics untuk REQUEST_COUNT. Kemudian, tambahkan dimensi kustom bernama
user_namedengan nilaifilter_state["wasm.user-name"]ke masing-masing metrik. -
Klik Submit untuk menambahkan
filter_statedari plug-in Wasm sebagai dimensi metrik.
Langkah 3: Akses layanan HTTPBin
Jalankan perintah berikut untuk mengakses layanan HTTPBin.
curl ${alamat IP gerbang ASM}:80/status/418 --header "user-name:YXNtLXRlc3QtdXNlcgo="asm-test-user.Output yang diharapkan:
-=[ teapot ]=- _...._ .' _ _ `. | ."` ^ `". _, \_;`"---"`|// | ;/ \_ _/ `"""`Jalankan perintah berikut menggunakan file kubeconfig kluster ASM pada bidang data 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.