Clawdbot实战教程:Qwen3:32B代理网关的Prometheus监控指标暴露与Grafana看板搭建
1. 为什么需要为AI代理网关做监控
你刚部署好Clawdbot,接入了本地运行的qwen3:32b大模型,聊天界面跑起来了,API也能调通——看起来一切顺利。但过了一小时,用户反馈响应变慢;两小时后,部分请求开始超时;再过一阵,整个服务突然不可用。你打开终端,发现日志里只有零星几行报错,显存占用曲线像心电图一样忽高忽低,却找不到问题源头。
这不是个别现象。AI代理网关不像传统Web服务那样有清晰的请求-响应生命周期,它涉及模型加载、上下文管理、流式输出、GPU资源争抢、token计数、缓存命中等多重动态环节。没有监控,就像在浓雾中开车——你知道车在动,但不知道油量还剩多少、轮胎是否漏气、导航是否偏航。
Clawdbot本身不内置监控能力,但它提供了标准的Prometheus指标暴露接口。这意味着:你不需要改一行业务代码,就能把qwen3:32b网关的“心跳”、“呼吸频率”、“体温”、“血压”全部实时采集出来。而本教程要带你做的,就是把这套“AI健康监测系统”真正搭起来——从指标暴露、数据采集,到可视化看板,全程可复制、可落地、不踩坑。
2. 环境准备与Clawdbot基础配置
2.1 确认Clawdbot版本与监控支持
Clawdbot从v0.8.0起原生支持Prometheus指标暴露,默认监听/metrics端点。请先确认你的版本:
clawdbot --version # 输出应类似:clawdbot v0.8.2 (build 2025-04-12)若版本低于0.8.0,请升级:
# 使用pip升级(推荐) pip install --upgrade clawdbot # 或从源码构建(如需最新特性) git clone https://github.com/clawdbot/clawdbot.git cd clawdbot && make build注意:Clawdbot的监控功能依赖于Go生态的
promhttp库,无需额外安装Python依赖,开箱即用。
2.2 启动带监控的Clawdbot服务
Clawdbot默认不启用指标暴露。你需要通过环境变量显式开启,并指定监听地址:
# 启动命令(关键参数已加粗) CLAWDBOT_PROMETHEUS_ENABLED=true \ CLAWDBOT_PROMETHEUS_ADDR="0.0.0.0:9091" \ clawdbot onboard启动成功后,你会看到控制台输出类似:
INFO[0000] Prometheus metrics endpoint enabled on :9091 INFO[0000] Starting Clawdbot server on :3000...此时,访问http://localhost:9091/metrics即可看到原始指标文本(不是HTML页面!)。你应该能看到类似以下内容:
# HELP clawdbot_up Whether the clawdbot server is up # TYPE clawdbot_up gauge clawdbot_up 1 # HELP clawdbot_model_requests_total Total number of model requests # TYPE clawdbot_model_requests_total counter clawdbot_model_requests_total{model="qwen3:32b",status="success"} 42 clawdbot_model_requests_total{model="qwen3:32b",status="error"} 3 # HELP clawdbot_model_latency_seconds Model request latency in seconds # TYPE clawdbot_model_latency_seconds histogram clawdbot_model_latency_seconds_bucket{model="qwen3:32b",le="0.5"} 38 clawdbot_model_latency_seconds_bucket{model="qwen3:32b",le="1.0"} 41 ...这些就是Clawdbot为你自动暴露的核心指标。它们不是凭空生成的,而是真实反映qwen3:32b每一次调用的状态。
2.3 验证qwen3:32b模型连接状态
在Clawdbot管理界面中,进入Settings → Model Providers,确认my-ollama配置已正确加载,且状态显示为 Active。特别注意检查:
baseUrl必须是http://127.0.0.1:11434/v1(不能是localhost,Docker容器内解析可能失败)apiKey为ollama(Ollama默认无密钥,但Clawdbot要求非空)- 模型ID严格匹配为
qwen3:32b(注意冒号和大小写)
如果状态为 ❌ Inactive,请检查Ollama服务是否运行:
# 在另一终端执行 ollama list # 应输出包含: # qwen3:32b latest 24.1GB ... # 若未列出,拉取模型(需约15分钟,24GB下载) ollama pull qwen3:32b小贴士:qwen3:32b在24G显存上运行虽可行,但建议预留至少4G显存给Clawdbot自身进程。若频繁OOM,可在
clawdbot.yaml中设置ollama.keep_alive: 5m防止模型被自动卸载。
3. Prometheus服务部署与目标发现
3.1 一键部署Prometheus(Docker方式)
我们不折腾YAML配置,用最简方式启动Prometheus:
# 创建配置目录 mkdir -p ~/prometheus/{data,config} # 写入prometheus.yml配置 cat > ~/prometheus/config/prometheus.yml << 'EOF' global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'clawdbot' static_configs: - targets: ['host.docker.internal:9091'] # 关键:指向宿主机Clawdbot指标端口 metrics_path: '/metrics' - job_name: 'ollama' static_configs: - targets: ['host.docker.internal:11434'] # Ollama自身也暴露/metrics metrics_path: '/metrics' EOF # 启动Prometheus容器 docker run -d \ --name prometheus \ -p 9090:9090 \ -v ~/prometheus/config:/etc/prometheus \ -v ~/prometheus/data:/prometheus \ --network host \ --restart unless-stopped \ prom/prometheus:v2.49.1 \ --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb.path=/prometheus \ --web.console.libraries=/usr/share/prometheus/console_libraries \ --web.console.templates=/usr/share/prometheus/consoles为什么用
host.docker.internal?因为Clawdbot运行在宿主机,而Prometheus在Docker容器内。该域名是Docker Desktop(Mac/Win)和Docker Engine(Linux)提供的标准宿主机别名,比写死172.17.0.1更可靠。
3.2 验证Prometheus数据采集
等待30秒,打开浏览器访问http://localhost:9090/targets。你应该看到两个UP状态的目标:
clawdbot:State=UP,Labels={job="clawdbot"}ollama:State=UP,Labels={job="ollama"}
点击clawdbot右侧的“Metrics”链接,输入查询语句:
clawdbot_model_requests_total{model="qwen3:32b"}点击“Execute”,再点击“Graph”标签页。此时发起一次Clawdbot聊天(或用curl调用API),你会看到曲线实时上升——说明指标已成功采集。
3.3 关键指标解读:哪些数据真正影响体验
不要被上百个指标吓到。对qwen3:32b网关,只需盯紧这4个核心指标:
| 指标名 | 类型 | 说明 | 健康阈值 |
|---|---|---|---|
clawdbot_model_requests_total{model="qwen3:32b",status="error"} | Counter | 错误请求数 | 持续为0(偶发可接受) |
clawdbot_model_latency_seconds_bucket{model="qwen3:32b",le="2.0"} | Histogram | 2秒内完成的请求占比 | ≥95%(低于则说明GPU瓶颈) |
clawdbot_model_tokens_total{model="qwen3:32b",type="input"} | Counter | 总输入token数 | 结合吞吐量判断负载 |
process_resident_memory_bytes{job="clawdbot"} | Gauge | Clawdbot进程内存占用 | <1.5GB(超2GB需排查泄漏) |
这些指标不是理论值,而是你每次点击“发送”按钮时,qwen3:32b真实产生的数据。它们比任何文档描述都更诚实。
4. Grafana看板搭建:从零开始的4步法
4.1 部署Grafana并接入Prometheus数据源
# 启动Grafana(使用默认admin/admin) docker run -d \ --name grafana \ -p 3000:3000 \ -v ~/grafana-storage:/var/lib/grafana \ --network host \ --restart unless-stopped \ grafana/grafana-enterprise:10.4.2 # 等待10秒后,访问 http://localhost:3000 # 首次登录:用户名 admin,密码 admin → 提示修改密码,设为 admin123(测试环境)登录后,进入Configuration → Data Sources → Add data source → Prometheus:
- Name:
Prometheus - URL:
http://localhost:9090(Grafana容器与Prometheus同在宿主机网络) - 点击Save & test,看到绿色 “Data source is working” 即成功。
4.2 创建第一个看板:qwen3:32b健康概览
点击左上角+ → Dashboard → New dashboard,然后:
- 点击Add new panel
- 在Query编辑框中输入:
sum(rate(clawdbot_model_requests_total{model="qwen3:32b"}[5m])) by (status) - 将Visualization改为Stat(单值面板)
- 在Options → Stat → Value options → Stat选Last,Color mode选Background
- 在Field → Overrides → Add field override → Filter by name → 输入
status→ Color → 设置success=green,error=red
重复此过程,添加3个面板:
面板1:错误率
Query:100 * sum(rate(clawdbot_model_requests_total{model="qwen3:32b",status="error"}[5m])) / sum(rate(clawdbot_model_requests_total{model="qwen3:32b"}[5m]))
Unit:percent (0-100),Thresholds:0, 1, 5(红黄绿)面板2:P95延迟
Query:histogram_quantile(0.95, sum(rate(clawdbot_model_latency_seconds_bucket{model="qwen3:32b"}[5m])) by (le))
Unit:seconds, Decimal:2面板3:当前并发请求数
Query:count by (model) (clawdbot_model_in_flight{model="qwen3:32b"})
Visualization:Gauge, Max:10
此时你已拥有一个实时反映qwen3:32b服务状态的“驾驶舱”。当红色数字跳动,你就知道该去查日志了。
4.3 深度分析看板:定位性能瓶颈的利器
创建第二个看板,命名为Qwen3:32B Performance Deep Dive:
面板A:GPU显存使用趋势(需配合nvidia-smi exporter)
虽然Clawdbot不直接暴露GPU指标,但你可以用nvidia-smi补全拼图:
# 安装nvidia-docker(如未安装) # Ubuntu: sudo apt-get install nvidia-docker2 # 启动nvidia-smi exporter docker run -d \ --name nvidia-exporter \ --gpus all \ -p 9102:9102 \ --restart unless-stopped \ --network host \ nvidia/dcgm-exporter:3.3.6-3.2在Grafana中添加新数据源NVIDIA DCGM,URL为http://localhost:9102。然后添加面板:
- Query:
dcgm_fb_used{gpu="0"} / dcgm_fb_total{gpu="0"} * 100 - Unit:
percent (0-100),Title:GPU Memory Usage (qwen3:32b)
面板B:Token吞吐与延迟散点图
这是最关键的诊断视图:
- Query:
sum by (le) (rate(clawdbot_model_latency_seconds_bucket{model="qwen3:32b"}[5m])) - Visualization:Heatmap
- X轴:
le(延迟桶),Y轴:Value,Bucket size:auto - 效果:热力图越集中在左下角(低延迟、高请求数),说明qwen3:32b运行越健康。
面板C:错误类型分布(快速归因)
- Query:
count by (error_type) (clawdbot_model_errors_total{model="qwen3:32b"}) - Visualization:Pie chart
- 你会看到错误按类型分组:
context_overflow(上下文超限)、model_unavailable(Ollama崩溃)、timeout(网络超时)——每种对应不同解决路径。
这个看板的价值在于:它不告诉你“服务挂了”,而是告诉你“为什么挂”。是显存爆了?还是Ollama进程僵死了?或是用户发了超长提示词?答案就藏在图表里。
5. 实战调试:一次典型故障的完整排查链
假设某天下午,用户集体反馈Clawdbot响应极慢。你打开Grafana看板,看到:
- 错误率从0%飙升至12%
- P95延迟从1.2s涨到8.7s
- GPU显存使用率稳定在98%
第一步:确认是否Ollama异常
在Prometheus中执行:
count by (state) (up{job="ollama"})结果为0 → Ollama进程已退出。
第二步:查Ollama日志
docker logs ollama 2>&1 | tail -20 # 输出:runtime: out of memory ... fatal error: runtime: out of memory确认是OOM导致Ollama崩溃。
第三步:追溯根源
查看clawdbot_model_tokens_total{model="qwen3:32b",type="input"}过去1小时增长曲线,发现峰值达120万tokens/小时(平时仅20万)。结合用户反馈,判定是某用户提交了超长PDF文本解析任务。
第四步:实施缓解
- 重启Ollama:
ollama serve & - 在Clawdbot中临时限制单次请求最大token:编辑
clawdbot.yaml,添加model_providers: my-ollama: max_input_tokens: 4096 - 重启Clawdbot:
clawdbot onboard
5分钟后,所有指标回归正常。整个过程耗时不到8分钟,而如果没有监控,你可能还在日志里大海捞针。
6. 总结:让AI代理网关真正“可运维”
Clawdbot + qwen3:32b的组合,本质是一个微型AI基础设施。而基础设施的终极标志,不是它能跑多快,而是你能否在它出问题时,3分钟内定位根因。
本教程带你走完了这条“可观测性闭环”:
- 暴露:用
CLAWDBOT_PROMETHEUS_ENABLED打开指标开关,零代码侵入 - 采集:Prometheus通过标准HTTP拉取,兼容任何容器环境
- 分析:Grafana看板不是装饰品,而是故障字典——每个图表都在回答一个具体问题
- 行动:指标驱动决策,比如根据
clawdbot_model_latency_seconds的P99值,决定是否升级GPU
你不需要成为Prometheus专家,也不必背诵所有指标名。记住这个铁律:只要clawdbot_up == 1,你的网关就活着;只要clawdbot_model_requests_total{status="error"} == 0,你的qwen3:32b就在可靠工作;其余指标,都是为“活着”和“可靠”服务的证据链。
下一步,你可以将这套监控体系扩展到更多模型——比如为qwen2.5:7b添加独立看板,或用Alertmanager配置企业微信告警。但今天,你已经拥有了驾驭AI代理网关最基础、也最重要的能力:看见它,理解它,信任它。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。