全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Observasi Trafik: Gunakan ASM untuk Mengelola Trafik LLM secara Efisien

更新时间:Jun 28, 2025

Melampaui kemampuan pengarahan permintaan LLM yang dibahas dalam dokumen sebelumnya, Alibaba Cloud Service Mesh (ASM) telah meningkatkan fitur observabilitasnya untuk memenuhi kebutuhan observabilitas tingkat lanjut dalam skenario LLM. Topik ini menjelaskan cara mengamati permintaan LLM menggunakan log akses dan metrik pemantauan di konsol ASM.

Penting

Untuk memberikan berbagai opsi manajemen trafik, langkah-langkah dalam topik ini disiapkan berdasarkan semua langkah dalam Pengarahan Trafik: Gunakan ASM untuk Mengelola Trafik LLM. Jika Anda hanya menyelesaikan Langkah 1 dan Langkah 2, Anda dapat menjalankan perintah uji di Langkah 2 untuk memeriksa apakah perintah untuk mengambil data observabel sama seperti yang dibahas dalam topik ini.

Langkah 1: Amati Permintaan LLM Menggunakan Log Akses

Konfigurasikan Log Akses

ASM telah meningkatkan dukungan untuk log permintaan LLM. Anda dapat mengonfigurasi log akses kustom untuk melihat log permintaan. Untuk instruksi terperinci, lihat Log Akses Data Plane Kustom.

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

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

  3. Dalam pengaturan global Log Settings, tambahkan tiga bidang berikut:

    image

    Bidang-bidang tersebut adalah 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 adalah sebagai berikut:

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

    • request_prompt_tokens: jumlah token input untuk permintaan saat ini.

    • request_completion_tokens: jumlah token output untuk permintaan saat ini.

    Sebagian besar penyedia layanan model besar biasanya mengenakan biaya kepada Anda berdasarkan penggunaan token. Bidang-bidang ini memungkinkan pengguna untuk melihat jumlah token yang dikonsumsi selama permintaan dan mengidentifikasi model spesifik yang digunakan.

Verifikasi

  1. Jalankan dua perintah berikut secara terpisah dengan menggunakan file kubeconfig dari kluster ACK.

    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. Log yang diformat dan diproses muncul sebagai berikut.

    {
        "duration": "7640",
        "response_code": "200",
        "authority_for": "dashscope.aliyuncs.com",  --Penyedia model besar 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 model besar 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 mulus dengan Simple Log Service (SLS) dari Alibaba Cloud, memungkinkan Anda memantau invokasi LLM tingkat permintaan melalui log akses. Selain itu, log-log ini dapat dikumpulkan dan disimpan langsung. Setelah Anda mengaktifkan log akses, Anda dapat membuat aturan peringatan kustom dan merancang dasbor log yang rinci. Untuk informasi lebih lanjut, lihat Aktifkan Pengumpulan Log Data Plane.

Langkah 2: Tambahkan Metrik untuk Menampilkan Jumlah Token yang Dikonsumsi oleh Beban Kerja Saat Ini

Sementara log akses menyediakan catatan terperinci, metrik pemantauan menawarkan pandangan yang lebih luas tentang data. Proxy mesh ASM sekarang dapat mengeluarkan jumlah token yang dikonsumsi oleh beban kerja sebagai metrik pemantauan, memungkinkan pengamatan real-time penggunaan token untuk beban kerja saat ini.

ASM memperkenalkan dua metrik baru:

  • asm_llm_proxy_prompt_tokens: jumlah token input.

  • asm_llm_proxy_completion_tokens: jumlah token output.

Metrik ini mencakup dimensi default berikut:

  • llmproxy_source_workload: nama beban kerja yang memulai permintaan.

  • llmproxy_source_workload_namespace: namespace tempat layanan yang memulai permintaan berada.

  • llmproxy_destination_service: layanan tujuan.

  • llmproxy_model: model yang digunakan untuk permintaan saat ini.

Ubah Konfigurasi Beban Kerja untuk Mengeluarkan Metrik Baru

Langkah ini menggunakan sleep yang diterapkan di namespace default sebagai contoh.

  1. Buat file bernama asm-llm-proxy-bootstrap-config.yaml dengan menggunakan file kubeconfig dari kluster ACK.

    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. Ubah sleep dengan menambahkan anotasi ke pod dengan perintah berikut.

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

Verifikasi

  1. Jalankan pengujian dengan menggunakan perintah berikut.

  2. Jalankan perintah berikut untuk melihat metrik Prometheus yang dihasilkan oleh Sidecar 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 menunjukkan metrik yang disediakan oleh sidecar dan dimensi default masing-masing.

    ASM sekarang terintegrasi dengan layanan ARMS, memungkinkan pengumpulan metrik ke Managed Service for Prometheus melalui aturan pengumpulan yang dikonfigurasi. Untuk instruksi terperinci, lihat Kumpulkan Metrik ke Managed Service for Prometheus.

Langkah 3: Tambahkan Dimensi Terkait LLM ke Metrik Asli ASM

ASM secara asli menyediakan berbagai metrik yang merinci protokol HTTP atau TCP. Metrik ini dilengkapi dengan dimensi yang luas, dan ASM telah mengembangkan Dasbor Prometheus yang kuat menggunakan metrik dan dimensi ini.

Namun, metrik ini saat ini tidak mencakup permintaan LLM. Untuk mengatasi masalah ini, ASM telah meningkatkan dukungan untuk permintaan LLM, memungkinkan Anda menambahkan permintaan LLM ke metrik yang ada dengan menyesuaikan dimensi metrik.

Konfigurasikan Dimensi Kustom: model

Dalam contoh ini, tambahkan dimensi model ke metrik REQUEST_COUNT.

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

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

  3. Pilih REQUEST_COUNT dan klik Edit Dimension. Klik tab Custom Dimension, dan masukkan model di bawah Nama Dimensi, dan filter_state["wasm.asm.llmproxy.request_model"] di bawah Nilai.

    image

    image

Verifikasi

  1. Jalankan pengujian dengan menjalankan perintah berikut secara terpisah.

  2. Jalankan perintah berikut untuk melihat metrik Prometheus yang dihasilkan oleh Sidecar sleep.

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

    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

    Dimensi model sekarang telah berhasil ditambahkan ke metrik istio_requests_total.

    Dengan metrik pemantauan ini, Anda dapat menyiapkan aturan analisis di ARMS untuk analisis yang lebih rinci. Sebagai contoh:

    • Tingkat keberhasilan permintaan ke model tertentu.

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

Kesimpulan

Berdasarkan Pengarahan Trafik: Gunakan ASM untuk Mengelola Trafik LLM, topik ini menjelaskan bagaimana melakukan observasi mendetail dan menyeluruh terhadap trafik LLM. Dengan melakukan penyesuaian kecil pada konfigurasi kluster, Anda dapat membuka fitur observabilitas multi-dimensi yang melekat pada service mesh. ASM terus mengembangkan fungsi observabilitas ini, menawarkan solusi yang semakin komprehensif dan adaptif.