30 分钟搭好 Hermes Agent 性能监控闭环
2026/9/9 11:20:49 网站建设 项目流程

30 分钟搭好 Hermes Agent 性能监控闭环

【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent

Hermes Agent 是一款内置学习闭环与多平台网关的 AI Agent 框架。这篇文章带你基于 Prometheus、Grafana 与 Alertmanager 搭出一套 Hermes Agent 性能监控体系:暴露指标、可视化、自动告警,一路推进到可上线的生产配置。

监控的对象就是这些在 Cron、Telegram、Discord 等通道里并行跑的会话——只有把请求和资源状态看清楚,出问题时才能快速定位到具体环节。

先分清组件职责:监控体系里谁干什么

动手前先看分工,四个组件各管一段,配置文件别放错地方:

组件在体系中的职责关键配置文件
Hermes Agent(带 vLLM 后端)暴露/metrics指标端点启动参数(如--enable-metrics
Prometheus定时抓取指标、存储时序数据prometheus.yml
GrafanaPromQL 查询、渲染仪表盘数据源配置 + 仪表盘 JSON
Alertmanager评估告警规则、发送通知alertmanager.yml+rules.yml

项目内置的 agent/monitoring/ 模块已包含网关健康导出与 OTLP 上报能力,本文在它之上补一条标准的 Prometheus 采集链路。

阶段一:拿到指标——让 /metrics 端点返回 200

为什么做这步:Prometheus 只能收集服务愿意暴露的数据,这一步不到位,后面全是空中楼阁。完成后你能得到:curl访问/metrics返回 200。

🔌 启动 vLLM 后端时加上这两个参数:

vllm serve meta-llama/Llama-3-8B-Instruct \ --enable-metrics \ --metrics-port 9090

验证指标接口是否可用:

curl -s -o /dev/null -w "%{http_code}" http://localhost:9090/metrics # 输出 200 即表示接口就绪

Prometheus 抓取目标怎么配

把抓取配置指向 9090 端口,写进prometheus.yml

scrape_configs: - job_name: 'hermes-agent' static_configs: - targets: ['localhost:9090'] metrics_path: '/metrics' scrape_interval: 15s

Prometheus 启动后在 Targets 页面确认状态变绿,Prometheus 指标集成就算完成了。

阶段二:看到图表——搭一块含 5 个核心面板的 Grafana 仪表盘

为什么做这步:裸指标只是数字,你要看的是趋势和分位数。完成后你能得到:一块 5 面板的仪表盘,吞吐量、延迟、GPU 缓存一屏掌握。

先添加 Prometheus 数据源,再新建 Grafana 仪表盘,逐个添加下面 5 个面板:

面板PromQL 查询
请求成功率sum(rate(vllm_request_success_total[5m]))
首 token 时间 p50histogram_quantile(0.5, sum by (le) (rate(vllm_time_to_first_token_seconds_bucket[5m])))
首 token 时间 p99histogram_quantile(0.99, sum by (le) (rate(vllm_time_to_first_token_seconds_bucket[5m])))
GPU 缓存使用率vllm_gpu_cache_usage_perc
活跃请求数vllm_num_requests_running

histogram_quantile说白了:服务端不存单次延迟值,只存落在各区间的请求计数,这个函数从区间分布里反推出 p50、p99 这类分位数。

阶段三:告警联动——写一条能模拟触发的 Alertmanager 告警规则

为什么做这步:仪表盘不是 7x24 有人盯的,告警让系统主动找你。完成后你能得到:至少 1 条可以模拟触发并验证的告警规则。

最小可用告警规则模板

把第一条规则写进rules.yml,结构分两层:expr决定“何时触发”,for决定“持续多久才算数”:

groups: - name: hermes_agent_alerts rules: - alert: HighErrorRate expr: sum(rate(vllm_request_failure_total[5m])) > 0.05 for: 2m labels: severity: critical annotations: summary: "错误率超过 5%"

同文件再补一条延迟规则:

- alert: SlowFirstToken expr: > histogram_quantile(0.99, sum by (le) (rate(vllm_time_to_first_token_seconds_bucket[5m]))) > 2 for: 5m labels: severity: warning annotations: summary: "P99 首 token 延迟超过 2 秒"

🚨 模拟触发:把第一条的阈值临时改成> 0,等一分钟后到 Alertmanager 界面看规则变 firing,验证完改回去。通知渠道(邮件、IM、值班)之后按需挂到alertmanager.yml即可,这里只验证触发链路。

频繁查询的复杂表达式,可以用 recording rules 预计算并存储结果——相当于让 Prometheus 定时把“重活”算好,Grafana 查询更快。

阶段四:生产部署——收口成一份可直接上线的配置

为什么做这步:四个容器手动逐个启动很难维护,写进 Compose 才能一条命令复现。完成后你能得到:一份可直接上线的部署配置。

📦docker-compose.yml前半段,业务与采集:

services: hermes-agent: image: hermes-agent:latest command: --enable-metrics --metrics-port 9090 ports: - "8000:8000" - "9090:9090" prometheus: image: prom/prometheus volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml ports: - "9091:9090"

后半段加可视化与告警。仓库根目录自带Dockerfile,你可以用它自行构建hermes-agent镜像:

grafana: image: grafana/grafana ports: - "3000:3000" volumes: - grafana-data:/var/lib/grafana alertmanager: image: prom/alertmanager volumes: - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml ports: - "9093:9093" volumes: grafana-data:

上线前检查清单与故障速查表

上线前逐项打勾:

  • 各目标/metricscurl访问返回 200,Prometheus Targets 页面状态为 UP
  • 仪表盘 5 个面板全部有数据,时间轴覆盖最近 1 小时
  • 至少 1 条告警规则经模拟触发,能从 firing 走到 resolved
  • Alertmanager 通知渠道能收到一条测试消息
  • prometheus.ymlrules.ymldocker-compose.yml均已纳入版本管理

出问题时按表排查:

现象可能原因处理
Prometheus 目标 DOWN端口不一致或指标服务未启动curl目标端口,核对--metrics-port参数
面板 No DataPromQL 指标名与实际不符用 Explore 搜vllm_前缀,确认真实指标名
告警一直不触发阈值过高或for过久临时调低阈值验证,并在 Alertmanager 界面看规则状态
告警触发了却没通知alertmanager.yml通知渠道未生效用 Alertmanager 界面发测试通知,查看报错信息

【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询