vLLM 监控看板实战:Grafana 与 Perses 原生格式性能/查询统计 Dashboard 详解
vLLM 监控看板实战Grafana 与 Perses 原生格式性能/查询统计 Dashboard 详解【免费下载链接】vllmA high-throughput and memory-efficient inference and serving engine for LLMs项目地址: https://gitcode.com/GitHub_Trending/vl/vllm本篇指南以 vLLM 仓库examples/observability/dashboards/目录下的监控看板配置为主体讲解如何把 vLLM 的 Prometheus 指标接入 GrafanaJSON 格式与 PersesYAML 格式两大可观测性平台并完整拆解两份 DashboardPerformance Statistics、Query Statistics中每个面板背后的 PromQL 查询与指标来源。读完本文你可以直接导入开箱即用的 vLLM 监控看板并理解 E2E 延迟、TTFT、ITL、吞吐等核心指标在 vLLM 源码中的产生位置。目录结构与看板总览examples/observability/dashboards/目录为 vLLM 部署提供全面的可观测性配置包含两大平台的看板Grafana 看板grafana/performance_statistics.json、grafana/query_statistics.json配套说明见 grafana/README.mdPerses 看板perses/performance_statistics.yaml、perses/query_statistics.yaml配套说明见 perses/README.md两个平台提供的监控能力是等价的均包含两份看板看板说明Performance Statistics跟踪延迟、吞吐量与性能类指标Query Statistics监控请求量、查询性能与关键 KPI原生格式的设计取舍官方看板全部采用各平台的原生格式提供目的是让同一份配置能在不同部署方式云端、自托管、Docker、Kubernetes中通用不产生厂商锁定GrafanaJSON适用于任意 Grafana 实例云、自托管、Docker可通过 Grafana UI 或 API 直接导入需要时可以用 Kubernetes Operator 包装无厂商锁定或部署依赖PersesYAML适用于独立部署的 Perses 实例兼容 Perses API 与 CLI支持 Dashboard-as-Code 工作流需要时可以用 Kubernetes Operator 包装快速上手先进入示例目录cd examples/observability/dashboardsGrafanaUI 导入或 API 导入可以直接在 Grafana UI 中导入 JSON也可以通过 Grafana HTTP API 批量导入curl -X POST http://grafana/api/dashboards/db \ -H Content-Type: application/json \ -d grafana/performance_statistics.jsonquery_statistics.json同理替换-d 后的文件即可。PersesCLI 导入percli apply -f perses/performance_statistics.yamlGrafana 看板深度解读前置要求Grafana 8.0JSON 中 schemaVersion 为 40Grafana 中已配置 Prometheus 数据源vLLM 部署已开启 Prometheus 指标OpenAI 兼容服务默认开启/metrics端点直接暴露原始指标手动导入推荐Grafana 子目录 README 给出的推荐方式是手动导入打开 Grafana 实例点击侧边栏的 图标选择 Import粘贴看板文件中的 JSON 内容或直接上传 JSON 文件通过 Grafana Operator 部署Kubernetes如果集群中运行 Grafana Operator可以把 JSON 包装进GrafanaDashboard自定义资源# 注意instanceSelector 需与你 Grafana 实例的标签匹配 # 可用 kubectl get grafana -o yaml 查看 apiVersion: grafana.integreatly.org/v1beta1 kind: GrafanaDashboard metadata: name: vllm-performance-dashboard spec: instanceSelector: matchLabels: dashboards: grafana # 调整为你 Grafana 实例的实际标签 folder: vLLM Monitoring json: | # 将此注释替换为 performance_statistics.json 的完整 JSON 内容 # JSON 应以 { 开头、以 } 结尾然后应用到集群kubectl apply -f your-dashboard.yaml -n namespacePerformance Statistics 看板面板与 PromQL该看板共 20 个面板全部围绕 4 组指标展开指标名与 vLLM 源码中注册的 Prometheus 名称一一对应面板组核心指标典型 PromQL含义E2E LatencyOver Time / P50 / P90 / P99 / Avgvllm:e2e_request_latency_secondsrate(vllm:e2e_request_latency_seconds_sum[$__interval]) / rate(vllm:e2e_request_latency_seconds_count[$__interval])分位用histogram_quantile(0.99, sum by(le) (rate(vllm:e2e_request_latency_seconds_bucket[$__range])))请求端到端延迟的时间序列与分位数TTFTOver Time / P50 / P90 / P99 / Avgvllm:time_to_first_token_seconds同上模式把指标名换成vllm:time_to_first_token_seconds_*首 token 延迟ITLOver Time 4 条线 P50 / P90 / P99 / Avgvllm:inter_token_latency_seconds同上模式指标名为vllm:inter_token_latency_seconds_*每个输出 token 之间的间隔时间TPSTokens Per Secondvllm:generation_tokens_total、vllm:prompt_tokens_total、vllm:iteration_tokens_total_countrate(vllm:generation_tokens_total[$__interval])等生成/输入/单次迭代 token 的吞吐Query Statistics 看板面板与 PromQL该看板共 18 个面板所有查询都带有{model_name~$Deployment_id}过滤器用于在多模型部署中按模型名筛选。主要面板包括Successful Requests Over Time / Requests Avg Ratesum by (model_name) (rate(vllm:request_success_total{model_name~$Deployment_id}[$__rate_interval]))统计成功请求量与平均请求速率p50 / p90 / p99 Latencyhistogram_quantile(0.90, sum by(le, model_name) (rate(vllm:e2e_request_latency_seconds_bucket{model_name~$Deployment_id}[$__rate_interval])))0.50/0.99 同理端到端延迟分位Input Token Size Distribution / p50 / p90 / p99基于vllm:request_prompt_tokens_bucket的直方图刻画输入长度分布Input Tokens Over Time / Output Tokens Over Timesum by (model_name) (rate(vllm:prompt_tokens_total{...}[$__rate_interval]))与rate(vllm:generation_tokens_total{...})Input Tokens/Sec Avg、Output Tokens/Sec Avg、Input Token Size Avg如输入均长 sum(rate(vllm:prompt_tokens_total{...})) / sum(rate(vllm:request_success_total{...}))实际排障时这两份看板分工明确Performance Statistics 看快不快延迟与吞吐Query Statistics 看忙不忙请求量、成功率、输入输出长度结构。Perses 看板深度解读格式与部署方式Perses 看板为原生 Perses YAML 规范kind 为PersesDashboard支持所有部署方式部署方式操作直接导入percli apply -f performance_statistics.yamlPerses OperatorKubernetes原生 YAML 直接兼容 Operatorkubectl apply -f performance_statistics.yaml -n namespace文件供给File Provisioning把 YAML 文件放入 Perses 的 provisioning 目录即自动加载变量与数据源以 perses/performance_statistics.yaml 为例YAML 中定义了一个名为Deployment_id的列表变量通过PrometheusLabelValuesVariable插件从vllm:generation_tokens_total{}指标的model_name标签动态枚举可选模型供各面板查询过滤使用——这与 Grafana 版 Query Statistics 中model_name~$Deployment_id的用法等价。需要注意Perses 看板中引用的数据源名称是示例值如accelerators-thanos-querier-datasource导入前需要把它改成你自己 Perses 实例中实际的 Prometheus 数据源名否则面板查询会失败。Grafana 版同理若实例中没有同名 Prometheus 数据源导入时要在界面里选择正确的数据源。两份 Perses 看板的面板数量分别为 21performance_statistics与 17query_statistics面板语义与 Grafana 版对应E2E/TTFT/ITL 延迟统计、token 吞吐、请求量与分位延迟等。指标溯源这些指标在 vLLM 源码中如何产生看板里出现的指标名并非凭空约定它们由 vLLM V1 引擎的指标记录器统一注册。在 vllm/v1/metrics/loggers.py 中可以看到vllm:time_to_first_token_seconds直方图的定义vllm/v1/metrics/loggers.py 定义了vllm:inter_token_latency_seconds直方图vllm/v1/metrics/loggers.py 定义了vllm:e2e_request_latency_seconds直方图每次迭代时引擎把采集到的首 token 延迟与 token 间隔逐个observe到对应直方图见 loggers.py L1226-L1229。首 token 延迟的原始采样来自 vllm/v1/metrics/stats.py 中迭代统计结构里的time_to_first_tokens_iter列表。这也解释了为什么看板可以放心使用histogram_quantile这三个核心延迟指标在引擎侧就是标准 Prometheus 直方图带_bucket/_sum/_count序列。此外从源码结构看这些指标带有model_name等 per-engine 标签注册时会展开per_engine_labelvalues这正是 Query Statistics 看板可以按model_name过滤的前提。前置条件与配套示例使用这套看板需要满足三项前置条件你的 vLLM 部署暴露Prometheus 指标监控平台中已配置对应数据源vLLM 指标已启用且可被监控平台抓取仓库中还有几个可配合使用的示例构成完整的可观测性链路examples/observability/prometheus_grafana/README.md用docker compose拉起 Prometheus Grafana 的完整链路示例docker-compose.yaml、prometheus.yaml并演示了用vllm bench serve产生流量后访问/metrics与导入看板的流程examples/observability/metrics/offline.py离线推理场景下查看指标的示例examples/observability/opentelemetry/README.md基于 OpenTelemetry 的分布式追踪方案典型工作流是先用 prometheus_grafana 示例把指标链路跑通再把本目录下的performance_statistics与query_statistics看板导入替换掉单文件的grafana.json以获得按维度拆分、更精细的监控视图。贡献指南官方 README 对新看板贡献者提出了四点要求提供原生格式Grafana 用 JSONPerses 用 YAML 规范同步更新对应平台的子目录 README确保看板能在不同部署方式下工作使用平台最新版本进行测试小结examples/observability/dashboards/是 vLLM 可观测性体系的最后一公里引擎侧在 loggers.py 中产出标准 Prometheus 直方图与计数器本目录把它们组织成 Grafana JSON 与 Perses YAML 两套等价看板。导入时只需注意两点——按平台选择对应格式文件、把 Perses YAML 里的示例数据源名改为自己环境的真实名称——即可获得覆盖 E2E 延迟、TTFT、ITL、吞吐与请求分布的完整 vLLM 监控视图。【免费下载链接】vllmA high-throughput and memory-efficient inference and serving engine for LLMs项目地址: https://gitcode.com/GitHub_Trending/vl/vllm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考