MonkeyCode 的可观测性体系:日志、监控与告警的完整方案

当你管理着成百上千个用户容器时,"出了问题不知道"比"出了问题"更可怕。MonkeyCode 构建了一套完整的可观测性体系,让运维团队能够实时感知系统状态。

可观测性的三大支柱

MonkeyCode 的可观测性体系基于三大支柱:

  • 日志(Logging) — 记录系统中发生的每一件事
  • 指标(Metrics) — 量化系统的运行状态
  • 追踪(Tracing) — 追踪请求在系统中的流转路径

日志系统

结构化日志

所有日志采用JSON格式,便于机器解析和搜索:

{\n  "timestamp": "2026-06-08T10:30:00.123Z",\n  "level": "info",\n  "service": "gateway",\n  "traceId": "abc123",\n  "userId": "user_456",\n  "action": "workspace.create",\n  "duration_ms": 2340,\n  "status": "success",\n  "workspaceId": "ws_789"\n}

日志采集架构

容器日志 → Fluent Bit → Kafka → ClickHouse\n                                      ↓\n                              Grafana Loki(搜索和查询)

关键设计决策:

  • 用Fluent Bit而不是Fluentd — 资源占用更少(每个节点约10MB内存)
  • 用Kafka做缓冲 — 日志高峰期不会压垮存储
  • 用ClickHouse做长期存储 — 列式存储压缩率高,查询快
  • 用Loki做实时搜索 — 与Grafana无缝集成

指标监控

核心指标

MonkeyCode 监控以下核心指标:

基础设施层

  • 节点CPU/内存/磁盘使用率
  • 容器创建/销毁速率
  • 网络带宽使用量

应用层

  • API请求延迟(P50/P90/P99)
  • AI模型调用延迟
  • WebSocket连接数
  • 错误率(按错误码分类)

业务层

  • 活跃用户数
  • 并发Workspace数
  • AI对话次数
  • 代码提交次数

Prometheus + Grafana

指标采集使用Prometheus,展示使用Grafana:

// 关键告警规则\ngroups:\n  - name: monkeycode-alerts\n    rules:\n      - alert: WorkspaceCreationSlow\n        expr: histogram_quantile(0.99, workspace_creation_duration_seconds) > 10\n        for: 5m\n        annotations:\n          summary: "Workspace创建P99延迟超过10秒"\n          \n      - alert: AIModelHighLatency\n        expr: histogram_quantile(0.95, ai_model_response_duration_seconds) > 5\n        for: 10m\n        annotations:\n          summary: "AI模型P95响应延迟超过5秒"\n          \n      - alert: ContainerRestartLoop\n        expr: rate(container_restarts_total[5m]) > 0.1\n        for: 5m\n        annotations:\n          summary: "容器频繁重启"

分布式追踪

一次AI对话请求可能经过5-6个服务。追踪让团队能看到完整的调用链:

用户发送消息\n  → Gateway(认证鉴权)10ms\n    → Model Router(选择模型)5ms\n      → Prompt Builder(构建提示词)2ms\n        → AI Model API(模型调用)1800ms\n          → Response Parser(解析响应)3ms\n            → 审计日志记录 8ms\n  → 返回用户 总计: 1828ms

MonkeyCode 使用OpenTelemetry进行分布式追踪,数据存储在Jaeger中。

告警体系

告警分为四个等级:

等级 含义 通知方式 响应时间
P0 系统不可用 电话+短信+IM 5分钟
P1 核心功能降级 短信+IM 15分钟
P2 次要功能异常 IM 1小时
P3 需要关注 IM 下一工作日

开源自建 vs 商业方案

MonkeyCode 选择全栈开源方案(Prometheus + Grafana + Loki + Jaeger),而非商业方案(DataDog/New Relic):

  • 成本 — 商业方案按量计费,1000+用户规模月费$5000+
  • 数据主权 — 监控数据不离开自己的服务器
  • 可定制性 — 开源方案可以深度定制
  • 与私有化部署一致 — 用户自部署时使用相同的监控方案

总结

可观测性不是奢侈品,而是必需品。MonkeyCode通过日志、指标、追踪三大支柱,实现了对系统运行状态的全面感知。这些监控方案随开源代码一起发布,企业用户在私有化部署时可以直接使用。

监控配置参考:github.com/chaitin/MonkeyCode/tree/main/deploy/monitoring

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐