All Products
Search
Document Center

Alibaba Cloud Service Mesh:Amati traffic LLM di Service Mesh (ASM)

Last Updated:Mar 11, 2026

Ketika beberapa workload memanggil penyedia LLM, pelacakan konsumsi token dan penggunaan model per permintaan menjadi sulit tanpa telemetri tingkat infrastruktur. Service Mesh (ASM) menangkap metadata spesifik LLM—nama model, token input, dan token output—langsung di proxy sidecar, sehingga Anda dapat memantau biaya, mendebug permintaan, dan menganalisis performa model tanpa mengubah kode aplikasi.

ASM menyediakan tiga tingkat observabilitas LLM, yang masing-masing membangun dari tingkat sebelumnya:

CapabilityApa yang dilacakKasus penggunaan
Access logsNama model, jumlah token input, dan token output per permintaanDebug permintaan individual, audit biaya per permintaan
Token consumption metricsJumlah token teragregasi per workload dan modelPantau penggunaan token secara real-time, tetapkan ambang batas peringatan
Custom metric dimensionsModel LLM sebagai dimensi pada metrik Istio native (istio_requests_total)Analisis laju keberhasilan dan latensi berdasarkan model

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Catatan

Contoh di bawah ini membangun dari semua langkah dalam panduan pengarahan traffic. Jika Anda hanya menyelesaikan Langkah 1 dan Langkah 2, gunakan perintah uji dari Langkah 2 untuk menghasilkan traffic guna verifikasi.

Tambahkan field LLM ke access log

Sebagian besar penyedia LLM mengenakan biaya berdasarkan penggunaan token. Dengan menambahkan field spesifik LLM ke access log sidecar, Anda mendapatkan visibilitas per permintaan mengenai model mana yang menangani tiap permintaan dan berapa banyak token yang dikonsumsi—memungkinkan pelacakan biaya langsung dari log infrastruktur.

Untuk latar belakang tentang kustomisasi access log, lihat Custom data plane access logs.

Konfigurasikan field log

  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 bagian Log Settings, tambahkan tiga field berikut:

    Nama fieldEkspresi FILTER_STATEDeskripsi
    request_modelFILTER_STATE(wasm.asm.llmproxy.request_model:PLAIN)Model yang digunakan untuk permintaan (misalnya, qwen-turbo atau qwen1.5-72b-chat)
    request_prompt_tokensFILTER_STATE(wasm.asm.llmproxy.request_prompt_tokens:PLAIN)Jumlah token input
    request_completion_tokensFILTER_STATE(wasm.asm.llmproxy.request_completion_tokens:PLAIN)Jumlah token output

    image

Verifikasi access log

  1. Kirim dua permintaan uji menggunakan file kubeconfig kluster ACK. Jalankan masing-masing perintah secara terpisah:

       kubectl exec deployment/sleep -it -- curl --location 'http://dashscope.aliyuncs.com' \
       --header 'Content-Type: application/json' \
       --data '{
           "messages": [
               {"role": "user", "content": "Please introduce yourself."}
           ]
       }'
       kubectl exec deployment/sleep -it -- curl --location 'http://dashscope.aliyuncs.com' \
       --header 'Content-Type: application/json' \
       --header 'user-type: subscriber' \
       --data '{
           "messages": [
               {"role": "user", "content": "Please introduce yourself."}
           ]
       }'
  2. Lihat access log: Output yang diharapkan:

       kubectl logs deployments/sleep -c istio-proxy | tail -2
       {"bytes_received":"85","bytes_sent":"617","downstream_local_address":"47.93.xxx.xx:80","downstream_remote_address":"192.168.34.235:39066","duration":"7640","istio_policy_status":"-","method":"POST","path":"/compatible-mode/v1/chat/completions","protocol":"HTTP/1.1","request_id":"d0e17f66-f300-411a-8c32-xxxxxxxxxxxxx","requested_server_name":"-","response_code":"200","response_flags":"-","route_name":"-","start_time":"2024-07-12T03:20:03.993Z","trace_id":"-","upstream_cluster":"outbound|80||dashscope.aliyuncs.com","upstream_host":"47.93.xxx.xx:443","upstream_local_address":"192.168.34.235:38476","upstream_service_time":"7639","upstream_response_time":"7639","upstream_transport_failure_reason":"-","user_agent":"curl/8.8.0","x_forwarded_for":"-","authority_for":"dashscope.aliyuncs.com","request_model":"qwen1.5-72b-chat","request_prompt_tokens":"3","request_completion_tokens":"55"}
       {"bytes_received":"85","bytes_sent":"809","downstream_local_address":"47.93.xxx.xx:80","downstream_remote_address":"192.168.34.235:41090","duration":"2759","istio_policy_status":"-","method":"POST","path":"/compatible-mode/v1/chat/completions","protocol":"HTTP/1.1","request_id":"d89faada-6af3-4ac3-b4fd-xxxxxxxxxxxxx","requested_server_name":"-","response_code":"200","response_flags":"-","route_name":"vip-route","start_time":"2024-07-12T03:20:30.854Z","trace_id":"-","upstream_cluster":"outbound|80||dashscope.aliyuncs.com","upstream_host":"47.93.xxx.xx:443","upstream_local_address":"192.168.34.235:38476","upstream_service_time":"2759","upstream_response_time":"2759","upstream_transport_failure_reason":"-","user_agent":"curl/8.8.0","x_forwarded_for":"-","authority_for":"dashscope.aliyuncs.com","request_model":"qwen-turbo","request_prompt_tokens":"11","request_completion_tokens":"90"}
  3. Kutipan terformat berikut menyoroti field spesifik LLM dari output log: Setiap entri log menampilkan penyedia LLM (authority_for), model yang menangani permintaan, dan jumlah token yang dikonsumsi.

       {
           "duration": "7640",
           "response_code": "200",
           "authority_for": "dashscope.aliyuncs.com",
           "request_model": "qwen1.5-72b-chat",
           "request_prompt_tokens": "3",
           "request_completion_tokens": "55"
       }
       {
           "duration": "2759",
           "response_code": "200",
           "authority_for": "dashscope.aliyuncs.com",
           "request_model": "qwen-turbo",
           "request_prompt_tokens": "11",
           "request_completion_tokens": "90"
       }

Teruskan log ke Simple Log Service (SLS)

ASM terintegrasi dengan Simple Log Service (SLS) untuk pengumpulan log terpusat. Setelah Anda mengaktifkan pengumpulan log, Anda dapat:

  • Mencari dan memfilter log berdasarkan nama model, jumlah token, atau kode respons

  • Membuat aturan peringatan—misalnya, beri peringatan ketika satu permintaan melebihi ambang batas token tertentu

  • Membuat dasbor untuk analitik penggunaan LLM

Untuk instruksi penyiapan, lihat Enable data plane log collection.

Ekspor konsumsi token sebagai metrik Prometheus

Access log menangkap detail per permintaan. Untuk pemantauan agregat secara real-time, konfigurasikan proxy sidecar untuk mengekspor konsumsi token sebagai metrik Prometheus.

ASM menyediakan dua metrik spesifik LLM:

MetrikDeskripsi
asm_llm_proxy_prompt_tokensJumlah token input
asm_llm_proxy_completion_tokensJumlah token output

Metrik ini mencakup empat dimensi default:

DimensiDeskripsi
llmproxy_source_workloadWorkload yang memulai permintaan
llmproxy_source_workload_namespaceNamespace dari workload sumber
llmproxy_destination_serviceLayanan LLM tujuan
llmproxy_modelModel yang digunakan untuk permintaan

Konfigurasikan sidecar untuk mengeluarkan metrik

Contoh ini menggunakan Penyebaran sleep di namespace default.

  1. Buat file bernama asm-llm-proxy-bootstrap-config.yaml dengan konten berikut:

       apiVersion: v1
       kind: ConfigMap
       metadata:
         name: asm-llm-proxy-bootstrap-config
       data:
         custom_bootstrap.json: |
           "stats_config": {
             "stats_tags":[
               {
               "tag_name": "llmproxy_source_workload",
               "regex": "(\\|llmproxy_source_workload=([^|]*))"
               },
               {
                 "tag_name": "llmproxy_source_workload_namespace",
                 "regex": "(\\|llmproxy_source_workload_namespace=([^|]*))"
               },
               {
                 "tag_name": "llmproxy_destination_service",
                 "regex": "(\\|llmproxy_destination_service=([^|]*))"
               },
               {
                 "tag_name": "llmproxy_model",
                 "regex": "(\\|llmproxy_model=([^|]*))"
               }
             ]
           }
  2. Terapkan ConfigMap:

       kubectl apply -f asm-llm-proxy-bootstrap-config.yaml
  3. Tambahkan anotasi bootstrap override ke Penyebaran. Ini memberi tahu sidecar untuk memuat konfigurasi statistik kustom:

       kubectl patch deployment sleep -p '{"spec":{"template":{"metadata":{"annotations":{"sidecar.istio.io/bootstrapOverride":"asm-llm-proxy-bootstrap-config"}}}}}'

Verifikasi metrik token

  1. Kirim permintaan uji menggunakan perintah dari bagian sebelumnya.

  2. Kueri endpoint Prometheus sidecar: Output yang diharapkan: Setiap baris metrik menunjukkan jumlah token yang dipecah berdasarkan workload sumber, layanan tujuan, dan model.

       kubectl exec deployments/sleep -it -c istio-proxy -- curl localhost:15090/stats/prometheus | grep llmproxy
       asm_llm_proxy_completion_tokens{llmproxy_source_workload="sleep",llmproxy_source_workload_namespace="default",llmproxy_destination_service="dashscope.aliyuncs.com",llmproxy_model="qwen1.5-72b-chat"} 72
       asm_llm_proxy_completion_tokens{llmproxy_source_workload="sleep",llmproxy_source_workload_namespace="default",llmproxy_destination_service="dashscope.aliyuncs.com",llmproxy_model="qwen-turbo"} 85
       asm_llm_proxy_prompt_tokens{llmproxy_source_workload="sleep",llmproxy_source_workload_namespace="default",llmproxy_destination_service="dashscope.aliyuncs.com",llmproxy_model="qwen1.5-72b-chat"} 3
       asm_llm_proxy_prompt_tokens{llmproxy_source_workload="sleep",llmproxy_source_workload_namespace="default",llmproxy_destination_service="dashscope.aliyuncs.com",llmproxy_model="qwen-turbo"} 11

Teruskan metrik ke Managed Service for Prometheus

ASM terintegrasi dengan Application Real-Time Monitoring Service (ARMS) untuk pengumpulan metrik berbasis Prometheus. Setelah Anda mengonfigurasi aturan pengumpulan, Anda dapat membuat dasbor Grafana dan menyiapkan aturan peringatan berdasarkan metrik LLM ini.

Untuk instruksi penyiapan, lihat Collect metrics to Managed Service for Prometheus.

Tambahkan dimensi LLM ke metrik Istio native

ASM secara native menyediakan metrik standar Istio seperti istio_requests_total, yang melacak traffic HTTP dan TCP dengan dimensi seperti workload sumber, layanan tujuan, dan kode respons. ASM telah mengembangkan dasbor Prometheus yang memanfaatkan metrik dan dimensi ini. Secara default, metrik ini tidak mencakup informasi spesifik LLM.

Untuk mengaktifkan analisis per-model pada metrik native, tambahkan dimensi kustom model yang mengekstraksi nama model dari permintaan LLM.

Konfigurasikan dimensi model

Contoh ini menambahkan dimensi model ke metrik REQUEST_COUNT.

  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. Pilih REQUEST_COUNT dan klik Edit Dimension. Pada tab Custom Dimension, masukkan nilai berikut:

    • Dimension Name: model

    • Value: filter_state["wasm.asm.llmproxy.request_model"]

    image

    image

Verifikasi dimensi kustom

  1. Kirim permintaan uji menggunakan perintah dari bagian access log.

  2. Kueri endpoint Prometheus sidecar: Output yang diharapkan: Dimensi model kini muncul di istio_requests_total, memungkinkan kueri per-model pada metrik Istio native.

       kubectl exec deployments/sleep -it -c istio-proxy -- curl localhost:15090/stats/prometheus | grep llmproxy
       istio_requests_total{reporter="source",source_workload="sleep",source_canonical_service="sleep",source_canonical_revision="latest",source_workload_namespace="default",source_principal="unknown",source_app="sleep",source_version="",source_cluster="cce8d2c1d1e8d4abc8d5c180d160669cc",destination_workload="unknown",destination_workload_namespace="unknown",destination_principal="unknown",destination_app="unknown",destination_version="unknown",destination_service="dashscope.aliyuncs.com",destination_canonical_service="unknown",destination_canonical_revision="latest",destination_service_name="dashscope.aliyuncs.com",destination_service_namespace="unknown",destination_cluster="unknown",request_protocol="http",response_code="200",grpc_response_status="",response_flags="-",connection_security_policy="unknown",model="qwen1.5-72b-chat"} 1
       istio_requests_total{reporter="source",source_workload="sleep",source_canonical_service="sleep",source_canonical_revision="latest",source_workload_namespace="default",source_principal="unknown",source_app="sleep",source_version="",source_cluster="cce8d2c1d1e8d4abc8d5c180d160669cc",destination_workload="unknown",destination_workload_namespace="unknown",destination_principal="unknown",destination_app="unknown",destination_version="unknown",destination_service="dashscope.aliyuncs.com",destination_canonical_service="unknown",destination_canonical_revision="latest",destination_service_name="dashscope.aliyuncs.com",destination_service_namespace="unknown",destination_cluster="unknown",request_protocol="http",response_code="200",grpc_response_status="",response_flags="-",connection_security_policy="unknown",model="qwen-turbo"} 1

Contoh kueri analisis

Dengan dimensi model pada istio_requests_total, siapkan aturan analisis di Application Real-Time Monitoring Service (ARMS). Misalnya:

  • Laju keberhasilan berdasarkan model: Bandingkan jumlah response_code="200" terhadap jumlah total, dikelompokkan berdasarkan model.

  • Latensi berdasarkan model atau penyedia: Tambahkan dimensi model yang sama ke metrik latensi untuk melacak waktu respons rata-rata per model.

Langkah selanjutnya