All Products
Search
Document Center

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

Last Updated:Jul 02, 2025

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

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

  2. 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 SetProperty guna menentukan 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
    Gambar 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

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

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

  3. Di daftar Monitoring Metrics Configuration, aktifkan Client-side Metrics dan Server-side Metrics untuk REQUEST_COUNT, serta tambahkan dimensi kustom user_name dengan nilai filter_state["wasm.user-name"] masing-masing.

    image

  4. Klik Submit untuk menambahkan filter_state ke dimensi kustom.

Langkah 3: Akses layanan HTTPBin

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