All Products
Search
Document Center

Alibaba Cloud Service Mesh:Gunakan plug-in Wasm untuk menambahkan dimensi metrik pemantauan ASM

Last Updated:Jun 21, 2026

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

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.
  1. Ambil kode sumber plug-in.

  2. 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 untuk WasmPlugin adalah 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: AUTHN
    Citra 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

  1. Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

  2. Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih Observability Management Center > Observability Settings.

  3. Pada tab Metric Settings, aktifkan Client-side Metrics dan Server-side Metrics untuk REQUEST_COUNT. Kemudian, tambahkan dimensi kustom bernama user_name dengan nilai filter_state["wasm.user-name"] ke masing-masing metrik.

  4. Klik Submit untuk menambahkan filter_state dari plug-in Wasm sebagai dimensi metrik.

Langkah 3: Akses layanan HTTPBin

  1. 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 ]=-
    
           _...._
         .'  _ _ `.
        | ."` ^ `". _,
        \_;`"---"`|//
          |       ;/
          \_     _/
            `"""`
  2. 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_total

    Output yang diharapkan:

    # TYPE istio_requests_total counter
    istio_requests_total{reporter="destination",source_workload="istio-ingressgateway",...,user_name="asm-test-user"} 3

    Dalam kasus ini, Anda dapat menentukan informasi statistik untuk pengguna tertentu di Prometheus berdasarkan dimensi ini.