Hermes Agent 日志监控:3个阶段搭好可观测闭环 📅 发布时间:2026/8/29 16:02:37 👁 浏览次数: Hermes Agent 日志监控3个阶段搭好可观测闭环【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent你正在排查一个 Hermes Agent 会话为什么跑挂了打开~/.hermes/sessions/迎面是 884 个 JSON 文件。grep十分钟还没定位到是哪个 session_id 出的事。这就是 AI 代理日志监控的典型困境日志分散、实时分析难、异常发现永远慢半拍。这套方案的定位很直接用 ELK Stack 把 Hermes Agent 的会话日志从本地文件升级为可查询、可告警的监控平面脱敏和告警全部前置。核心组件如下组件作用一句话说明Hermes 会话日志JSON数据源每个会话在~/.hermes/sessions/落一份结构化快照agent/redact.py脱敏token、密码在写盘前替换为[redacted]Logstash采集解析实时盯住 sessions 目录解析 JSON、提取 session_idElasticsearch存储按天建索引hermes-logs-YYYY.MM.dd挂 ILM 生命周期Kibana可视化会话活跃度、错误率、延迟分布 阈值告警OTLP Exporteragent/monitoring/原生导出不依赖 ELK把 gateway 健康事件直发你已有的可观测平台阶段一先跑通日志采集最小闭环别上来就搭全家桶。先把会话日志 → ES → 能查这条最细的链路打通。5分钟跑通日志采集最小闭环先让 Agent 输出结构化日志并绑定会话上下文。这里把详细日志打开每条日志都带上 session_id后面按会话检索才有抓手# hermes 日志初始化模式选 agent详细日志打开 from hermes_logging import setup_logging, set_session_context setup_logging(verboseTrue, modeagent) set_session_context(session_12345) # 每条日志自动挂会话ID验证标准跑一个会话~/.hermes/sessions/下生成一份 JSON 快照日志行里能 grep 到 session_id。让 Logstash 直接吃 JSON配置一个文件输入 时间戳过滤即可。注意sincedb_path一定要固定别图省事用/dev/null否则每次重启全量重扫input { file { path /HOME/.hermes/sessions/*.json start_position end sincedb_path /var/lib/logstash/hermes.sincedb } } output { elasticsearch { hosts [http://localhost:9200] index hermes-logs-%{YYYY.MM.dd} document_id %{[session_id]}-%{HHmmss} } }验证标准在 Kibana 里按 session_id 能查到刚跑完的那个会话端到端延迟 1 秒。阶段二补齐脱敏与生命周期链路通了数据就会越积越多。这一步解决两件事敏感信息不出盘、老数据自动降级。脱敏默认开启确认即可Hermes 的 agent/redact.py 默认就开着短于 18 字符的 token 全量打码长的保留首 6 尾 4 方便调试。你只需要确认没被关掉# 默认开启显式关掉会在 gateway/CLI 启动时打警告 echo HERMES_REDACT_SECRETStrue ~/.hermes/.env验证标准故意往会话里塞一个测试密钥查 ES 里对应文档值应显示为[redacted]而不是原文。ILM 把索引按温冷热滚动按天索引必须配生命周期否则 ES 会被老索引拖死。策略很简单热 7 天、温 30 天、冷 90 天、365 天删除# ILM 策略Kibana: Stack Management → Index Lifecycle 配置 phases: hot: { min_age: 0d, actions: { rollover: { max_age: 1d } } } warm: { min_age: 7d, actions: { shrink: { number_of_shards: 1 } } } cold: { min_age: 30d, actions: { allocate: { require: { data_tier: frozen } } } } delete: { min_age: 365d, actions: { delete: {} } }验证标准_cat/templates看到索引模板绑定成功新天索引自动创建。阶段三接入告警与自动化扩展 到这一步监控才有值班价值出事时有人知道而不是你主动去看。用阈值告警替代肉眼看板在 Kibana 的 Alert Rules 里配两条就够用错误率 5 分钟内 5%、单会话响应 P95 200ms。通知接到网关的 delivery 通道告警到人的延迟控制在 1 分钟以内。验证标准手工注入一批错误日志5 分钟内收到通知。已有 OTel 平台直接走原生 OTLP如果你团队已经有 OTel Collector / DataDogELK 这半边可以只留会话检索健康监控走原生通道更省资源。agent/monitoring/otlp_exporter.py 把 gateway 健康事件映射成 OTel span 推给你自配的 endpoint且导出失败绝不影响主进程# 装可选依赖配置 monitoring.export.otlp 后启用 pip install hermes-agent[otlp]验证标准Collector 侧能看到 gateway_health span 流Agent 侧主链路延迟无变化emit 路径微秒级返回。调优笔记Logstash 重启后追了一小时历史日志→sincedb_path/dev/null导致从零重扫 → 改固定路径 start_position end。ES 里翻出了完整 token→ 有环境把HERMES_REDACT_SECRETS置了 false → 查启动日志里的 redaction 降级警告恢复默认 true。查询变慢、索引几百个→ 按天索引没配 ILM冷数据全在热盘 → 套上 7/30/90/365 天策略。告警误报多→ 阈值拍脑袋定的 → 先取 7 天 P95 基线阈值设在基线上浮 2 倍以内。从人工 grep 分钟级定位到看板秒级查询、告警 1 分钟内触达这就是这套闭环的实际收益。延伸阅读agent/redact.py脱敏规则全量实现、agent/monitoring/emitter.pyfire-and-forget 事件队列设计、README.zh-CN.md项目中文文档。【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考