首页/AI/大模型部署与运维速查/vLLM /metrics:Prometheus 抓取
运维监控与排障50 条

vLLM /metrics:Prometheus 抓取

vLLM 在 /metrics 暴露 Prometheus 指标:请求运行/等待数、TTFT/TPOT 直方图、KV 使用率与前缀缓存命中;按固定间隔抓取即可接入现有监控栈。

指标端点是什么

vLLM 在 /metrics 上暴露 Prometheus 文本格式的指标:运行中与等待中的请求数、TTFT 与 TPOT 直方图、KV 池使用率、前缀缓存命中相关计数等。加一个 scrape job 就能接入现有监控栈,无需改动服务。指标名带统一前缀且随版本微调,写查询和告警表达式前先看本机实际输出。

基本信息

端点/metrics(与 OpenAI 兼容接口同一端口)
格式Prometheus 文本格式,直接抓取即可
容量类指标运行中请求数、等待中请求数、KV 池使用率
体验类指标首 token 延迟与每 token 延迟直方图
权限要求只要网络可达,抓取本身通常不需要额外凭证

典型使用场景

  • 接入监控栈:Prometheus 抓取后统一在 Grafana 出看板,不再人工登录机器看现象
  • 延迟分析:用直方图算 P95/P99,判断是排队变差还是模型变慢
  • 容量观测:KV 水位与等待请求数一起看,决定该扩容还是该限流
  • 压测对照:压测期间同步采集指标,让吞吐结论与内部状态互相印证
  • 故障取证:异常窗口的指标快照与日志一起归档,便于事后归因

抓取配置与先看再写

抓取配置与先看再写
scrape_configs:
  - job_name: vllm
    metrics_path: /metrics
    static_configs:
      - targets: ["127.0.0.1:8000"]

# 先看实际输出,再写查询与告警表达式:
#   curl -s http://127.0.0.1:8000/metrics | grep -E 'num_requests|ttft|tpot|gpu_cache' | head

指标按用途分组

用途看什么判断方式
容量等待请求数、KV 池使用率两者同时上涨即接近上限
体验首 token 与每 token 延迟直方图算分位数,不看均值
缓存前缀缓存命中相关计数命中率下降说明前缀变了
吞吐累计生成 token 数配合请求数算单位产出
指标名随版本有微调:升级后旧表达式可能直接查不到数据,告警会静默失效。升级流程里应包含一次指标核对。
分位数要用直方图聚合函数计算,并选择合适的统计区间:区间太短样本不足、太长会把历史状态混进来。

易错点

  • 照抄旧版指标名:升级后查询为空,告警静默失效且不易发现
  • 只看服务指标不看硬件:GPU 降频、ECC 增长这类信号不在服务指标里,需要硬件采集一起看
  • 用平均值代替分位数:长尾体验问题被抹平,扩容决策缺乏依据
  • 指标端点与业务入口混在同一鉴权层:抓取失败,或被逼着把指标暴露到公网

数据来源与参考

  • vLLM 官方文档:Production Metrics(docs.vllm.ai)
  • Prometheus 官方文档:配置(prometheus.io/docs)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌