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:
| Capability | Apa yang dilacak | Kasus penggunaan |
|---|---|---|
| Access logs | Nama model, jumlah token input, dan token output per permintaan | Debug permintaan individual, audit biaya per permintaan |
| Token consumption metrics | Jumlah token teragregasi per workload dan model | Pantau penggunaan token secara real-time, tetapkan ambang batas peringatan |
| Custom metric dimensions | Model LLM sebagai dimensi pada metrik Istio native (istio_requests_total) | Analisis laju keberhasilan dan latensi berdasarkan model |
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans Service Mesh (ASM)
Kluster Container Service for Kubernetes (ACK) yang ditambahkan ke mesh
Menyelesaikan setidaknya Langkah 1 dan Langkah 2 dalam Gunakan ASM untuk mengarahkan traffic LLM
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
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih Observability Management Center > Observability Settings.
Pada bagian Log Settings, tambahkan tiga field berikut:
Nama field Ekspresi FILTER_STATE Deskripsi request_modelFILTER_STATE(wasm.asm.llmproxy.request_model:PLAIN)Model yang digunakan untuk permintaan (misalnya, qwen-turboatauqwen1.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 
Verifikasi access log
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."} ] }'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"}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:
| Metrik | Deskripsi |
|---|---|
asm_llm_proxy_prompt_tokens | Jumlah token input |
asm_llm_proxy_completion_tokens | Jumlah token output |
Metrik ini mencakup empat dimensi default:
| Dimensi | Deskripsi |
|---|---|
llmproxy_source_workload | Workload yang memulai permintaan |
llmproxy_source_workload_namespace | Namespace dari workload sumber |
llmproxy_destination_service | Layanan LLM tujuan |
llmproxy_model | Model yang digunakan untuk permintaan |
Konfigurasikan sidecar untuk mengeluarkan metrik
Contoh ini menggunakan Penyebaran sleep di namespace default.
Buat file bernama
asm-llm-proxy-bootstrap-config.yamldengan 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=([^|]*))" } ] }Terapkan ConfigMap:
kubectl apply -f asm-llm-proxy-bootstrap-config.yamlTambahkan 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
Kirim permintaan uji menggunakan perintah dari bagian sebelumnya.
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 llmproxyasm_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.
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih Observability Management Center > Observability Settings.
Pilih REQUEST_COUNT dan klik Edit Dimension. Pada tab Custom Dimension, masukkan nilai berikut:
Dimension Name:
modelValue:
filter_state["wasm.asm.llmproxy.request_model"]


Verifikasi dimensi kustom
Kirim permintaan uji menggunakan perintah dari bagian access log.
Kueri endpoint Prometheus sidecar: Output yang diharapkan: Dimensi
modelkini muncul diistio_requests_total, memungkinkan kueri per-model pada metrik Istio native.kubectl exec deployments/sleep -it -c istio-proxy -- curl localhost:15090/stats/prometheus | grep llmproxyistio_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 berdasarkanmodel.Latensi berdasarkan model atau penyedia: Tambahkan dimensi
modelyang sama ke metrik latensi untuk melacak waktu respons rata-rata per model.
Langkah selanjutnya
Enable data plane log collection — Siapkan pengumpulan log terpusat ke Simple Log Service (SLS) untuk peringatan dan dasbor
Collect metrics to Managed Service for Prometheus — Konfigurasikan ARMS untuk mengambil dan menyimpan metrik LLM guna analisis jangka panjang