Hunyuan-OCR-WEBUI性能仪表盘搭建:Prometheus+Grafana实战

你有没有想过,自己部署的AI服务,比如腾讯的Hunyuan-OCR-WEBUI,它到底在背后“忙”些什么?当处理速度变慢时,是GPU在偷懒,还是显存不够用了?光靠感觉猜可不行,我们需要一个能“看见”服务器内部状态的仪表盘。

今天,我们不谈复杂的理论,就做一件事:手把手教你搭建一套专业的性能监控系统。这套系统能让你像看汽车仪表盘一样,实时掌握Hunyuan-OCR-WEBUI的GPU使用率、显存消耗、温度等关键指标,并且所有数据都能以漂亮的图表形式保存下来,方便你回溯和分析。

我们将使用业界最流行的组合:Prometheus负责采集和存储数据,Grafana负责将数据变成一目了然的可视化图表。整个过程就像搭积木,跟着步骤走,你就能拥有一个属于自己的、功能强大的性能监控中心。

1. 监控的价值:从“盲人摸象”到“心中有数”

在动手之前,我们先花点时间搞清楚,为什么值得花精力搭建这套监控系统。它能帮你解决哪些实际工作中挠头的问题?

1.1 监控解决的核心痛点

想象几个典型的场景:

  • 场景一:服务间歇性卡顿。用户反馈OCR识别时快时慢,但你登录服务器用nvidia-smi看一眼,GPU利用率并不高。问题可能出在哪里?是某张图片特别大耗尽了显存,还是CPU预处理成了瓶颈?没有历史数据,你只能靠复现和猜测。
  • 场景二:深夜服务崩溃。早上起床发现服务挂了,日志只显示“CUDA out of memory”。是什么任务导致了显存溢出?是哪个时间点开始的?峰值负载是多少?没有监控记录,你无从查起。
  • 场景三:资源规划迷茫。业务量在增长,考虑升级服务器。是加显存,还是换更强的GPU核心?现有的4090D利用率长期只有30%,是不是浪费了?你需要数据来支撑决策,而不是凭感觉。

1.2 监控系统带来的能力跃升

搭建好Prometheus+Grafana,你将获得以下三个关键能力:

  1. 可视化洞察:告别黑盒。GPU利用率、显存使用、温度、功耗、乃至CPU、内存、磁盘IO,所有指标都以曲线图的形式呈现。服务状态,一目了然。
  2. 历史回溯:告别瞬间。nvidia-smi只能看当下,而监控系统能记录几天甚至几周的数据。你可以回溯到任意时间点,查看当时的性能状况,精准定位问题发生的时间线和原因。
  3. 主动告警:告别救火。你可以为关键指标设置阈值(比如显存使用率超过90%),当系统触及红线时,自动通过邮件、钉钉、Slack等渠道发送告警,让你在用户投诉之前就发现问题。

简单说,监控让你从被动的“故障响应者”,转变为主动的“系统健康管理者”。接下来,我们检查一下“施工场地”。

2. 基础环境检查:确保“地基”稳固

我们的监控系统将搭建在Hunyuan-OCR-WEBUI所在的服务器上。在安装任何新软件前,请确保以下基础条件已经满足。

2.1 确认OCR服务与GPU环境

首先,通过SSH连接到你的服务器。我们需要确认两件事:OCR服务在跑,GPU驱动也正常。

第一步,检查Hunyuan-OCR-WEBUI服务状态:

# 查看7860端口(WEBUI默认端口)是否被监听
sudo lsof -i:7860

# 或者查找相关的进程
ps aux | grep -E “(hunyuan|ocr|webui)”

如果能看到Python进程在运行,并且监听7860端口,说明OCR服务是正常的。

第二步,也是更关键的一步,检查GPU驱动:

nvidia-smi

这条命令是你的“GPU健康检查单”。如果执行成功,你会看到一个包含如下信息的表格:

  • GPU型号:例如 NVIDIA GeForce RTX 4090 D
  • 驱动与CUDA版本:在表格顶部。
  • 实时状态:包括GPU利用率、显存使用情况、当前进程等。

如果命令报错 command not found,说明NVIDIA驱动没有正确安装。这是所有后续工作的绝对前提,必须首先解决。

2.2 安装Docker与Docker Compose

我们将使用Docker容器来部署监控组件,这能避免复杂的依赖和环境冲突问题。如果你的系统还没有安装Docker,可以参照以下步骤(以Ubuntu为例):

# 1. 更新软件包索引并安装必要工具
sudo apt-get update
sudo apt-get install ca-certificates curl

# 2. 添加Docker官方GPG密钥
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 3. 添加Docker软件源
echo \
  “deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo “$VERSION_CODENAME”) stable” | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 4. 安装Docker引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 5. 验证安装(可选,拉取一个测试镜像并运行)
sudo docker run hello-world

安装好Docker后,Docker Compose(用于编排多容器应用)通常也已包含在内。可以通过 docker compose version 命令来验证。

环境准备就绪,现在可以开始搭建我们监控系统的三大核心部件了。

3. 核心组件部署:搭建监控“铁三角”

我们的监控架构包含三个核心角色,它们通过Docker Compose协同工作:

  1. 数据采集器(Exporters):负责从服务器和GPU收集原始指标。
  2. 时序数据库(Prometheus):负责定时抓取采集器的数据并存储。
  3. 可视化看板(Grafana):负责从数据库中查询数据并绘制成图表。

让我们一步步把它们部署起来。

3.1 创建项目目录与配置文件

首先,创建一个专门的工作目录,所有配置文件都放在这里。

mkdir ~/hunyuan-monitor && cd ~/hunyuan-monitor

第一步,创建 docker-compose.yml 文件: 这个文件定义了所有要运行的容器及其关系。

version: ‘3.8’

services:
  # Prometheus - 时序数据库与抓取服务器
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml  # 挂载配置文件
      - prometheus_data:/prometheus # 数据持久化卷
    command:
      - ‘--config.file=/etc/prometheus/prometheus.yml’
      - ‘--storage.tsdb.path=/prometheus’
      - ‘--storage.tsdb.retention.time=7d’ # 数据保留7天,可按需调整
    restart: unless-stopped
    ports:
      - “9090:9090” # 将容器9090端口映射到主机9090端口
    networks:
      - monitor-net

  # Grafana - 可视化看板
  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    volumes:
      - grafana_data:/var/lib/grafana # 保存Grafana配置、看板等
    restart: unless-stopped
    ports:
      - “3000:3000” # 将容器3000端口映射到主机3000端口
    networks:
      - monitor-net

  # Node Exporter - 采集服务器基础指标(CPU、内存、磁盘、网络等)
  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - ‘--path.procfs=/host/proc’
      - ‘--path.rootfs=/rootfs’
      - ‘--path.sysfs=/host/sys’
    restart: unless-stopped
    networks:
      - monitor-net

  # NVIDIA GPU Exporter - 采集GPU指标(核心组件!)
  nvidia-gpu-exporter:
    image: nvidia/dcgm-exporter:3.2.6-3.1.5-ubuntu20.04
    container_name: nvidia-gpu-exporter
    restart: unless-stopped
    privileged: true # 需要特权模式访问GPU设备
    environment:
      - NVIDIA_VISIBLE_DEVICES=all # 暴露所有GPU给容器
    volumes:
      - /run/nvidia:/run/nvidia:shared # 挂载NVIDIA运行时目录
    networks:
      - monitor-net

networks:
  monitor-net: # 创建一个独立的网络,让容器间可以通信
    driver: bridge

volumes:
  prometheus_data: # 命名卷,用于持久化Prometheus数据
  grafana_data:    # 命名卷,用于持久化Grafana数据

第二步,创建 prometheus.yml 文件: 这个文件告诉Prometheus去哪里抓取数据。

global:
  scrape_interval: 15s # 每15秒抓取一次数据
  evaluation_interval: 15s # 每15秒评估一次告警规则

scrape_configs:
  # 抓取服务器基础指标
  - job_name: ‘node-exporter’
    static_configs:
      - targets: [‘node-exporter:9100’] # 使用Docker服务名,端口9100

  # 抓取GPU指标
  - job_name: ‘nvidia-gpu-exporter’
    static_configs:
      - targets: [‘nvidia-gpu-exporter:9400’] # 使用Docker服务名,端口9400

3.2 一键启动监控栈

配置文件就绪后,启动服务就变得异常简单。在 ~/hunyuan-monitor 目录下,执行:

sudo docker compose up -d

-d 参数表示在后台运行。这条命令会依次拉取镜像(如果本地没有)并启动四个容器。你可以用以下命令查看容器状态:

sudo docker compose ps

当所有容器的状态(STATE)都显示为 Up 时,说明监控栈已经成功启动。

3.3 验证组件运行状态

现在,打开浏览器,访问以下地址进行验证:

  1. Prometheus(数据源)http://你的服务器IP:9090

    • 在顶部导航栏点击 Status -> Targets。你应该看到两个目标(node-exporternvidia-gpu-exporter)的状态都是 UP。这证明Prometheus已经成功连接到数据采集器。
    • 你还可以在 Graph 页面输入 DCGM_FI_DEV_GPU_UTIL(GPU利用率)等指标名,尝试查询一下,看看是否有数据。
  2. Grafana(看板)http://你的服务器IP:3000

    • 首次登录,用户名和密码都是 admin
    • 登录后会要求你修改密码,为了安全,请务必设置一个强密码。

至此,监控系统的“数据流水线”已经打通:GPU数据被采集 -> 存入Prometheus -> 等待Grafana展示。接下来,我们让Grafana“认识”Prometheus,并导入一个现成的漂亮看板。

4. 配置Grafana:打造专属性能仪表盘

Grafana本身是一个空白的画布,我们需要告诉它数据在哪,并给它一个好看的“模板”来展示数据。

4.1 添加Prometheus数据源

  1. 登录Grafana后,点击左侧导航栏的齿轮图标(Configuration),选择 Data Sources
  2. 点击蓝色的 Add data source 按钮。
  3. 在列表中选择 Prometheus
  4. 在配置页面,只需关注一个关键设置:URL
    • 填写:http://prometheus:9090
    • 注意:这里用的是Docker Compose中定义的服务名 prometheus,而不是服务器IP。因为Grafana容器和Prometheus容器在同一个Docker网络(monitor-net)内,它们可以通过服务名直接通信。
  5. 其他设置保持默认,滚动到页面底部,点击 Save & test
  6. 如果看到绿色的 “Data source is working” 提示框,恭喜你,数据源配置成功!

4.2 导入现成的GPU监控看板

从头创建看板很麻烦,好在Grafana社区有大量分享的优秀模板。我们将导入一个专门为NVIDIA GPU设计的看板。

  1. 点击左侧导航栏的 + 号,选择 Import
  2. Import via grafana.com 输入框中,填入看板ID:15111。这是社区中一个非常流行的NVIDIA DCGM Exporter看板。
  3. 点击 Load
  4. 在下一个页面,为看板起个名字,比如 Hunyuan-OCR GPU Monitor,然后在 Prometheus 下拉框中,选择你刚才创建的数据源。
  5. 点击 Import

瞬间,一个功能齐全、图表专业的GPU监控仪表盘就出现在你面前了!这个看板通常包含多个面板,展示:

  • GPU Utilization:GPU计算核心利用率曲线。
  • GPU Memory:显存使用量和利用率曲线。
  • GPU Temperature:GPU温度曲线。
  • Power Usage:GPU功耗曲线。
  • 每个GPU的单独视图:如果你有多张卡,可以分别查看。

现在,你的Hunyuan-OCR-WEBUI性能仪表盘已经正式上线运行了!

5. 实战观测:让数据说话

工具搭好了,我们来用它实际观测一下Hunyuan-OCR-WEBUI的工作状态。设计一个小实验,看看它在处理任务时,资源是如何被消耗的。

5.1 设计观测实验

  1. 准备测试素材
    • 简单任务:一张清晰的、背景干净的印刷体文档截图(如PDF转的PNG)。
    • 复杂任务:一张手机拍摄的、光线不均、背景杂乱、可能包含手写文字的实体文档照片。
  2. 清空环境:重启Hunyuan-OCR-WEBUI服务,确保GPU处于空闲或低负载状态。在Grafana看板上观察各项指标是否回落到基线。
  3. 启动监控:保持Grafana看板页面打开,并注意时间范围设置为“最近5分钟”或“最近1小时”。
  4. 执行推理
    • 在浏览器中打开Hunyuan-OCR-WEBUI界面(http://你的服务器IP:7860)。
    • 首先上传并处理“简单任务”图片。处理完成后,等待几秒。
    • 接着上传并处理“复杂任务”图片。

5.2 分析监控图表

在处理过程中,密切关注Grafana看板上的几个关键图表:

观测指标 预期现象与解读
GPU利用率 (GPU Utilization) 上传图片点击“识别”后,曲线会瞬间出现一个尖峰。尖峰的高度反映了单次推理的计算强度,尖峰的宽度反映了推理耗时。复杂图片通常会导致更高、更宽的尖峰。
显存使用量 (GPU Memory Used) 服务启动后,会有一个稳定的“底座”占用,这是加载模型到显存的成本。处理图片时,曲线可能会有小幅瞬时上扬,这是因为输入数据(图片张量)需要占用显存。如果进行批量处理,这个上扬会更明显。
显存利用率 (GPU Memory Utilization) 这个值如果长期在高位(如>80%),甚至频繁达到100%,是显存瓶颈的明确信号。你需要关注服务稳定性和是否可能发生OOM(内存溢出)。
功耗与温度 (Power/Temperature) 随着GPU利用率飙升,功耗和温度也会相应升高。观察其峰值和回落速度,有助于了解散热系统的效能。

通过这个简单的对照实验,你就能直观地建立起“用户操作”与“系统资源消耗”之间的关联。下次再遇到性能问题,你第一反应不再是重启服务,而是打开这个仪表盘,看看历史曲线,问题可能就一目了然了。

6. 总结

我们从零开始,完成了一次完整的、生产级的AI服务监控系统搭建。让我们回顾一下核心步骤和收获:

  1. 理解价值:我们首先明确了监控的意义——它将服务器从黑盒变为白盒,提供了可视化洞察、历史回溯和主动告警的能力,是运维和优化的基石。
  2. 检查环境:我们确认了Hunyuan-OCR-WEBUI服务与NVIDIA GPU驱动的基础状态,这是所有工作的前提。
  3. 搭建架构:我们利用Docker Compose,轻松部署了由 Node Exporter(采集服务器指标)、NVIDIA GPU Exporter(采集GPU指标)、Prometheus(存储数据)和 Grafana(展示数据)组成的“监控铁三角”。
  4. 配置看板:我们在Grafana中添加了Prometheus数据源,并导入了功能强大的社区看板(ID: 15111),瞬间获得了专业的可视化能力。
  5. 实战观测:我们通过一个对比实验,学会了如何解读监控图表,将抽象的曲线与实际OCR任务关联起来,真正做到了“让数据说话”。

这套系统不仅适用于Hunyuan-OCR-WEBUI,任何基于GPU的AI服务,如Stable Diffusion、LLM大模型等,都可以用同样的方法进行监控。你现在拥有的,是一个可复用、可扩展的通用解决方案。

接下来,你可以探索更多高级功能,比如为关键指标设置告警规则,或者基于历史数据趋势,为你的Hunyuan-OCR服务容量规划提供数据支撑。监控的世界大门已经打开,剩下的就是根据你的业务需求,不断深化和利用它了。


获取更多AI镜像

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

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐