已关闭
[Feature] Agent 实例集中式日志收集与查询管理 #58
changyucong创建于  6月16日关闭于  7月2日
changyucong
changyucong
6月16日 创建

背景

当 agent-runtime 同时管理数十甚至数百个 Agent 实例时,日志管理成为一个关键挑战。目前每个 Agent 实例的日志分散在各个进程/容器中,缺乏统一的收集、检索和分析能力。

当前状态

  1. 日志分散:每个 Agent 实例将日志写入本地文件系统或 stdout/stderr
  2. 无统一格式:缺少标准化的日志结构(如 JSON 结构化日志)
  3. 难以检索:运维人员需要 SSH 登录到各个节点查看日志
  4. 无日志级别管理:无法动态调整单个 Agent 的日志级别以进行问题排查
  5. 缺乏告警机制:Agent 异常退出时无自动告警通知

建议方案

1. 标准化日志格式

定义统一的 JSON 结构化日志格式:

{
  "timestamp": "2026-06-16T15:30:00.000Z",
  "level": "INFO|WARN|ERROR|DEBUG",
  "service": "agent-runtime",
  "instance_id": "agent-xxxx",
  "tenant_id": "tenant-xxx",
  "conversation_id": "conv-xxx",
  "message": "Agent query processed",
  "duration_ms": 1250,
  "extra": {}
}

2. 日志收集管道

支持多种日志后端输出:

  • 基础:本地文件轮转(按大小/时间)
  • 进阶:通过 logging.handlers 输出到 Fluentd/Logstash
  • 云原生:直接输出到 Elasticsearch / Loki / 阿里云 SLS

3. 日志检索 API

在 Runtime 管理面增加日志查询端点:

  • GET /api/v1/agents/{id}/logs:查询指定 Agent 的日志
  • 支持参数:level、start_time、end_time、keyword、tail
  • 支持流式输出(类似 kubectl logs -f)

4. 日志级别动态调整

  • POST /api/v1/agents/{id}/log-level:运行时动态调整日志级别
  • GET /api/v1/agents/{id}/log-level:查看当前日志级别

5. 异常告警

基于日志模式的告警规则配置:

  • Agent 连续 3 次健康检查失败
  • 错误日志在 5 分钟内超过 N 条
  • Agent 进程意外退出

预期收益

  • 大幅降低生产环境问题定位时间
  • 支持审计合规需求
  • 为后续的 Agent 可观测性体系(已有 Issue #38)提供日志基础
  • 与 openJiuwen Ops 的可观测性能力形成互补
likedislike
openJiuwen-bot成员
6月16日 评论:

欢迎来到 openJiuwen 社区

Hey @cycong_1 , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

likedislike
changyucongchangyucong
7月2日 issue状态由 TODO 改变为 CLOSED
changyucongchangyucong
7月2日 关闭了 issue