OpenLLM资源监控面板:Grafana Dashboard配置指南

OpenLLM资源监控面板:Grafana Dashboard配置指南

【免费下载链接】OpenLLM Operating LLMs in production 【免费下载链接】OpenLLM 项目地址: https://gitcode.com/gh_mirrors/op/OpenLLM

痛点直击:LLM生产环境的监控困境

你是否曾在生产环境中遇到这些问题:Llama3服务突然无响应却找不到根源?GPU内存占用率飙升导致推理延迟?Qwen2.5的token生成速度骤降却无法定位瓶颈?作为LLMOps工程师,缺乏专业监控工具就像在迷雾中驾驶——你永远不知道何时会偏离航线。

本文将手把手教你构建OpenLLM专属Grafana监控面板,通过Prometheus+Node Exporter+自定义指标三管齐下,实现从硬件层到应用层的全栈可观测性。读完本文你将获得

  • 5分钟部署的监控基础设施
  • 12个核心指标的实时可视化
  • 8个预制告警规则模板
  • 多模型对比分析能力
  • 性能瓶颈自动诊断流程

监控架构总览

OpenLLM监控系统采用经典的"采集-存储-展示"三层架构,结合LLM推理特性进行深度优化:

mermaid

核心组件说明

  • Node Exporter:采集CPU/内存/GPU等硬件指标
  • vLLM内置指标:通过--enable-prometheus暴露推理性能数据
  • BentoML Stats:提供API调用量、延迟等服务指标
  • 自定义Exporter:扩展token吞吐量、上下文窗口利用率等LLM特有指标

环境准备与部署

前置条件检查

确保你的OpenLLM环境满足以下要求:

  • Python 3.8+
  • OpenLLM v0.4.23+
  • Docker 20.10+
  • NVIDIA驱动525.60.13+(GPU环境)

通过以下命令验证OpenLLM版本:

openllm --version
# 应输出 openllm, version 0.4.23+

监控组件一键部署

使用Docker Compose快速搭建完整监控栈:

# docker-compose.monitor.yml
version: '3.8'
services:
  prometheus:
    image: prom/prometheus:v2.45.0
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus-data:/prometheus
    ports:
      - "9090:9090"
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.retention=15d'

  node-exporter:
    image: prom/node-exporter:v1.6.1
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    ports:
      - "9100:9100"
    command:
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'

  grafana:
    image: grafana/grafana:10.1.5
    volumes:
      - grafana-data:/var/lib/grafana
      - ./grafana-provisioning:/etc/grafana/provisioning
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=openllm-monitor
    ports:
      - "3000:3000"
    depends_on:
      - prometheus

volumes:
  prometheus-data:
  grafana-data:

启动监控栈:

# 后台启动所有组件
docker-compose -f docker-compose.monitor.yml up -d

# 检查服务状态
docker-compose -f docker-compose.monitor.yml ps

OpenLLM指标暴露配置

基础指标启用

修改OpenLLM启动命令,添加监控相关参数:

openllm serve llama3.2:1b \
  --env PROMETHEUS_ENABLED=true \
  --env PROMETHEUS_PORT=8000 \
  --env METRICS_PATH=/metrics \
  --engine-config enable-prometheus=true

参数说明

  • PROMETHEUS_ENABLED:开启BentoML内置指标
  • PROMETHEUS_PORT:指标暴露端口(默认8000)
  • enable-prometheus:启用vLLM推理引擎指标

Prometheus配置

创建prometheus.yml文件,添加以下采集配置:

global:
  scrape_interval: 5s  # LLM场景建议5秒间隔
  evaluation_interval: 5s

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['node-exporter:9100']
  
  - job_name: 'openllm'
    metrics_path: '/metrics'
    static_configs:
      - targets: ['host.docker.internal:8000']  # 宿主机OpenLLM服务
  
  - job_name: 'gpu'
    static_configs:
      - targets: ['nvml-exporter:9400']  # GPU专用 exporter

Grafana仪表盘配置

初始设置

  1. 访问Grafana界面:http://localhost:3000
  2. 登录默认账号(admin/openllm-monitor)
  3. 添加Prometheus数据源:
    • 名称:OpenLLM-Prometheus
    • URL:http://prometheus:9090
    • 保存并测试连接

导入仪表盘模板

通过ID导入3个核心仪表盘:

  1. Node Exporter Full(ID: 1860)- 系统监控
  2. GPU Monitoring(ID: 12006)- GPU监控
  3. LLM Inference Dashboard(下文提供)

自定义OpenLLM仪表盘

创建专用仪表盘,包含以下关键指标面板:

1. 服务健康概览
{
  "panels": [
    {
      "title": "服务状态",
      "type": "stat",
      "targets": [
        {
          "expr": "up{job='openllm'}",
          "legendFormat": "服务状态",
          "refId": "A"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "mappings": [
            {
              "value": "1",
              "op": "=",
              "text": "运行中"
            },
            {
              "value": "0",
              "op": "=",
              "text": "已停止"
            }
          ],
          "thresholds": {
            "steps": [
              {
                "color": "green",
                "value": null
              },
              {
                "color": "red",
                "value": 0.5
              }
            ]
          }
        }
      }
    }
  ]
}
2. 推理性能面板

mermaid

核心指标查询语句:

指标名称PromQL查询单位告警阈值
吞吐量rate(vllm_tokens_generated_total[5m])token/s<10
延迟histogram_quantile(0.95, sum(rate(bentoml_request_duration_seconds_bucket[5m])) by (le))>2
GPU利用率avg(gpu_utilization_percentage) by (instance)%>90
内存占用sum(gpu_memory_used_bytes) / sum(gpu_memory_total_bytes) * 100%>85
3. 多模型对比面板
{
  "title": "模型性能对比",
  "type": "graph",
  "targets": [
    {
      "expr": "rate(vllm_tokens_generated_total{model=~\"llama3.2.*\"}[5m])",
      "legendFormat": "{{model}}",
      "refId": "A"
    },
    {
      "expr": "rate(vllm_tokens_generated_total{model=~\"qwen2.5.*\"}[5m])",
      "legendFormat": "{{model}}",
      "refId": "B"
    }
  ],
  "fieldConfig": {
    "defaults": {
      "unit": "token/s",
      "min": 0
    }
  }
}

关键指标详解与告警设置

硬件层指标

指标名称说明合理范围告警阈值
node_cpu_seconds_totalCPU使用率<70%>85%
node_memory_used_percent内存使用率<60%>80%
gpu_utilization_percentageGPU利用率40-70%>90%持续5分钟
gpu_memory_used_bytesGPU内存占用<75%>85%
node_network_transmit_bytes_total网络发送速率->100MB/s

推理层指标

vLLM提供的核心指标:

# 推理吞吐量
vllm_tokens_generated_total{model="llama3.2:1b"}
vllm_tokens_processed_total{model="llama3.2:1b"}

# 缓存效率
vllm_cache_hit_rate{model="llama3.2:1b"}

# 请求队列
vllm_pending_requests{model="llama3.2:1b"}
vllm_running_requests{model="llama3.2:1b"}

应用层指标

BentoML暴露的服务指标:

# 请求统计
bentoml_service_requests_total{service_name="openllm", status="success"}
bentoml_service_requests_duration_seconds_bucket{service_name="openllm"}

# 并发量
bentoml_service_concurrent_requests{service_name="openllm"}

告警规则配置

在Grafana中创建以下告警:

  1. GPU内存溢出预警

    • 表达式:gpu_memory_used_percent > 85
    • 持续时间:2分钟
    • 通知级别:警告
  2. 推理延迟增加

    • 表达式:increase(bentoml_service_requests_duration_seconds_sum[5m])/increase(bentoml_service_requests_duration_seconds_count[5m]) > 2
    • 持续时间:1分钟
    • 通知级别:严重
  3. 缓存命中率下降

    • 表达式:vllm_cache_hit_rate < 0.7
    • 持续时间:5分钟
    • 通知级别:信息

高级监控特性

性能瓶颈诊断

使用Grafana Explore功能,运行以下诊断查询:

# 找出最慢的10%请求
histogram_quantile(0.9, sum(rate(bentoml_service_requests_duration_seconds_bucket[5m])) by (le))

# 定位GPU等待时间过长的请求
sum(rate(vllm_request_wait_time_seconds_sum[5m])) by (model)

自定义业务指标

通过OpenLLM的analytic.py扩展业务指标:

from bentoml._internal.utils.analytics import track

# 添加自定义指标
def track_token_usage(model_name, input_tokens, output_tokens):
    track({
        "name": "token_usage",
        "model": model_name,
        "input_tokens": input_tokens,
        "output_tokens": output_tokens,
        "timestamp": time.time()
    })

最佳实践与优化建议

监控频率调整

根据模型规模调整采集间隔:

  • 7B以下模型:5秒间隔
  • 13B-70B模型:10秒间隔
  • 70B以上模型:15秒间隔

存储优化

Prometheus数据保留策略:

storage:
  tsdb:
    retention: 7d  # 保留7天数据
    retention_size: 50GB  # 限制存储容量

可视化优化

  1. 使用热图展示GPU利用率时间分布
  2. 为不同模型创建独立变量组
  3. 设置自动刷新(建议10秒)
  4. 关键指标使用Big Value面板突出显示

故障排除指南

常见问题解决

  1. 指标采集失败

    # 检查OpenLLM指标端点
    curl http://localhost:8000/metrics
    
    # 检查容器网络连通性
    docker exec -it prometheus curl http://host.docker.internal:8000/metrics
    
  2. GPU指标缺失

    • 确保nvidia-docker已安装
    • 检查nvml-exporter日志:docker logs nvml-exporter
  3. 仪表盘空白

    • 验证Prometheus targets状态
    • 检查时间范围设置(默认Last 6 hours)

总结与后续计划

本文详细介绍了OpenLLM监控系统的部署、配置和使用,涵盖从硬件到应用的全栈可观测性方案。通过这套监控体系,你可以:

  • 实时掌握LLM服务健康状态
  • 快速定位性能瓶颈
  • 预测资源需求增长
  • 优化模型部署策略

下期预告:《LLM性能调优实战:从P99延迟到GPU利用率提升300%》

🔔 行动指南:立即部署监控系统,将本文收藏以备后续优化,并关注项目更新获取最新仪表盘模板!


附录:完整Grafana仪表盘JSON可在OpenLLM官方仓库的docs/monitoring目录获取,或通过ID 19876导入社区版仪表盘。

【免费下载链接】OpenLLM Operating LLMs in production 【免费下载链接】OpenLLM 项目地址: https://gitcode.com/gh_mirrors/op/OpenLLM

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

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值