All Products
Search
Document Center

Alibaba Cloud Service Mesh:Observabilitas Trafik: Kelola Trafik LLM dengan ASM

Last Updated:Jun 21, 2026

Selain kemampuan perutean trafik LLM yang dijelaskan dalam topik sebelumnya, ASM meningkatkan observabilitasnya untuk skenario LLM. Topik ini menjelaskan cara menggunakan log akses dan metrik pemantauan ASM untuk mengamati informasi permintaan LLM.

Penting

Untuk menunjukkan seluruh rangkaian fitur, topik ini mengasumsikan bahwa Anda telah menyelesaikan semua langkah dalam Perutean Trafik: Gunakan ASM untuk mengelola trafik LLM secara efisien. Jika Anda hanya telah menyelesaikan Langkah 1 dan Langkah 2 dari topik tersebut, Anda tetap dapat mengirim permintaan uji dengan perintah dari Langkah 2. Perintah yang digunakan untuk melihat data observabilitas sama dengan yang ada di topik ini.

Langkah 1: Amati permintaan LLM dengan log akses

Konfigurasikan log akses

ASM meningkatkan pencatatan log untuk permintaan LLM. Untuk melihat informasi ini dalam log akses, cukup perbarui format log akses kustom. Untuk informasi lebih lanjut, lihat log akses bidang data kustom.

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

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

  3. Pada Log Settings global, tambahkan tiga bidang berikut.

    Teks isinya sebagai berikut:

    request_model				FILTER_STATE(wasm.asm.llmproxy.request_model:PLAIN)
    request_prompt_tokens			FILTER_STATE(wasm.asm.llmproxy.request_prompt_tokens:PLAIN)
    request_completion_tokens		FILTER_STATE(wasm.asm.llmproxy.request_completion_tokens:PLAIN)

    Bidang-bidang tersebut didefinisikan sebagai berikut:

    • request_model: Model aktual yang digunakan untuk permintaan LLM saat ini, seperti qwen-turbo atau qwen1.5-72b-chat.

    • request_prompt_tokens: Jumlah token input untuk permintaan tersebut.

    • request_completion_tokens: Jumlah token output untuk permintaan tersebut.

    Sebagian besar penyedia layanan LLM mengenakan biaya berdasarkan penggunaan token. Data ini memungkinkan Anda melacak permintaan yang mengonsumsi token dan mengidentifikasi model yang digunakan.

Verifikasi

  1. Menggunakan file kubeconfig untuk kluster ACK Anda, jalankan dua perintah berikut 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"}
        ]
    }'
    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. Jalankan perintah berikut untuk melihat log akses.

    kubectl logs deployments/sleep -c istio-proxy | tail -2

    Output yang diharapkan:

    {"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. Setelah diformat, isi log adalah sebagai berikut:

    {
        "duration": "7640",
        "response_code": "200",
        "authority_for": "dashscope.aliyuncs.com",  --Penyedia LLM aktual yang diakses
        "request_model": "qwen1.5-72b-chat",    	--Model yang digunakan oleh permintaan saat ini
        "request_prompt_tokens": "3",		--Jumlah token input untuk permintaan saat ini
        "request_completion_tokens": "55"		--Jumlah token output untuk permintaan saat ini
    }
    {
      "duration": "2759",
      "response_code": "200",
      "authority_for": "dashscope.aliyuncs.com",  --Penyedia LLM aktual yang diakses
      "request_model": "qwen-turbo",    	      --Model yang digunakan oleh permintaan saat ini
      "request_prompt_tokens": "11",	      --Jumlah token input untuk permintaan saat ini
      "request_completion_tokens": "90"	      --Jumlah token output untuk permintaan saat ini 
    }

ASM terintegrasi dengan SLS. Dengan mengumpulkan dan menyimpan log akses ini, Anda dapat mengamati panggilan LLM tingkat permintaan, menentukan aturan peringatan kustom, dan membuat dasbor yang informatif. Untuk informasi lebih lanjut, lihat Aktifkan pengumpulan log bidang data.

Langkah 2: Tambahkan metrik untuk konsumsi token

Meskipun log akses memberikan informasi detail halus, metrik pemantauan menawarkan tampilan tingkat tinggi. Proxy mesh ASM mengekspor konsumsi token pada tingkat workload sebagai metrik pemantauan, sehingga Anda dapat mengamati penggunaan token suatu workload secara real time.

ASM menambahkan dua metrik baru:

  • asm_llm_proxy_prompt_tokens: Jumlah token input.

  • asm_llm_proxy_completion_tokens: Jumlah token output.

Secara default, kedua metrik ini memiliki dimensi berikut:

  • llmproxy_source_workload: Nama workload yang mengirim permintaan.

  • llmproxy_source_workload_namespace: Namespace tempat sumber permintaan berada.

  • llmproxy_destination_service: Penyedia tujuan.

  • llmproxy_model: Model untuk permintaan saat ini.

Ubah konfigurasi workload untuk menghasilkan metrik baru

Langkah ini menggunakan deployment sleep di namespace default sebagai contoh.

  1. Gunakan file kubeconfig kluster ACK Anda untuk membuat file bernama asm-llm-proxy-bootstrap-config.yaml.

    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. Jalankan perintah berikut untuk membuat ConfigMap bernama asm-llm-proxy-bootstrap-config.

    kubectl apply -f asm-llm-proxy-bootstrap-config.yaml
  3. Jalankan perintah berikut untuk mengubah deployment sleep dan menambahkan anotasi ke pod-nya.

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

Verifikasi

  1. Jalankan dua perintah berikut secara terpisah untuk mengirim permintaan uji.

    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. Jalankan perintah berikut untuk melihat metrik Prometheus yang diekspor oleh sidecar aplikasi sleep.

    kubectl exec deployments/sleep -it -c istio-proxy -- curl localhost:15090/stats/prometheus | grep llmproxy

    Output yang diharapkan:

    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

    Output ini mengonfirmasi bahwa sidecar mengekspor metrik tersebut, masing-masing mencakup empat dimensi default.

    ASM terintegrasi dengan ARMS. Untuk analisis dan visualisasi yang lebih mendetail, konfigurasikan aturan pengumpulan untuk mengirim metrik ini ke Managed Service for Prometheus. Untuk informasi lebih lanjut, lihat Kumpulkan metrik pemantauan ke Managed Service for Prometheus.

Langkah 3: Tambahkan dimensi LLM ke metrik native

Service Mesh menyediakan banyak metrik default yang menampilkan informasi rinci untuk protokol HTTP dan TCP. Metrik ini menawarkan banyak dimensi, dan ASM menyediakan dasbor Prometheus bawaan yang kuat berdasarkan metrik tersebut.

Namun, metrik ini tidak berisi informasi tentang permintaan LLM. Untuk mengatasi hal ini, ASM memungkinkan Anda menambahkan informasi permintaan LLM ke metrik yang sudah ada dengan menyesuaikan dimensinya.

Konfigurasikan dimensi kustom: model

Bagian ini menunjukkan cara menambahkan dimensi model ke metrik REQUEST_COUNT.

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

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

  3. Klik Edit Dimension untuk Edit dimension, pilih tab Custom Dimension, lalu klik Custom Dimensions. Atur Dimension Name menjadi model dan Value menjadi filter_state["wasm.asm.llmproxy.request_model"].

Verifikasi

  1. Jalankan dua perintah berikut secara terpisah untuk mengirim permintaan uji.

    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. Jalankan perintah berikut untuk melihat metrik Prometheus yang diekspor oleh sidecar aplikasi sleep.

    kubectl exec deployments/sleep -it -c istio-proxy -- curl localhost:15090/stats/prometheus | grep istio_requests_total

    Output yang diharapkan:

    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

    Output ini mengonfirmasi bahwa dimensi model telah ditambahkan ke metrik istio_requests_total.

    Dengan metrik pemantauan ini, Anda dapat mengonfigurasi aturan analisis di ARMS untuk wawasan yang lebih mendalam. Contohnya:

    • Tingkat keberhasilan permintaan untuk model tertentu.

    • Latensi respons rata-rata untuk model atau penyedia tertentu.

Kesimpulan

Topik ini membangun di atas Perutean Trafik: Gunakan ASM untuk mengelola trafik LLM secara efisien dan menjelaskan cara melakukan pengamatan detail halus maupun tingkat tinggi terhadap trafik LLM menggunakan ASM. Anda dapat mengaktifkan fitur observabilitas multidimensi hanya dengan modifikasi kecil pada konfigurasi kluster Anda. ASM terus meningkatkan kemampuan observabilitasnya untuk trafik LLM guna menyediakan solusi yang lebih detail dan fleksibel.