作者 | 孫曉 李鋒
1 相關(guān)概念 1.1 MindIE 服務(wù)化監(jiān)控指標查詢接口
在 MindIE 服務(wù)化運行過程中,為了及時掌握服務(wù)的運行狀態(tài)、性能表現(xiàn)以及發(fā)現(xiàn)潛在問題,提供了服務(wù)監(jiān)控指標查詢接口(普羅 (Prometheus) 格式)。該接口能夠幫助開發(fā)者和運維人員獲取豐富的服務(wù)監(jiān)控指標數(shù)據(jù),為優(yōu)化服務(wù)配置、保障服務(wù)質(zhì)量提供有力支持。
本文將介紹如何使用 Prometheus 與 Grafana 來實現(xiàn) MindIE 服務(wù)可視化監(jiān)控功能。
當前接口支持以下指標監(jiān)控,詳情可以參考:服務(wù)監(jiān)控指標查詢接口(普羅格式)
https://www.hiascend.com/document/detail/zh/mindie/100/mindieservice/servicedev/mindie_service0103.html
名稱 描述
請求相關(guān)指標
request_received_total
服務(wù)端接收到的推理請求總數(shù)。通過該指標可了解服務(wù)的訪問熱度。
request_success_total
推理成功的請求個數(shù),用于衡量服務(wù)的推理成功率。
request_failed_total
推理失敗的請求個數(shù),結(jié)合成功請求數(shù)可計算失敗率,評估服務(wù)的穩(wěn)定性。
num_requests_running
當前正在運行的請求個數(shù),反映服務(wù)當前的負載情況。
num_requests_waiting
當前等待處理的請求個數(shù),可用于判斷服務(wù)的處理能力是否滿足需求。
num_requests_swapped
當前被交換到 CPU 上的請求個數(shù),幫助了解資源調(diào)度情況。
num_preemptions_total
累計觸發(fā)請求搶占的次數(shù),用于分析服務(wù)資源競爭和調(diào)度策略的合理性。
Token 相關(guān)指標
prompt_tokens_total
處理的所有請求的輸入 prompt token 總數(shù),反映輸入數(shù)據(jù)量。
generation_tokens_total
推理后生成的 token 總數(shù),體現(xiàn)服務(wù)的輸出量。
avg_prompt_throughput_toks_per_s
平均 Prefill 吞吐量,衡量輸入階段的處理速度。
avg_generation_throughput_toks_per_s
平均 token 吞吐量,反映整體的推理生成速度。
request_prompt_tokens
請求輸入的 token 數(shù)量,用于分析單個請求的輸入規(guī)模。
request_generation_tokens
請求輸出的 token 數(shù)量,幫助了解單個請求的輸出規(guī)模。
性能和資源指標
failed_request_perc
推理失敗的請求率,直觀反映服務(wù)的可靠性。
npu_cache_usage_perc
KV Cache 的 NPU 顯存利用率,監(jiān)控 NPU 資源使用情況。
cpu_cache_usage_perc
KV Cache 的 CPU 利用率,掌握 CPU 資源使用狀況。
npu_prefix_cache_hit_rate
NPU 卡上 prefix cache 的命中率,評估緩存的使用效率。
時延指標
time_to_first_token_seconds
首 token 時延,衡量請求推理生成首個 token 的速度,對實時性要求較高的場景至關(guān)重要。
time_per_output_token_seconds
token 生成時延,反映連續(xù)生成 token 之間的時間間隔,影響服務(wù)的響應流暢度。
e2e_request_latency_seconds
端到端時延,代表請求從接收到執(zhí)行完成的總耗時,綜合體現(xiàn)服務(wù)的整體性能。
1.2 Prometheus 是什么
Prometheus 是一個開源的系統(tǒng)監(jiān)控和報警工具包,最初由 SoundCloud 開發(fā),現(xiàn)在是 Cloud Native Computing Foundation(CNCF)的一部分。Prometheus 以其強大的數(shù)據(jù)收集和查詢能力、易于擴展和高可用性在行業(yè)內(nèi)得到了廣泛應用。以下是 Prometheus 的核心概念:
時間序列數(shù)據(jù)庫:Prometheus 主要用于存儲時間序列數(shù)據(jù),即帶有時間戳的指標數(shù)據(jù)。每個時間序列由一個指標名和一組標簽(key-value 對)標識。
多維數(shù)據(jù)模型:Prometheus 的數(shù)據(jù)模型基于指標名稱和標簽,可以靈活地對監(jiān)控數(shù)據(jù)進行分類和過濾,從而實現(xiàn)復雜的查詢和分析。
PromQL:Prometheus 查詢語言(PromQL)用于實時查詢和分析存儲在 Prometheus 中的數(shù)據(jù)。它支持豐富的運算符和函數(shù),能夠滿足多種監(jiān)控和報警需求.
Grafana 是一個開源的可視化和監(jiān)控平臺,廣泛應用于數(shù)據(jù)分析、監(jiān)控和報警。它支持多種數(shù)據(jù)源,提供豐富的可視化工具,使用戶能夠創(chuàng)建交互式的儀表盤。以下是 Grafana 的核心功能:
數(shù)據(jù)可視化:Grafana 提供了多種圖表類型,包括折線圖、柱狀圖、餅圖、熱圖等,用戶可以通過拖拽的方式輕松創(chuàng)建和自定義儀表盤。
支持多種數(shù)據(jù)源:Grafana 支持從多種數(shù)據(jù)源獲取數(shù)據(jù),包括 Prometheus、InfluxDB、Graphite、Elasticsearch、MySQL、PostgreSQL 等。
靈活的查詢和過濾:通過集成的數(shù)據(jù)源查詢語言,Grafana 允許用戶靈活地對數(shù)據(jù)進行過濾、聚合和轉(zhuǎn)換。每種數(shù)據(jù)源都有專門的查詢編輯器,幫助用戶編寫查詢語句。
報警和通知:Grafana 提供強大的報警功能,允許用戶基于查詢結(jié)果設(shè)置報警規(guī)則。當條件滿足時,可以通過郵件、Slack、PagerDuty 等多種渠道發(fā)送通知。
用戶管理和權(quán)限控制:Grafana 提供詳細的用戶管理和權(quán)限控制功能,支持用戶、團隊和組織的管理。用戶可以根據(jù)需要設(shè)置不同的訪問權(quán)限,保護敏感數(shù)據(jù)。
2 實踐記錄 2.1 Prometheus 安裝
Prometheus 安裝方法參考:
https://prometheus.cloudnative.io/di-san-zhang-prometheus/di-2-jie-an-zhuang/installation
為方便起見,本次實踐筆者采用預編譯二進制文件安裝方法,在 Windows PC 上安裝。
安裝地址:https://prometheus.io/download/
2.2 Grafana 安裝
Grafana 同樣支持在不同操作系統(tǒng)安裝,詳見教程 https://grafana.com/docs/grafana/latest/setup-grafana/installation/
本次實踐選擇在 Windows 安裝,安裝地址 https://grafana.com/grafana/download?platform=windows
2.3 MindIE Service 服務(wù)部署啟動
需在服務(wù)器啟動 MindIE-Service 服務(wù),服務(wù)啟動教程不做贅述。
由于 MindIE 服務(wù)和 Prometheus+Grafana 在不同主機啟動,因此注意配置 config.json 文件。修改 ipAddress 和 managementIpAddress 為服務(wù)器 IP,保證 Prometheus+Grafana 服務(wù)可訪問該 IP 地址。同時需要注意端口設(shè)置。
另外,需要確保啟動服務(wù)前開啟服務(wù)化監(jiān)控開關(guān),開啟服務(wù)化監(jiān)控功能的命令如下:
export MIES_SERVICE_MONITOR_MODE=1
參考:https://www.hiascend.com/document/detail/zh/mindie/10RC3/mindieservice/servicedev/mindie_service0251.html
嘗試使用 curl 命令驗證 metricsPort 輸出正常:curl http://{ip}:{port}/metrics
發(fā)現(xiàn)能返回普羅格式 metric 輸出
2.4 啟動 Prometheus 和 Grafana
Step1 修改 prometheus 安裝目錄下的 promethues.yml 文件,添加 MindIE 服務(wù)的 IP 和 metricsport
點擊 Prometheus 安裝目錄下的 promethrus.exe 和 Grafana 安裝目錄下的 bin/grafana-server.exe 啟動 Prometheus 和 Grafana
Step2 打開 Grafana http://localhost:3000 ,預設(shè)賬號密碼是 admin@admin,第一次登錄會需要修改密碼。
Step3 點擊 Connection > Data sources > Add new data source,選擇 prometheus,之后把 prometheus 的 URL http://localhost:9090 / 填上去,點擊最下面 Save & test。
Step4 之后可以在 Grafana 頁面建立 dashboard,在 Home-Dashboards-New dashboard 建立 dashboard, Dashboard 手動構(gòu)建較麻煩,可以參考一些 Grafana 教程 https://imageslr.com/2024/grafana.html
好在可以通過 json 格式輸入或 json 文件 import 快速構(gòu)建 dashboard
這里選擇參考下面 vllm 的 grafana json 文件,將其中的 vllm: 字段去掉(因為 MindIE 的 metrics 字段和 vllm 的 metric 有區(qū)別)
http://www.gitpp.com/digiman/vllm/-/blob/main/examples/production_monitoring/grafana.json?ref_type=heads
最終得到 MindIE 指標監(jiān)控看板界面
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.