Coroot 开源可观测性与 AI 根因分析平台:零插桩监控、eBPF 采集与一键部署实战指南
2026/9/16 16:34:39 网站建设 项目流程

Coroot 开源可观测性与 AI 根因分析平台:零插桩监控、eBPF 采集与一键部署实战指南

【免费下载链接】corootCoroot is an open-source observability and APM tool with AI-powered Root Cause Analysis. It combines metrics, logs, traces, continuous profiling, and SLO-based alerting with predefined dashboards and inspections.项目地址: https://gitcode.com/GitHub_Trending/co/coroot

Coroot 是一个开源的云原生可观测性与 APM(应用性能监控)平台,核心定位是把"采集指标、日志、追踪"升级为"直接给出可执行的洞察"。本文以仓库根目录 README.md 为主线,结合 main.go、deploy/docker-compose.yaml、config/config.go 等源码,系统讲解它的功能体系、数据接入方式、部署与配置方法,帮助你理解并落地一套从零插桩采集到 AI 根因分析的完整观测方案。

项目定位:不只是采集,而是把数据变成洞察

Coroot 的出发点非常明确——"收集指标、日志和追踪本身并不会让应用变得可观测(Collecting metrics, logs, and traces alone doesn't make your applications observable),Coroot 会把这些数据转化为你可以直接行动的洞察"。

从仓库结构看,Coroot 是一个单体 Go 服务(入口 main.go,模块覆盖 api、collector、auditor、constructor、watchers、db、clickhouse、prom 等),后端自带一套 Vue 3 前端(front),所有静态资源通过go:embed直接嵌入二进制(见 main.go),因此它可以作为单个 Docker 容器或单个 Deployment 部署到任意 Kubernetes 集群。

它提供的能力覆盖四种遥测数据(metrics、logs、traces、profiles),并在此基础上叠加了 SLO 告警、预置检查项(Inspections)、部署追踪与成本监控,最后通过 AI 驱动的原因分析(RCA)把问题收敛到根因。该版本为 Community Edition(见 main.go)。

核心功能体系

1. 零插桩可观测性(Zero-instrumentation observability)

这是 Coroot 最核心的差异化能力:

  • 通过 eBPF 自动采集指标、日志、追踪与性能剖析数据,无需修改业务代码;
  • 提供覆盖 100% 系统的 Service Map(服务地图),不留盲区;
  • 预置的 Inspections(检查项)无需任何配置即可对每个应用进行审计。

这里的 Service Map 对应前端视图 ServiceMap.vue 与后端 api/views/overview/service_map.go,它会自动发现集群内的应用、中间件及其调用关系。

2. 应用健康摘要(Application Health Summary)

面对成百上千个服务时,Coroot 提供:

  • 应用健康状态总览(对应前端 AppHealth.vue 与 model/status.go 中的状态模型);
  • 应用日志的自动洞察,无需逐个手动排查(日志聚类与模式识别见 model/log.go);
  • SLO(服务级别目标)跟踪,对应 model/sli.go 与前端 CheckConfigSLOAvailabilityForm.vue。

3. 分布式追踪:一键下钻任何异常请求

  • 任何异常只需一次点击即可调查;
  • 基于 OpenTelemetry 的中立厂商插桩标准;
  • 对于无法插桩的遗留系统或第三方服务,Coroot 的 eBPF 采集可以在不改代码的情况下捕获请求。

从源码看,追踪数据链路包括 OTLP gRPC 服务(collector/grpc.go 注册了LogsServiceTraceService)、HTTP 接收端/v1/traces(main.go)以及 ClickHouse 中的追踪存储(clickhouse/traces.go),前端对应 TracingTrace.vue 与 Traces.vue。

4. 日志洞察:扫一眼即可掌握关键信息

  • Log patterns:开箱即用的事件聚类(见 model/log.go 与前端 LogPattern.vue);
  • 日志到追踪的无缝关联(logs-to-traces correlation);
  • 基于 ClickHouse 的极速全文搜索(存储实现见 clickhouse/logs.go,前端见 Logs.vue)。

5. 一键性能剖析(Profiling)

  • 将任何 CPU 或内存的意外尖峰分析到具体的代码行;
  • 不靠猜测,精确知道资源花在了哪里;
  • 通过与系统基线行为对比,轻松调查任何异常。

剖析数据的采集与存储见 collector/profiles.go,火焰图展示见前端 FlameGraph.vue,界面入口为 Profiling.vue。

6. 内置专家系统(Built-in expertise)

  • Coroot 能够自动识别大部分常见问题(官方宣称可自动识别超过 80% 的问题——该数值来自 README 的官方表述);
  • 当应用未达到 SLO 时,Coroot 会发送一条包含所有相关检查结果的告警;
  • 你可以针对单个应用或整个项目轻松调整任意检查项。

这一能力由 auditor 模块(审计/检查器)和 watchers 模块共同实现:watchers.Start会定期构建系统模型并调用auditor.Audit(见 watchers/watchers.go),审计结果驱动告警与事件。检查项涵盖 CPU、内存、网络、存储、JVM、Python、Node.js、MySQL、PostgreSQL、Redis、MongoDB、Memcached、GPU、SLO 等领域,完整清单见 auditor 目录。

7. 部署追踪(Deployment Tracking)

  • 自动发现并监控 Kubernetes 集群中的每一次应用发布(rollout);
  • 无需与 CI/CD 流水线集成;
  • 每个版本自动与上一版本对比,不会错过任何细微的性能劣化;
  • 结合成本监控,开发者可以跟踪每次变更对云账单的影响。

实现位于 watchers/deployments.go 与 model/application_deployment.go,前端对应 Deployments.vue。

8. 成本监控(Cost Monitoring)

  • 把云成本细化到具体应用;
  • 不需要访问你的云账号,也不需要任何额外配置;
  • 支持 AWS、GCP、Azure。

成本计算由 cloud-pricing 模块(价格目录管理器)与 model/costs.go 实现,价格数据缓存于data/cloud-pricing目录(见 main.go)。

系统架构与数据链路

从 main.go 的启动流程可以还原出整体架构:

  1. 配置加载config.Load()读取 YAML 配置文件与命令行参数(config/config.go);
  2. 元数据库初始化:默认使用 SQLite(数据目录data_dir下),配置了pg-connection-string时改用 PostgreSQL(main.go);
  3. Bootstrap:创建默认项目、写入 bootstrap 的 Prometheus / ClickHouse 集成配置(config/bootstrap.go);
  4. 指标缓存cache.NewCache建立 Prometheus/ClickHouse 查询缓存(TTL 默认 30 天,config/config.go);
  5. gRPC + Collectorgrpc.NewServer启动 OTLP gRPC 接收端(默认:4317),collector.New注册日志/追踪 gRPC 服务,并将数据批量写入 ClickHouse(批大小上限 10000 条、超时 5 秒,见 collector/collector.go);
  6. 审计与告警watchers.Start按缓存更新事件触发constructor.New(构建系统世界模型)→auditor.Audit(执行检查)→ incidents / deployments / alerts 三个并行的评估器(watchers/watchers.go);
  7. HTTP 服务:gorilla/mux 路由同时承载 UI 静态资源、/api/*管理接口、/v1/*遥测接收接口、Prometheus HTTP API 兼容代理(/api/project/{project}/prom/api/v1/*)以及 MCP(Model Context Protocol)OAuth 端点。

多副本部署时,watchers通过数据库锁GetPrimaryLock保证同一时间只有一个副本执行审计/告警任务(watchers/watchers.go)。

安装部署

Coroot 可以以 Docker 容器方式运行,也可以部署到任意 Kubernetes 集群。这里以仓库自带的 deploy/docker-compose.yaml 为完整参考,它一次拉起 6 个组件:coroot 主服务、node-agent、cluster-agent、prometheus、clickhouse。

name: coroot services: coroot: restart: always image: ghcr.io/coroot/coroot${LICENSE_KEY:+-ee} # 定义 LICENSE_KEY 时使用 coroot-ee 镜像 pull_policy: always user: root volumes: - coroot_data:/data ports: - 8080:8080 command: - '--data-dir=/data' - '--bootstrap-prometheus-url=http://prometheus:9090' - '--bootstrap-refresh-interval=15s' - '--bootstrap-clickhouse-address=clickhouse:9000' environment: - LICENSE_KEY=${LICENSE_KEY:-} depends_on: clickhouse: condition: service_healthy prometheus: condition: service_healthy

各组件职责如下:

组件镜像作用
corootghcr.io/coroot/coroot主服务,提供 UI、API、OTLP 接收端与审计引擎
node-agentghcr.io/coroot/coroot-node-agent节点级 eBPF 采集器,privileged: true并挂载/sys/kernel/tracing/sys/kernel/debug、cgroupfs,通过--collector-endpoint=http://coroot:8080上报
cluster-agentghcr.io/coroot/coroot-cluster-agent集群级指标采集器,15 秒抓取一次指标并写入本地 WAL
prometheusprom/prometheus:v2.53.5指标存储,开启了--web.enable-remote-write-receiver接收 remote write
clickhouseclickhouse/clickhouse-server:24.3日志、追踪、剖析数据的存储

Docker Compose 快速启动

git clone https://gitcode.com/GitHub_Trending/co/coroot cd coroot/deploy docker compose up -d

启动后访问http://<主机>:8080。首次启动默认管理员账号的初始密码定义在 db/db.go 的AdminUserDefaultPassword常量中,可通过--auth-bootstrap-admin-password或环境变量AUTH_BOOTSTRAP_ADMIN_PASSWORD覆盖,也可以运行coroot set-admin-password命令交互式设置(见 main.go)。

生产环境注意事项(从 compose 文件推导)

  • Prometheus 与 ClickHouse 的端口默认只绑定在127.0.0.1,避免把存储端口直接暴露到公网;
  • coroot 以user: root运行并挂载数据卷coroot_data,这是为了持久化元数据库、指标缓存与云价格数据;
  • ClickHouse 通过 configs 注入配置关闭了自身的 query log 等内部日志表(见 deploy/docker-compose.yaml),减少存储开销。

Kubernetes 部署

将 Coroot 部署到 Kubernetes 时,可直接使用仓库中的 manifests/coroot.yaml 作为起点(包含 Deployment、Service 等基本资源),并按需补充 PVC 与 Ingress。更多安装方式(k8s-operator、Docker Swarm、RHEL、Ubuntu、Windows 等)可参考仓库 docs/docs/installation 下的安装文档。

配置参数详解

Coroot 同时支持三种配置来源:YAML 配置文件(--config或环境变量CONFIG)、命令行参数、环境变量。配置合并与校验逻辑见 config/config.go,命令行参数定义见 config/flags.go。常用参数如下:

参数 / 环境变量默认值说明
--listen/LISTEN:8080HTTP 监听地址
--https-listen/HTTPS_LISTENHTTPS 监听地址,需配合 TLS 证书
--url-base-path/URL_BASE_PATH/部署在子路径时使用,如/coroot/
--data-dir/DATA_DIR./data数据目录(SQLite 元数据库、缓存、价格数据)
--default-time-range/DEFAULT_TIME_RANGE1hUI/API 默认时间范围(如 30m、1h、3h,须为整分钟)
--cache-ttl/CACHE_TTL30d指标缓存 TTL
--traces-ttl/TRACES_TTL7d追踪数据 TTL
--logs-ttl/LOGS_TTL7d日志数据 TTL
--profiles-ttl/PROFILES_TTL7d剖析数据 TTL
--metrics-ttl/METRICS_TTL7d指标数据 TTL
--pg-connection-string/PG_CONNECTION_STRINGPostgreSQL 连接串;不设置则使用 SQLite
--auth-anonymous-role/AUTH_ANONYMOUS_ROLE关闭认证并给匿名用户分配 Admin/Editor/Viewer 角色
--auth-bootstrap-admin-password/AUTH_BOOTSTRAP_ADMIN_PASSWORD内置默认值默认 Admin 用户密码
--do-not-check-for-deploymentsfalse关闭部署自动追踪
--do-not-check-for-updatesfalse关闭新版本检查
--disable-usage-statisticsfalse关闭匿名使用统计
--disable-builtin-alertsfalse关闭所有内置告警规则
--bootstrap-prometheus-url引导默认项目的 Prometheus 地址
--bootstrap-refresh-interval引导 Prometheus 的抓取刷新间隔(compose 示例为 15s)
--bootstrap-clickhouse-address引导默认项目的 ClickHouse 地址(native 协议,如clickhouse:9000
--grpc-listen/GRPC_LISTEN:4317OTLP gRPC 接收端监听地址
--global-prometheus-*/GLOBAL_PROMETHEUS_*全局 Prometheus 集成(URL、账号、自定义请求头、remote-write、use-clickhouse 等)
--global-clickhouse-*/GLOBAL_CLICKHOUSE_*全局 ClickHouse 集成(地址、账号、TLS 等)

值得注意的两个细节(依据 config/config.go 与 config/config.go 的校验逻辑):

  • ClickHouse 地址校验address必须包含 host 与 port(例如clickhouse:9000),否则启动失败;
  • Prometheus 校验refresh_interval必须大于 0;URL 必须带http://https://协议前缀;extra_selector会被校验为合法的 Prometheus 标签选择器。

此外,配置文件支持os.ExpandEnv展开环境变量(config/config.go),因此 YAML 中可以直接写${VAR}形式的占位符。

多项目与配置文件驱动的进阶使用

Coroot 支持在配置文件中定义多个项目(Project),适用于多租户或多集群场景(config/project.go)。每个项目可声明:

  • name:项目名;
  • apiKeys/api_keys:接入遥测数据的 API Key(校验逻辑要求项目必须定义 API Key,除非使用memberProjectsremoteCoroot);
  • memberProjects:成员项目,用于聚合多个集群为一个多集群项目;
  • remoteCoroot:把另一套 Coroot 实例作为数据源(通过其 API Key 读取指标与日志);
  • notificationIntegrations:Slack、PagerDuty、Opsgenie、Teams、Webhook 等通知集成(实现见 notifications 目录);
  • applicationCategories:应用分类;
  • customApplications:自定义应用;
  • alertingRules:告警规则(支持对内置规则按 id 覆盖名称、severity、for、模板等,合并逻辑见 config/project.go);
  • inspectionOverrides:SLO 可用性/延迟检查的覆盖(objectivePercentobjectiveThreshold)。

这些配置在启动时通过cfg.Bootstrap写入数据库并标记为只读(见 config/bootstrap.go),其中syncConfigAlertingRules会按 id 对内置告警规则执行"存在则更新、缺失则新建"的同步策略(config/bootstrap.go)。

数据接入方式汇总

综合 main.go 与 collector/grpc.go,Coroot 提供以下接入通道:

  1. OTLP gRPC(首选):4317端口接收 OpenTelemetry 的 Trace 与 Log 导出(标准 OTLP 协议,项目识别通过 gRPC metadata 中的X-API-Key头,见 collector/grpc.go);
  2. HTTP 接收端/v1/metrics/v1/traces/v1/logs/v1/profiles/v1/config(main.go),供 coroot-node-agent / coroot-cluster-agent 上报;
  3. eBPF 零插桩采集:node-agent(privileged容器 + 内核 tracing/debug 挂载)自动捕获节点级指标、请求与剖析数据;
  4. Prometheus 集成:支持抓取既有 Prometheus 或使用其 remote-write 能力(use_clickhouse模式可直接把指标存进 ClickHouse);
  5. Prometheus HTTP API 兼容代理:Coroot 自身暴露/api/project/{project}/prom/api/v1/*/api/v1/query_range等端点,可用 API Key 认证后对接 Grafana 等下游工具(main.go)。

遥测数据最终批量写入 ClickHouse(每次最多 10000 条或 5 秒内刷出,collector/collector.go),并受各 TTL 参数约束;当 ClickHouse 磁盘使用率超过阈值(默认 70%,可配clickhouse_space_manager_usage_threshold)时,空间管理器会自动清理旧分区(config/config.go)。

小结

Coroot 的价值在于把观测的三层闭环"采集 → 关联 → 洞察"中的最后一步自动化:通过 eBPF 实现零插桩采集,用 Service Map 建立全量拓扑,用 Inspections 完成内置专家审计,用 SLO 告警收敛噪音,再用部署追踪和成本监控把每次变更的影响量化。仓库中的 README.md 给出了功能全貌,而 deploy/docker-compose.yaml 提供了一条开箱即用的落地路径——克隆仓库后执行docker compose up -d,即可在几分钟内体验完整的可观测性平台。若需深入源码,建议从 main.go 的启动链路入手,依次阅读 config、collector、constructor、auditor 与 watchers 五个模块。

【免费下载链接】corootCoroot is an open-source observability and APM tool with AI-powered Root Cause Analysis. It combines metrics, logs, traces, continuous profiling, and SLO-based alerting with predefined dashboards and inspections.项目地址: https://gitcode.com/GitHub_Trending/co/coroot

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

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

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

立即咨询