通义千问1.5-1.8B-Chat-GPTQ-Int4 vLLM监控实践:Prometheus+Grafana指标采集教程

1. 监控系统概述与价值

在实际的AI模型部署中,仅仅让模型运行起来是远远不够的。我们需要实时了解模型的运行状态、性能表现和资源使用情况,这样才能确保服务的稳定性和可靠性。这就是为什么我们需要为通义千问1.5-1.8B-Chat-GPTQ-Int4模型搭建完整的监控系统。

监控系统能帮你解决什么问题?

  • 实时掌握模型状态:知道模型是否正常运行,响应速度如何
  • 快速定位问题:当服务出现异常时,能快速找到问题根源
  • 优化资源配置:根据实际使用情况调整服务器资源,避免浪费
  • 提升用户体验:确保用户获得稳定、快速的服务响应

本教程将手把手教你如何使用Prometheus和Grafana来监控基于vLLM部署的通义千问模型,让你对自己的AI服务了如指掌。

2. 环境准备与组件安装

在开始监控配置之前,我们需要先准备好相关组件。假设你已经按照之前的教程成功部署了通义千问模型和chainlit前端。

2.1 安装Prometheus

Prometheus是一个开源的监控系统,负责采集和存储监控数据。

# 下载Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.47.2/prometheus-2.47.2.linux-amd64.tar.gz

# 解压文件
tar xvfz prometheus-2.47.2.linux-amd64.tar.gz
cd prometheus-2.47.2.linux-amd64

# 创建配置文件目录
sudo mkdir -p /etc/prometheus
sudo mkdir -p /var/lib/prometheus

# 复制配置文件
sudo cp prometheus.yml /etc/prometheus/
sudo cp promtool /usr/local/bin/
sudo cp prometheus /usr/local/bin/

# 创建系统服务
sudo tee /etc/systemd/system/prometheus.service <<EOF
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target
EOF

# 创建专用用户
sudo useradd --no-create-home --shell /bin/false prometheus

# 设置目录权限
sudo chown -R prometheus:prometheus /etc/prometheus
sudo chown -R prometheus:prometheus /var/lib/prometheus

# 启动服务
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

2.2 安装Grafana

Grafana是一个数据可视化平台,用于展示Prometheus采集的监控数据。

# 安装Grafana
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

# 检查服务状态
sudo systemctl status grafana-server

2.3 安装Node Exporter

Node Exporter用于采集服务器本身的监控数据,如CPU、内存、磁盘使用情况等。

# 下载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-1.6.1.linux-amd64.tar.gz
sudo cp node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/

# 创建系统服务
sudo tee /etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
EOF

# 创建专用用户
sudo useradd --no-create-home --shell /bin/false node_exporter

# 启动服务
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter

3. vLLM监控指标配置

vLLM本身提供了丰富的监控指标,我们需要配置Prometheus来采集这些数据。

3.1 配置Prometheus采集vLLM指标

首先修改Prometheus的配置文件,添加vLLM的监控目标:

# 编辑Prometheus配置文件
sudo nano /etc/prometheus/prometheus.yml

# 在scrape_configs部分添加以下配置
scrape_configs:
  - job_name: 'vllm'
    static_configs:
      - targets: ['localhost:8000']  # vLLM默认监控端口
    metrics_path: '/metrics'
    
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']  # Node Exporter端口

  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']  # Prometheus自身监控

重启Prometheus使配置生效:

sudo systemctl restart prometheus

3.2 验证指标采集

检查Prometheus是否成功采集到vLLM的监控指标:

# 查看vLLM指标端点
curl http://localhost:8000/metrics

# 检查Prometheus目标状态
# 访问 http://你的服务器IP:9090/targets
# 应该能看到vllm、node、prometheus三个目标都是UP状态

vLLM提供的关键监控指标包括:

  • vllm:request_latency_seconds:请求延迟分布
  • vllm:request_throughput:请求吞吐量
  • vllm:gpu_utilization:GPU使用率
  • vllm:gpu_memory_usage:GPU内存使用情况
  • vllm:num_requests:当前处理中的请求数

4. Grafana仪表板配置

现在我们来配置Grafana,创建直观的监控仪表板。

4.1 初始配置

首先访问Grafana界面:

  1. 打开浏览器,访问 http://你的服务器IP:3000
  2. 默认用户名/密码:admin/admin
  3. 首次登录后会要求修改密码

添加Prometheus数据源:

  1. 点击左侧配置图标 → Data sources → Add data source
  2. 选择Prometheus
  3. URL填写:http://localhost:9090
  4. 点击Save & Test,应该显示"Data source is working"

4.2 创建vLLM监控仪表板

我们将创建一个完整的监控仪表板,包含以下关键指标:

4.2.1 创建新的仪表板

点击左侧"+"图标 → Create → Dashboard → Add new panel

4.2.2 添加关键监控面板

GPU使用率面板:

  • 标题:GPU使用率监控
  • 查询vllm:gpu_utilization
  • 可视化:Time series
  • 单位:Percent (0-100)

请求延迟面板:

  • 标题:请求延迟分布
  • 查询histogram_quantile(0.95, sum(rate(vllm:request_latency_seconds_bucket[5m])) by (le))
  • 可视化:Time series
  • 单位:Seconds

吞吐量监控面板:

  • 标题:请求吞吐量
  • 查询rate(vllm:request_throughput[5m])
  • 可视化:Time series
  • 单位:Requests/second

内存使用面板:

  • 标题:GPU内存使用
  • 查询vllm:gpu_memory_usage
  • 可视化:Time series
  • 单位:Bytes

4.3 导入预置仪表板模板

如果你觉得手动创建太麻烦,也可以直接导入预置的仪表板模板:

  1. 点击左侧"+" → Import
  2. 输入仪表板ID:18602(vLLM官方监控模板)
  3. 选择Prometheus数据源
  4. 点击Import

或者使用这个简化的JSON模板:

{
  "dashboard": {
    "title": "vLLM监控仪表板",
    "panels": [
      {
        "title": "GPU使用率",
        "type": "graph",
        "targets": [{"expr": "vllm:gpu_utilization"}]
      },
      {
        "title": "请求延迟(P95)",
        "type": "graph", 
        "targets": [{"expr": "histogram_quantile(0.95, sum(rate(vllm:request_latency_seconds_bucket[5m])) by (le))"}]
      }
    ]
  }
}

5. 告警规则配置

监控不仅要看历史数据,还要能及时发现问题。我们来配置一些关键的告警规则。

5.1 配置Prometheus告警规则

创建告警规则文件:

# 创建告警规则目录
sudo mkdir /etc/prometheus/alerts
sudo tee /etc/prometheus/alerts/vllm-alerts.yml <<EOF
groups:
- name: vllm-alerts
  rules:
  - alert: HighGPUUsage
    expr: vllm:gpu_utilization > 90
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "GPU使用率过高"
      description: "GPU使用率持续超过90%,当前值为 {{ $value }}%"
  
  - alert: HighRequestLatency
    expr: histogram_quantile(0.95, sum(rate(vllm:request_latency_seconds_bucket[5m])) by (le)) > 5
    for: 2m
    labels:
      severity: warning
    annotations:
      summary: "请求延迟过高"
      description: "95%分位请求延迟超过5秒,当前值为 {{ $value }}秒"
  
  - alert: ServiceDown
    expr: up{job="vllm"} == 0
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "vLLM服务宕机"
      description: "vLLM服务已停止响应"
EOF

更新Prometheus配置,启用告警规则:

# 在prometheus.yml中添加
rule_files:
  - "alerts/vllm-alerts.yml"

重启Prometheus:

sudo systemctl restart prometheus

5.2 配置Grafana告警通知

你还可以在Grafana中配置告警通知渠道:

  1. 进入Alerting → Notification channels
  2. 添加需要的通知方式(Email、Slack、Webhook等)
  3. 在仪表板面板中设置告警规则

6. 实际监控效果演示

完成以上配置后,你的监控系统就已经 ready了。让我们来看看实际的监控效果。

6.1 正常运行时监控视图

当通义千问模型正常运行时,你应该能在Grafana中看到:

  • GPU使用率:根据请求量动态变化,通常在20-70%之间波动
  • 请求延迟:大部分请求应该在1-3秒内完成
  • 吞吐量:根据模型性能和硬件配置,通常能处理5-20请求/秒
  • 内存使用:保持相对稳定,不会频繁大幅波动

6.2 异常情况识别

监控系统能帮你快速识别以下异常情况:

性能瓶颈识别

  • 当GPU使用率持续高于90%,说明需要优化模型或升级硬件
  • 请求延迟突然升高,可能表示有复杂请求或系统资源不足

服务异常检测

  • 服务完全无响应时,相应指标会变为0
  • 内存泄漏时,内存使用量会持续增长不释放

6.3 长期趋势分析

通过长期监控,你还可以:

  • 分析使用模式:了解高峰使用时段,合理规划资源
  • 容量规划:根据增长趋势提前扩容
  • 优化效果验证:对比优化前后的性能指标变化

7. 总结与最佳实践

通过本教程,你已经成功为通义千问1.5-1.8B-Chat-GPTQ-Int4模型搭建了完整的监控系统。现在你能够:

  • ✅ 实时监控模型运行状态
  • ✅ 快速识别性能问题
  • ✅ 基于数据做出优化决策
  • ✅ 确保服务高可用性

监控系统维护建议

  1. 定期检查:每周检查一次监控系统本身是否正常运行
  2. 数据清理:设置Prometheus的数据保留策略,避免磁盘写满
  3. 告警优化:根据实际运行情况调整告警阈值,避免误报
  4. 备份配置:定期备份Grafana仪表板和Prometheus配置

下一步学习建议

  • 学习使用Grafana的Alerting功能实现更复杂的告警规则
  • 探索Prometheus的Recording Rules优化查询性能
  • 考虑使用Grafana Loki收集和分析日志数据
  • 学习使用Grafana Tempo进行分布式追踪

监控是一个持续优化的过程。随着你对系统了解的深入,不断调整和优化监控策略,让你的通义千问模型服务更加稳定可靠。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐