DeEAR镜像部署教程配合PrometheusGrafana实现GPU利用率/请求延迟/错误率监控1. 引言为什么需要监控你的AI服务想象一下你刚部署好一个很酷的AI服务比如DeEAR语音情感识别系统。用户开始上传音频文件系统也正常返回了情感分析结果。一切看起来都很美好。但几天后你开始收到用户反馈“系统响应好慢啊”、“有时候会报错”、“晚上高峰期根本用不了”。你一头雾水因为从你的角度看服务一直在运行没有崩溃。问题出在哪里这就是监控的价值所在。你看不到GPU是不是快被占满了每个请求到底花了多长时间处理有多少请求失败了为什么失败系统在什么时间段压力最大没有监控你的AI服务就像在“盲飞”——你不知道引擎状态、不知道飞行速度、不知道有没有故障。今天我就带你一步步为DeEAR语音情感识别系统搭建一套完整的监控方案让你对自己的服务了如指掌。学习目标学会部署DeEAR语音情感识别服务配置Prometheus收集系统指标使用Grafana创建直观的监控仪表盘监控GPU利用率、请求延迟、错误率等关键指标前置知识只需要基本的Linux命令行操作经验不需要深入了解Prometheus或Grafana我会带你从零开始。2. 第一步部署DeEAR语音情感识别服务在开始监控之前我们得先把要监控的服务跑起来。DeEAR是一个基于wav2vec2的深度语音情感表达分析系统它能分析语音的三个维度唤醒度、自然度和韵律。2.1 环境准备与快速启动首先确保你的服务器有足够的资源GPU内存至少4GB处理语音模型需要GPU加速系统内存至少8GB磁盘空间至少10GB空闲空间如果你用的是云服务器选择带有NVIDIA GPU的实例。本地的话确保安装了NVIDIA驱动和CUDA。启动DeEAR服务非常简单官方提供了两种方式方式一使用启动脚本推荐这是最简单的方法只需要一条命令/root/DeEAR_Base/start.sh这个脚本会自动设置环境变量、检查依赖然后启动服务。启动后你会看到类似这样的输出INFO: Started server process [12345] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:7860 (Press CTRLC to quit)方式二直接运行Python应用如果你想更清楚地了解启动过程可以直接运行python /root/DeEAR_Base/app.py两种方式效果一样都会在7860端口启动服务。2.2 验证服务是否正常运行服务启动后打开浏览器访问本地访问http://localhost:7860远程访问http://你的服务器IP:7860你会看到一个简洁的Web界面这就是DeEAR的操作面板。可以上传一个WAV或MP3格式的音频文件试试看。我上传了一段自己说今天天气真好的录音系统分析结果是唤醒度低唤醒平静自然度自然韵律平淡这很符合我平静的说话状态。你可以试试用不同的语气说话看看分析结果有什么变化。2.3 服务API接口说明除了Web界面DeEAR还提供了API接口这对监控很重要。服务启动后你可以通过HTTP请求调用curl -X POST http://localhost:7860/analyze \ -H Content-Type: multipart/form-data \ -F audio_file/path/to/your/audio.wavAPI会返回JSON格式的结果{ arousal: low, nature: natural, prosody: flat, processing_time: 1.23 }注意最后的processing_time字段它记录了处理这个请求花了多少秒。这个数据对我们监控请求延迟非常有用。3. 第二步部署Prometheus收集监控数据现在DeEAR服务已经跑起来了接下来我们要部署Prometheus来收集各种监控指标。Prometheus就像是一个数据收集器它会定期从各个服务抓取数据。3.1 安装和配置Prometheus首先下载Prometheus的最新版本# 创建Prometheus工作目录 mkdir -p /opt/prometheus cd /opt/prometheus # 下载Prometheus请访问官网获取最新版本链接 wget https://github.com/prometheus/prometheus/releases/download/v2.51.0/prometheus-2.51.0.linux-amd64.tar.gz # 解压 tar xvf prometheus-2.51.0.linux-amd64.tar.gz cd prometheus-2.51.0.linux-amd64接下来创建Prometheus的配置文件prometheus.ymlglobal: scrape_interval: 15s # 每15秒收集一次数据 evaluation_interval: 15s # 告警规则配置先留空后续可以添加 rule_files: # - alert_rules.yml # 抓取配置告诉Prometheus从哪里收集数据 scrape_configs: # 监控Prometheus自己 - job_name: prometheus static_configs: - targets: [localhost:9090] labels: service: prometheus-monitoring # 监控DeEAR服务 - job_name: deear-service static_configs: - targets: [localhost:7860] labels: service: deear-emotion-recognition app: deear # 监控节点服务器本身 - job_name: node static_configs: - targets: [localhost:9100] labels: service: node-exporter instance: deear-server这个配置做了三件事监控Prometheus自己端口9090监控DeEAR服务端口7860监控服务器节点需要node_exporter端口91003.2 安装node_exporter监控服务器指标node_exporter是专门收集服务器硬件和操作系统指标的组件。安装步骤# 下载node_exporter wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz # 解压 tar xvf node_exporter-1.7.0.linux-amd64.tar.gz cd node_exporter-1.7.0.linux-amd64 # 启动node_exporter在后台运行 ./node_exporter 验证node_exporter是否正常运行curl http://localhost:9100/metrics你应该会看到一大堆以node_开头的指标比如node_cpu_seconds_total、node_memory_MemTotal_bytes等。3.3 为DeEAR服务添加监控端点默认情况下DeEAR服务没有提供Prometheus格式的指标。我们需要稍微修改一下代码添加一个/metrics端点。在/root/DeEAR_Base/app.py文件中添加以下代码from prometheus_client import Counter, Histogram, Gauge, generate_latest, CONTENT_TYPE_LATEST from prometheus_client import REGISTRY import time # 定义监控指标 REQUEST_COUNT Counter(deear_requests_total, Total number of requests) REQUEST_LATENCY Histogram(deear_request_latency_seconds, Request latency in seconds) REQUEST_ERRORS Counter(deear_request_errors_total, Total number of failed requests) GPU_UTILIZATION Gauge(deear_gpu_utilization_percent, GPU utilization percentage) GPU_MEMORY_USED Gauge(deear_gpu_memory_used_mb, GPU memory used in MB) GPU_MEMORY_TOTAL Gauge(deear_gpu_memory_total_mb, Total GPU memory in MB) # 添加/metrics端点 app.get(/metrics) def metrics(): # 获取GPU信息如果有的话 try: import torch if torch.cuda.is_available(): gpu_util torch.cuda.utilization(0) if hasattr(torch.cuda, utilization) else 0 gpu_mem_used torch.cuda.memory_allocated(0) / 1024 / 1024 # 转换为MB gpu_mem_total torch.cuda.get_device_properties(0).total_memory / 1024 / 1024 GPU_UTILIZATION.set(gpu_util) GPU_MEMORY_USED.set(gpu_mem_used) GPU_MEMORY_TOTAL.set(gpu_mem_total) except: pass return Response(generate_latest(REGISTRY), media_typeCONTENT_TYPE_LATEST) # 修改原有的analyze接口添加监控 app.post(/analyze) async def analyze_emotion(audio_file: UploadFile File(...)): start_time time.time() REQUEST_COUNT.inc() try: # 原有的处理逻辑... processing_time time.time() - start_time REQUEST_LATENCY.observe(processing_time) return { arousal: arousal_level, nature: nature_level, prosody: prosody_level, processing_time: round(processing_time, 2) } except Exception as e: REQUEST_ERRORS.inc() raise e修改后重启DeEAR服务然后访问http://localhost:7860/metrics你应该能看到Prometheus格式的监控指标了。3.4 启动Prometheus服务现在可以启动Prometheus了# 进入Prometheus目录 cd /opt/prometheus/prometheus-2.51.0.linux-amd64 # 启动Prometheus在后台运行 ./prometheus --config.fileprometheus.yml 验证Prometheus是否正常运行curl http://localhost:9090打开浏览器访问http://你的服务器IP:9090你应该能看到Prometheus的Web界面。4. 第三步使用Grafana创建监控仪表盘Prometheus收集了数据但它的界面比较技术化不适合日常查看。Grafana可以把这些数据变成漂亮的图表和仪表盘。4.1 安装和启动Grafana# 添加Grafana的APT源Ubuntu/Debian系统 sudo apt-get install -y software-properties-common sudo add-apt-repository deb https://packages.grafana.com/oss/deb stable main wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - # 安装Grafana sudo apt-get update sudo apt-get install -y grafana # 启动Grafana服务 sudo systemctl start grafana-server sudo systemctl enable grafana-server # 设置开机自启对于CentOS/RHEL系统# 添加Grafana的YUM源 cat EOF | sudo tee /etc/yum.repos.d/grafana.repo [grafana] namegrafana baseurlhttps://packages.grafana.com/oss/rpm repo_gpgcheck1 enabled1 gpgcheck1 gpgkeyhttps://packages.grafana.com/gpg.key sslverify1 sslcacert/etc/pki/tls/certs/ca-bundle.crt EOF # 安装并启动 sudo yum install -y grafana sudo systemctl start grafana-server sudo systemctl enable grafana-serverGrafana默认运行在3000端口访问http://你的服务器IP:3000初始用户名和密码都是admin。4.2 配置Grafana连接Prometheus登录Grafana后按照以下步骤配置数据源点击左侧菜单的Configuration齿轮图标→Data Sources点击Add data source按钮选择Prometheus在URL字段输入http://localhost:9090其他保持默认点击Save Test如果看到Data source is working的提示说明配置成功了。4.3 创建DeEAR监控仪表盘现在我们来创建第一个监控仪表盘。点击左侧菜单的Dashboards→New dashboard→Add visualization。面板1请求数量监控数据源选择Prometheus查询语句rate(deear_requests_total[5m])图表类型Stat统计面板标题请求速率次/秒这个面板显示每秒处理的请求数量让你知道服务的繁忙程度。面板2请求延迟监控查询语句histogram_quantile(0.95, rate(deear_request_latency_seconds_bucket[5m]))图表类型Time series时间序列标题95%请求延迟秒设置Y轴单位s秒这个显示95%的请求在多少秒内完成。如果这个值突然升高说明系统变慢了。面板3错误率监控查询语句rate(deear_request_errors_total[5m]) / rate(deear_requests_total[5m])图表类型Gauge仪表盘标题错误率设置显示为百分比错误率应该保持在很低的水平比如1%。如果突然升高说明系统可能有问题。面板4GPU利用率监控查询语句deear_gpu_utilization_percent图表类型Time series标题GPU利用率%设置Y轴范围0-100GPU利用率告诉你显卡有多忙。如果持续接近100%可能需要优化代码或者升级硬件。面板5GPU内存使用监控查询语句deear_gpu_memory_used_mb图表类型Time series标题GPU内存使用MB这个显示模型使用了多少显存。如果接近显卡的总显存可能会出问题。面板6服务器CPU和内存监控CPU查询rate(node_cpu_seconds_total{modeidle}[1m])内存查询node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes图表类型Time series标题系统资源使用率这些是服务器本身的资源使用情况。把所有面板排列好你的仪表盘大概长这样-------------------------------------- | 请求速率 | 错误率 | | (次/秒) | (%) | -------------------------------------- | 95%请求延迟 | GPU利用率 | | (秒) | (%) | -------------------------------------- | GPU内存使用 | 系统CPU使用率 | | (MB) | (%) | -------------------------------------- | 系统内存使用率 | | | (%) | | --------------------------------------点击保存给仪表盘起个名字比如DeEAR服务监控看板。4.4 设置告警规则可选但推荐监控不仅要看还要能在出问题时及时通知你。Grafana可以设置告警在任意面板上点击标题 →Edit切换到Alert标签页点击Create alert rule from this panel设置条件比如当错误率 5% 持续5分钟时当95%请求延迟 3秒 持续2分钟时当GPU利用率 90% 持续10分钟时配置通知渠道可以集成邮件、Slack、钉钉、企业微信等5. 第四步实际监控效果与问题排查现在整套监控系统已经搭建完成让我们看看它能帮我们发现什么问题。5.1 模拟负载测试观察监控变化为了看到监控的效果我们可以模拟一些请求# 使用abApache Benchmark工具模拟并发请求 # 如果没有安装sudo apt-get install apache2-utils # 模拟10个并发总共100个请求 ab -n 100 -c 10 -T multipart/form-data; boundary----WebKitFormBoundary7MA4YWxkTrZu0gW -p test_data.txt http://localhost:7860/analyzetest_data.txt文件内容模拟上传文件------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; nameaudio_file; filenametest.wav Content-Type: audio/wav 这里可以是空的ab会随机生成 ------WebKitFormBoundary7MA4YWxkTrZu0gW--运行测试后立即刷新Grafana仪表盘你会看到请求速率突然上升GPU利用率可能达到高峰请求延迟可能会增加GPU内存使用保持相对稳定5.2 常见问题与监控指标对应关系通过监控仪表盘你可以快速定位问题问题1用户反馈系统很慢查看指标95%请求延迟可能原因如果GPU利用率很高 → GPU成为瓶颈考虑优化模型或升级硬件如果GPU利用率正常但延迟高 → 可能是代码逻辑问题或IO瓶颈如果系统CPU/内存很高 → 服务器资源不足问题2用户反馈经常出错查看指标错误率可能原因错误率突然飙升 → 检查最近是否有代码更新错误率缓慢上升 → 可能是内存泄漏或资源耗尽特定时间段错误率高 → 可能与定时任务或其他服务冲突问题3服务间歇性无响应查看指标请求速率、系统资源可能原因请求速率降为0但服务进程还在 → 可能是死锁或阻塞系统内存使用率接近100% → 内存不足服务被OOM killer终止5.3 监控数据的长期价值监控不仅是用来救火的长期的数据积累更有价值容量规划通过历史数据预测什么时候需要升级硬件性能优化找出系统的瓶颈点有针对性地优化成本分析了解不同时段的资源使用优化云服务器配置节省成本服务质量评估用数据证明服务的稳定性和性能比如你可能会发现每周五下午3点是使用高峰GPU内存在处理超过30秒的音频时会接近极限错误率在系统连续运行7天后会轻微上升可能需要定期重启6. 总结从部署到监控的完整闭环通过这个教程我们完成了从部署DeEAR语音情感识别服务到搭建完整监控系统的全过程。让我们回顾一下关键步骤第一步部署服务使用启动脚本快速启动DeEAR服务验证Web界面和API接口正常工作理解服务的基本功能和输出第二步配置数据收集部署Prometheus作为监控数据存储安装node_exporter收集服务器指标修改DeEAR代码暴露监控指标端点第三步创建可视化仪表盘安装Grafana提供友好的监控界面配置Prometheus数据源创建包含关键指标的监控面板设置告警规则及时发现问题第四步实际应用与问题排查通过监控数据快速定位性能瓶颈利用历史数据进行容量规划和优化建立完整的服务健康度评估体系这套监控方案的价值实时可见随时了解服务状态不再盲飞快速定位出现问题能迅速找到原因减少排查时间数据驱动用数据支持决策而不是凭感觉预防为主在用户投诉前发现问题并解决下一步建议根据实际业务需求调整监控指标和告警阈值考虑添加业务指标监控比如不同情感类别的分布探索更高级的监控功能如自动扩缩容定期回顾监控数据持续优化服务性能监控不是一次性的工作而是一个持续的过程。随着业务发展你的监控需求也会变化。重要的是建立起监控的意识和能力这样无论服务如何演进你都能牢牢掌握它的状态。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。