Hunyuan-OCR-WEBUI性能仪表盘搭建:Prometheus+Grafana实战
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,你将获得以下三个关键能力:
- 可视化洞察:告别黑盒。GPU利用率、显存使用、温度、功耗、乃至CPU、内存、磁盘IO,所有指标都以曲线图的形式呈现。服务状态,一目了然。
- 历史回溯:告别瞬间。
nvidia-smi只能看当下,而监控系统能记录几天甚至几周的数据。你可以回溯到任意时间点,查看当时的性能状况,精准定位问题发生的时间线和原因。 - 主动告警:告别救火。你可以为关键指标设置阈值(比如显存使用率超过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协同工作:
- 数据采集器(Exporters):负责从服务器和GPU收集原始指标。
- 时序数据库(Prometheus):负责定时抓取采集器的数据并存储。
- 可视化看板(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 验证组件运行状态
现在,打开浏览器,访问以下地址进行验证:
-
Prometheus(数据源):
http://你的服务器IP:9090- 在顶部导航栏点击
Status->Targets。你应该看到两个目标(node-exporter和nvidia-gpu-exporter)的状态都是UP。这证明Prometheus已经成功连接到数据采集器。 - 你还可以在
Graph页面输入DCGM_FI_DEV_GPU_UTIL(GPU利用率)等指标名,尝试查询一下,看看是否有数据。
- 在顶部导航栏点击
-
Grafana(看板):
http://你的服务器IP:3000- 首次登录,用户名和密码都是
admin。 - 登录后会要求你修改密码,为了安全,请务必设置一个强密码。
- 首次登录,用户名和密码都是
至此,监控系统的“数据流水线”已经打通:GPU数据被采集 -> 存入Prometheus -> 等待Grafana展示。接下来,我们让Grafana“认识”Prometheus,并导入一个现成的漂亮看板。
4. 配置Grafana:打造专属性能仪表盘
Grafana本身是一个空白的画布,我们需要告诉它数据在哪,并给它一个好看的“模板”来展示数据。
4.1 添加Prometheus数据源
- 登录Grafana后,点击左侧导航栏的齿轮图标(
Configuration),选择Data Sources。 - 点击蓝色的
Add data source按钮。 - 在列表中选择
Prometheus。 - 在配置页面,只需关注一个关键设置:
URL。- 填写:
http://prometheus:9090 - 注意:这里用的是Docker Compose中定义的服务名
prometheus,而不是服务器IP。因为Grafana容器和Prometheus容器在同一个Docker网络(monitor-net)内,它们可以通过服务名直接通信。
- 填写:
- 其他设置保持默认,滚动到页面底部,点击
Save & test。 - 如果看到绿色的 “Data source is working” 提示框,恭喜你,数据源配置成功!
4.2 导入现成的GPU监控看板
从头创建看板很麻烦,好在Grafana社区有大量分享的优秀模板。我们将导入一个专门为NVIDIA GPU设计的看板。
- 点击左侧导航栏的
+号,选择Import。 - 在
Import via grafana.com输入框中,填入看板ID:15111。这是社区中一个非常流行的NVIDIA DCGM Exporter看板。 - 点击
Load。 - 在下一个页面,为看板起个名字,比如
Hunyuan-OCR GPU Monitor,然后在Prometheus下拉框中,选择你刚才创建的数据源。 - 点击
Import。
瞬间,一个功能齐全、图表专业的GPU监控仪表盘就出现在你面前了!这个看板通常包含多个面板,展示:
- GPU Utilization:GPU计算核心利用率曲线。
- GPU Memory:显存使用量和利用率曲线。
- GPU Temperature:GPU温度曲线。
- Power Usage:GPU功耗曲线。
- 每个GPU的单独视图:如果你有多张卡,可以分别查看。
现在,你的Hunyuan-OCR-WEBUI性能仪表盘已经正式上线运行了!
5. 实战观测:让数据说话
工具搭好了,我们来用它实际观测一下Hunyuan-OCR-WEBUI的工作状态。设计一个小实验,看看它在处理任务时,资源是如何被消耗的。
5.1 设计观测实验
- 准备测试素材:
- 简单任务:一张清晰的、背景干净的印刷体文档截图(如PDF转的PNG)。
- 复杂任务:一张手机拍摄的、光线不均、背景杂乱、可能包含手写文字的实体文档照片。
- 清空环境:重启Hunyuan-OCR-WEBUI服务,确保GPU处于空闲或低负载状态。在Grafana看板上观察各项指标是否回落到基线。
- 启动监控:保持Grafana看板页面打开,并注意时间范围设置为“最近5分钟”或“最近1小时”。
- 执行推理:
- 在浏览器中打开Hunyuan-OCR-WEBUI界面(
http://你的服务器IP:7860)。 - 首先上传并处理“简单任务”图片。处理完成后,等待几秒。
- 接着上传并处理“复杂任务”图片。
- 在浏览器中打开Hunyuan-OCR-WEBUI界面(
5.2 分析监控图表
在处理过程中,密切关注Grafana看板上的几个关键图表:
| 观测指标 | 预期现象与解读 |
|---|---|
| GPU利用率 (GPU Utilization) | 上传图片点击“识别”后,曲线会瞬间出现一个尖峰。尖峰的高度反映了单次推理的计算强度,尖峰的宽度反映了推理耗时。复杂图片通常会导致更高、更宽的尖峰。 |
| 显存使用量 (GPU Memory Used) | 服务启动后,会有一个稳定的“底座”占用,这是加载模型到显存的成本。处理图片时,曲线可能会有小幅瞬时上扬,这是因为输入数据(图片张量)需要占用显存。如果进行批量处理,这个上扬会更明显。 |
| 显存利用率 (GPU Memory Utilization) | 这个值如果长期在高位(如>80%),甚至频繁达到100%,是显存瓶颈的明确信号。你需要关注服务稳定性和是否可能发生OOM(内存溢出)。 |
| 功耗与温度 (Power/Temperature) | 随着GPU利用率飙升,功耗和温度也会相应升高。观察其峰值和回落速度,有助于了解散热系统的效能。 |
通过这个简单的对照实验,你就能直观地建立起“用户操作”与“系统资源消耗”之间的关联。下次再遇到性能问题,你第一反应不再是重启服务,而是打开这个仪表盘,看看历史曲线,问题可能就一目了然了。
6. 总结
我们从零开始,完成了一次完整的、生产级的AI服务监控系统搭建。让我们回顾一下核心步骤和收获:
- 理解价值:我们首先明确了监控的意义——它将服务器从黑盒变为白盒,提供了可视化洞察、历史回溯和主动告警的能力,是运维和优化的基石。
- 检查环境:我们确认了Hunyuan-OCR-WEBUI服务与NVIDIA GPU驱动的基础状态,这是所有工作的前提。
- 搭建架构:我们利用Docker Compose,轻松部署了由 Node Exporter(采集服务器指标)、NVIDIA GPU Exporter(采集GPU指标)、Prometheus(存储数据)和 Grafana(展示数据)组成的“监控铁三角”。
- 配置看板:我们在Grafana中添加了Prometheus数据源,并导入了功能强大的社区看板(ID: 15111),瞬间获得了专业的可视化能力。
- 实战观测:我们通过一个对比实验,学会了如何解读监控图表,将抽象的曲线与实际OCR任务关联起来,真正做到了“让数据说话”。
这套系统不仅适用于Hunyuan-OCR-WEBUI,任何基于GPU的AI服务,如Stable Diffusion、LLM大模型等,都可以用同样的方法进行监控。你现在拥有的,是一个可复用、可扩展的通用解决方案。
接下来,你可以探索更多高级功能,比如为关键指标设置告警规则,或者基于历史数据趋势,为你的Hunyuan-OCR服务容量规划提供数据支撑。监控的世界大门已经打开,剩下的就是根据你的业务需求,不断深化和利用它了。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐


所有评论(0)