MAX serve 的 /metrics 端点如何配置 Prometheus 抓取推理延迟指标
2026/9/19 3:15:26 网站建设 项目流程

MAX serve 的 /metrics 端点如何配置 Prometheus 抓取推理延迟指标

【免费下载链接】mojoThe Modular Platform (includes MAX & Mojo)项目地址: https://gitcode.com/GitHub_Trending/mo/mojo

如果你的 MAX 推理服务已经跑起来,需要持续观察首 token 延迟(TTFT)、每 token 解码延迟等指标,就需要把 Prometheus 指向 MAX serve 暴露的/metrics端点。Modular 平台的 MAX 在运行max serve命令或使用 MAX 容器提供服务时,会自带一个返回 Prometheus 文本格式指标的/metrics端点,默认监听8001 端口。本文说明如何验证端点、把 Prometheus 抓取任务配置好,以及哪些指标对应推理延迟。

前提条件

  • 已通过max serve启动模型服务,或通过 MAX 容器(如modular/max-nvidia-full:latest)部署。启动方式可参考 local-to-cloud 部署文档,例如:

    max serve --model modularai/Llama-3.1-8B-Instruct-GGUF
  • 服务端点可用时,/metrics端点随之可用,无需额外开启开关。

先验证端点是否工作

在能访问 MAX serve 的机器上,用curl请求端点:

curl http://localhost:8001/metrics

如果服务正常,会返回全部指标的 Prometheus 文本格式内容。也可以用过滤确认延迟指标存在:

curl -s http://localhost:8001/metrics | grep maxserve_time_to_first_token

返回中出现以maxserve_time_to_first_token开头的序列(如maxserve_time_to_first_token_milliseconds),说明端点和延迟指标都正常,可以进入 Prometheus 配置。

如果 8001 端口连不上,先检查服务是否以max serve方式启动,以及是否修改过指标端口(见下一节)。

指标端口调整(可选)

/metrics端点默认使用 8001 端口。需要改动时,通过环境变量MAX_SERVE_METRICS_ENDPOINT_PORT设置(整数端口号),配置优先级以 环境变量文档为准:CLI 参数/代码直接初始化 > 环境变量 >.env文件。

一旦修改了该端口,Prometheus 的targets必须同步更新,否则抓取会失败。注意区分:MAX_SERVE_PORT(默认 8000)是推理 API 服务端口,MAX_SERVE_METRICS_ENDPOINT_PORT(默认 8001)才是指标端口,两者互不影响。

在 Prometheus 中添加抓取任务

在 Prometheus 配置中加入一个 job,把目标指向 MAX serve 的指标端口:

scrape_configs: - job_name: max-serve scrape_interval: 15s static_configs: - targets: ["localhost:8001"]

文档给出的是localhost:8001的直接示例。实际部署中,把targets换成 MAX serve 所在主机可被 Prometheus 访问的地址,端口与MAX_SERVE_METRICS_ENDPOINT_PORT保持一致(文档未展开其他部署拓扑下的具体写法)。

保存配置后按 Prometheus 常规流程重载配置,确认max-serve这个 job 出现在目标列表中且抓取成功。

抓取后关注哪些推理延迟指标

Metrics 参考把请求延迟类指标分为端到端与分阶段两类,均为 Histogram 类型,单位毫秒:

指标含义
maxserve_request_time_milliseconds处理一个请求的总时间(总推理时间)
maxserve_time_to_first_token_millisecondsTTFT,从服务端收到请求算起,包含解析、校验、媒体解析、分词、排队和 prefill
maxserve_time_per_output_token_millisecondsTPOT,平均每个生成 token 的解码延迟,按decode_time / (num_generated_tokens - 1)计算,每请求输出一次,不含首 token 与 prefill
maxserve_input_processing_time_milliseconds输入处理时间(IPT)
maxserve_output_processing_time_milliseconds输出生成时间(OGT)
maxserve_itl_millisecondstoken 间延迟(inter-token latency)

抓到的都是原始序列,Prometheus 中通常需要基于这些 Histogram 做分位数聚合(如histogram_quantile)才能得到 p99 延迟,这一步属于你自己的查询写法,文档未提供具体 PromQL。

与延迟相关的辅助指标还有:

  • maxserve_num_requests_awaiting_admission(UpDownCounter):API 服务器已收到但尚未交给模型 worker 的请求数,持续偏高说明积压在 API 服务器而非调度器;
  • maxserve_batch_execution_time_millisecondsmaxserve_batch_creation_time_milliseconds:批执行与批构建耗时分布;
  • maxserve_response_queue_time_milliseconds:模型 worker 响应在输出队列中等待被流式层消费的耗时。

排查与限制

  • 抓取失败:确认端口与MAX_SERVE_METRICS_ENDPOINT_PORT一致;localhost:8001仅在 Prometheus 与 MAX serve 同机时成立,跨机部署需改用对应主机地址。
  • 指标缺失:数据并行指标(maxserve_dp_*)仅在data_parallel_degree > 1时记录;分离式推理指标(maxserve_di_*)仅在 disaggregated inference 部署中记录。如果你没有启用对应部署形态,看不到这些序列是正常的。
  • 遥测与 /metrics 端点相互独立:MAX 默认收集匿名使用遥测,可用MAX_SERVE_DISABLE_TELEMETRY=1关闭;MAX_SERVE_OTLP_METRICS_ENDPOINT可把遥测发到自己的 OTLP 端点。这些配置影响的是 OpenTelemetry 遥测链路,不影响 Prometheus 对/metrics的抓取。
  • 容器场景下,容器文档确认 MAX 暴露的是 Prometheus 兼容的/metrics端点,指标清单与遥测配置均以上面的 Metrics 参考为准。

参考

  • 指标端点用法与完整指标清单:docs/max/serve/metrics.mdx
  • 环境变量默认值与优先级:docs/max/environment-variables.mdx
  • 容器部署的 Metrics 说明:docs/max/container.mdx

【免费下载链接】mojoThe Modular Platform (includes MAX & Mojo)项目地址: https://gitcode.com/GitHub_Trending/mo/mojo

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询