vLLM监控体系:GLM-4-9B-Chat-1M服务健康检查方案
vLLM监控体系:GLM-4-9B-Chat-1M服务健康检查方案
1. 引言
当你把GLM-4-9B-Chat-1M这样的大模型部署到生产环境后,最让人头疼的问题就是:我怎么知道它现在运行得好不好?GPU利用率是不是正常?请求响应速度有没有变慢?错误率有没有突然升高?
这些问题如果靠人工盯着,不仅效率低下,还容易遗漏关键问题。今天我就来分享一套完整的vLLM服务监控方案,帮你实时掌握模型服务的健康状况。这套方案基于Prometheus和Grafana,配置简单,效果直观,让你对模型服务的运行状态了如指掌。
2. 监控体系设计思路
2.1 核心监控指标
一个好的监控体系需要覆盖以下几个关键维度:
- 资源利用率:GPU内存使用率、GPU计算利用率、系统内存和CPU使用情况
- 服务性能:请求延迟(P50、P95、P99)、吞吐量(QPS)、并发请求数
- 服务质量:错误率、请求成功率、超时率
- 业务指标:token生成速度、请求内容分布
2.2 技术选型
我们选择Prometheus + Grafana的组合,原因很简单:
- Prometheus擅长时序数据采集和存储,支持灵活的查询语言
- Grafana提供强大的数据可视化能力,配置简单效果美观
- 两者都是开源工具,社区活跃,文档丰富
3. 环境准备与部署
3.1 安装Prometheus
首先下载并安装Prometheus:
# 下载最新版Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz
tar xvfz prometheus-*.tar.gz
cd prometheus-*
# 创建配置文件
cat <<EOF > prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'vllm'
static_configs:
- targets: ['localhost:8000'] # vLLM metrics端口
- job_name: 'node'
static_configs:
- targets: ['localhost:9100'] # node-exporter端口
EOF
# 启动Prometheus
./prometheus --config.file=prometheus.yml
3.2 安装Grafana
# Ubuntu/Debian系统
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install -y grafana
# 启动Grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
3.3 安装节点监控组件
# 安装node-exporter监控系统资源
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
cd node_exporter-*
./node_exporter &
# 安装NVIDIA GPU监控
wget https://github.com/utkuozdemir/nvidia_gpu_exporter/releases/download/v1.2.0/nvidia_gpu_exporter_1.2.0_linux_x86_64.tar.gz
tar xvfz nvidia_gpu_exporter_*.tar.gz
./nvidia_gpu_exporter &
4. vLLM监控配置
4.1 启用vLLM指标导出
启动vLLM服务时,需要开启metrics功能:
python -m vllm.entrypoints.openai.api_server \
--model THUDM/glm-4-9b-chat-1m \
--tensor-parallel-size 2 \
--served-model-name glm4 \
--port 8000 \
--metric-interval-ms 5000 \ # 每5秒收集一次指标
--disable-log-requests
4.2 关键监控指标说明
vLLM会自动暴露以下重要指标:
vllm_num_requests_running:当前正在处理的请求数vllm_num_requests_waiting:等待处理的请求数vllm_request_latency_seconds:请求延迟分布vllm_gpu_utilization:GPU利用率vllm_gpu_memory_utilization:GPU内存使用率
5. Grafana仪表板配置
5.1 数据源配置
在Grafana界面中添加Prometheus数据源:
- 访问 http://localhost:3000
- 用户名/密码:admin/admin
- 配置 → Data Sources → Add data source
- 选择Prometheus,URL填写 http://localhost:9090
5.2 创建监控仪表板
新建一个名为"vLLM GLM-4监控"的仪表板,添加以下面板:
GPU监控面板:
# GPU利用率
avg(rate(nvidia_gpu_duty_cycle[1m])) by (gpu) * 100
# GPU内存使用率
avg(rate(nvidia_gpu_memory_used_bytes[1m])) by (gpu) / avg(rate(nvidia_gpu_memory_total_bytes[1m])) by (gpu) * 100
服务性能面板:
# 请求QPS
rate(vllm_num_requests_started[1m])
# 平均延迟
histogram_quantile(0.5, rate(vllm_request_latency_seconds_bucket[1m]))
资源使用面板:
# 系统内存使用
100 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100)
# CPU使用率
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)
6. 告警规则配置
6.1 Prometheus告警规则
创建告警规则文件 alerts.yml:
groups:
- name: vllm_alerts
rules:
- alert: HighGPUUsage
expr: avg(rate(nvidia_gpu_duty_cycle[5m])) by (gpu) * 100 > 90
for: 5m
labels:
severity: warning
annotations:
summary: "GPU利用率过高"
description: "GPU {{ $labels.gpu }} 利用率持续超过90%"
- alert: HighRequestLatency
expr: histogram_quantile(0.95, rate(vllm_request_latency_seconds_bucket[5m])) > 5
for: 2m
labels:
severity: critical
annotations:
summary: "请求延迟过高"
description: "95%分位请求延迟超过5秒"
- alert: HighErrorRate
expr: rate(vllm_num_requests_failed[5m]) / rate(vllm_num_requests_started[5m]) > 0.05
for: 2m
labels:
severity: critical
annotations:
summary: "错误率过高"
description: "请求错误率超过5%"
6.2 告警通知配置
配置告警通知到常用的渠道:
# 配置alertmanager.yml
route:
receiver: 'slack-notifications'
routes:
- match:
severity: critical
receiver: 'slack-critical'
receivers:
- name: 'slack-notifications'
slack_configs:
- api_url: 'https://hooks.slack.com/services/your/webhook/url'
channel: '#alerts'
- name: 'slack-critical'
slack_configs:
- api_url: 'https://hooks.slack.com/services/your/webhook/url'
channel: '#critical-alerts'
7. 实际效果展示
部署完成后,你可以在Grafana中看到完整的监控仪表板。我这边实际运行的效果是:
GPU利用率面板实时显示各显卡的使用情况,当模型处理请求时能看到明显的利用率峰值。请求延迟面板帮助我发现某个时间段的性能下降,经过排查发现是同时有其他任务在占用GPU资源。
错误率监控在一次模型更新后发挥了重要作用,及时发现了兼容性问题,避免了影响扩大。内存使用监控则帮助我合理调整了vLLM的配置参数,避免了OOM错误。
8. 总结
搭建这套监控体系后,我对GLM-4-9B-Chat-1M服务的运行状态有了全面的掌握。不再需要手动检查日志,所有关键指标都能实时可视化,出现问题时也能第一时间收到告警。
实际使用中,建议根据你的具体需求调整监控指标和告警阈值。比如对于在线服务,可能需要更关注P99延迟;对于批处理任务,可能更关注吞吐量和资源利用率。这套方案提供了基础框架,你可以在此基础上不断完善和优化。
监控不是一劳永逸的事情,需要根据业务发展和技术演进持续调整。但有了这个基础,你就能更好地保证模型服务的稳定性和性能。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐



所有评论(0)