kube-rca/kuberca
GitHub: kube-rca/kuberca
KubeRCA 是一款面向 Kubernetes 的 AI 驱动根因分析工具,能够自动采集集群上下文并利用大语言模型将零散告警转化为结构化的故障分析报告。
Stars: 9 | Forks: 0
KubeRCA
AI 驱动的 Kubernetes 事件分析与根因分析
将 Kubernetes 告警转化为可操作的根因分析——只需几秒,而非数小时。
## 实战演示
以下是一些正在运行的 KubeRCA 安装实例的截图。仪表盘将告警与事件关联起来,并且每个事件都会获得一份 LLM 生成的 RCA 摘要,该摘要会同时显示在 Slack 和 UI 中。
### 事件仪表盘
所有事件的集中视图——支持搜索、按严重程度/状态筛选,以及导出为 CSV。
### 告警仪表盘
每个 Alertmanager 告警都与其父事件相关联,并附带了 namespace 和严重程度上下文。
### Slack — 线程中的 AI 分析
每个触发的告警都会发送到 Slack,LLM 生成的 RCA 摘要(根因、影响、建议措施)会自动添加到同一个线程中。
### 事件详情 — 完整的 RCA 报告
每个事件都会展示结构化的分析:根因、影响范围、已采取的缓解步骤、预防建议,以及通过基于 embedding 的相似事件搜索提取的相关告警。
### 告警详情 — 每次告警的 AI 分析
每个告警都跟踪其自身的分析生命周期(firing → resolved),将 LLM 的摘要、证据、建议的修复措施和运维人员反馈集中在一处。
## 为什么选择 KubeRCA
KubeRCA 是一个开源工具,用于将 Kubernetes 告警转化为可操作的事件上下文、AI 辅助分析和运维工作流。
它是为填补“告警触发”到“我们了解发生了什么”之间的空白而构建的。在许多 Kubernetes 环境中,运维人员在开始推理根本原因之前,仍然需要手动收集日志、指标、事件、追踪和过往事件笔记。KubeRCA 通过将告警接收、上下文收集、RCA 生成、Slack 线程交付和仪表盘工作流整合到一个系统中,从而缩短了这个闭环。
### 它旨在解决的操作问题
- **上下文收集缓慢**:在每次告警之后,团队需要花费时间在 Kubernetes、监控工具、Slack 和仪表盘之间来回切换。
- **RCA 质量因运维人员而异**:初始假设、收集的证据和解释格式通常取决于值班人员是谁。
- **过往事件难以复用**:类似的故障可能已经发生过,但响应知识很少能以结构化的方式被搜索到。
KubeRCA 通过在事件发生时捕获事件数据、生成可解释的 RCA 摘要,并将相关事件、反馈和后续讨论纳入同一个工作流中,从而解决了这些痛点。
## 何时使用
如果您已经在使用 Alertmanager 运维 Kubernetes,并希望实现更快速的事件分诊、更一致的 RCA 以及可搜索的事件历史记录,那么 KubeRCA 是一个非常合适的选择。
### 最适合
- 通过 Alertmanager 接收生产或预发布环境告警的团队。
- 使用 Slack 线程或 Web 仪表盘作为其事件处理工作台的运维人员。
- 类似事件反复发生且历史记录复用具有价值的环境。
- 希望获得 LLM 辅助分诊,但不想替换现有可观测性技术栈的平台。
### 不适合
- 没有结构化告警的仅日志工作流。
- 寻找通用 APM 替代品,而不是专注于事件的 RCA 辅助的团队。
- 希望拥有完全自治的修复引擎,而不是“运维人员在环”分析的组织。
## 工作原理
```
flowchart TD
AM[Alertmanager]
SL[Slack]
LLM[LLM Provider]
K8S[Kubernetes API]
PR[Prometheus]
TP[Tempo]
subgraph KubeRCA
FE[Frontend]
BE[Backend]
AG[Agent]
DB[(PostgreSQL + pgvector)]
end
AM -->|Webhook| BE
FE <-->|REST + SSE| BE
BE -->|Analyze / Summarize / Chat| AG
BE -->|Thread notifications| SL
BE <-->|Incidents / alerts / embeddings| DB
AG -->|Cluster context| K8S
AG -->|Metrics| PR
AG -.->|Trace context| TP
AG -->|Inference| LLM
```
### 运维人员工作流
| 阶段 | 发生的操作 |
| --- | --- |
| 告警接收 | Alertmanager 通过 `POST /webhook/alertmanager` 将告警发送到 Backend。 |
| 事件创建 | Backend 创建或更新事件、存储告警,并跟踪 Slack 线程元数据。 |
| RCA 生成 | Backend 调用 Agent,由其收集 Kubernetes 和可观测性上下文并运行 LLM 分析。 |
| 团队可见性 | Backend 将结果发布到 Slack 线程,并通过 SSE 将更新流式传输到 Frontend。 |
| 解决工作流 | 运维人员可以解决事件、手动解决告警、搜索相似事件、留下反馈以及使用应用内聊天。 |
| 知识复用 | 事件摘要和 embedding 存储在 PostgreSQL + pgvector 中,以供日后搜索和审查。 |
有关完整的运行时序列和 API 接口,请参阅[架构详情](docs/ARCHITECTURE.md)以及 [docs/diagrams](docs/diagrams/) 下的图表。
## 核心能力
### 从检测到 RCA
- 通过 Alertmanager webhook 集成接收告警,并自动将其映射为事件和告警。
- 收集受影响工作负载相关的 Kubernetes、Prometheus 和 Tempo 上下文。
- 使用采用 `gemini`、`openai` 或 `anthropic` 的 Strands Agents 运行 RCA。
### 运维人员工作流
- 将事件更新和 RCA 摘要发布到 Slack 线程对话中。
- 通过带有轮询回退机制的 SSE,将事件和告警状态变更流式传输到仪表盘。
- 支持手动解决告警、反馈评论和投票,以及上下文感知聊天。
### 搜索与知识复用
- 总结已解决的事件并将 embedding 存储在 PostgreSQL + pgvector 中。
- 搜索相似的过往事件,以复用调查模式和响应方案。
- 将事件、告警、反馈和 webhook 路由数据保存在同一个记录系统中。
### 部署与访问
- 使用 `kube-rca` Helm chart 部署完整技术栈。
- 默认使用本地身份验证,或启用 Google OIDC 以实现 SSO 式访问。
- 在现有的 Kubernetes 和监控设置之上运行,无需替换它们。
## 10 分钟评估路径
如果您希望快速评估系统而不是先阅读所有文档,请使用此路径。
### 1. 安装技术栈
```
helm upgrade --install kube-rca oci://public.ecr.aws/r5b7j2e4/kube-rca-ecr/charts/kube-rca \
--namespace kube-rca --create-namespace \
-f values.yaml
```
最简化的 `values.yaml` 示例:
```
postgresql:
auth:
existingSecret: ""
password: "change-me"
backend:
slack:
enabled: false
postgresql:
secret:
existingSecret: ""
embedding:
apiKey:
existingSecret: ""
agent:
aiProvider: "gemini"
gemini:
apiKey: "YOUR_GEMINI_API_KEY"
secret:
existingSecret: ""
frontend:
ingress:
enabled: true
hosts:
- "kube-rca.example.com"
```
### 2. 连接 Alertmanager
```
receivers:
- name: "kube-rca"
webhook_configs:
- url: "http://kube-rca-backend.kube-rca.svc.cluster.local:8080/webhook/alertmanager"
send_resolved: true
route:
receiver: "kube-rca"
```
### 3. 确认首个事件流
- 从您的集群触发或转发一个真实的告警。
- 验证 Backend 是否存储了告警、Agent 是否返回了分析结果,以及仪表盘是否实时更新。
- 如果启用了 Slack,请确认事件和 RCA 是否发布在同一线程中。
### 4. 评估后续工作流
- 解决一个事件,并验证事件摘要和相似性搜索。
- 尝试对 Alertmanager 解决可能延迟的情况进行手动告警解决。
- 打开聊天面板或反馈流程,看看运维人员如何完善或讨论分析结果。
需要分步设置?请参阅完整的 [Helm Chart README](charts/kube-rca/README.md) 和安装指南:
- 한국어 — [설치 가이드](docs/installation-guide-ko.md)
- English — [安装指南](docs/installation-guide-en.md)
两者都从头到尾演示了首个场景。
## 集成与部署模型
| 领域 | 默认 / 支持 | 备注 |
| --- | --- | --- |
| 告警来源 | Alertmanager | 事件和告警的主要摄取路径 |
| 通知 | Slack | 可选,但与线程化事件工作流高度契合 |
| AI 提供商 | Gemini, OpenAI, Anthropic | 通过 `agent.aiProvider` 进行选择 |
| 集群上下文 | Kubernetes API | 核心运行时证据来源 |
| 可观测性增强器 | Prometheus, Tempo | 配置后的附加信号源 |
| 数据库 | PostgreSQL + pgvector | 事件、反馈和 embedding 存储 |
| 认证 | 本地认证, Google OIDC | OIDC 是可选的 |
| 部署 | Helm, 以 ArgoCD 为导向的使用 | 该 Chart 是主要的部署入口 |
## 文档与代码库结构
### 从这里开始
- [架构详情](docs/ARCHITECTURE.md)
- [项目背景](docs/PROJECT.md)
- [安装指南 (韩语)](docs/installation-guide-ko.md)
- [Helm Chart README](charts/kube-rca/README.md)
### 组件参考
- [Backend README](backend/README.md)
- [Agent README](agent/README.md)
- [Frontend README](frontend/README.md)
### 图表
- [系统上下文](docs/diagrams/system_context_diagram.md)
- [告警分析序列](docs/diagrams/alert_analysis_sequence_diagram.md)
- [事件分析序列](docs/diagrams/incident_analysis_sequence_diagram.md)
- [登录序列](docs/diagrams/login_sequence_diagram.md)
### 代码库结构
```
.
├── backend/ Go API for auth, incidents, alerts, embeddings, feedback, chat, and SSE
├── frontend/ React dashboard for incident operations and realtime views
├── agent/ FastAPI analysis service for RCA, incident summaries, and chat
├── charts/ Helm chart for deploying KubeRCA into Kubernetes
├── chaos/ Chaos Mesh scenarios and helper scripts for failure injection
└── docs/ Architecture, guides, diagrams, and assets
```
### 本地开发
```
# Backend
cd backend
go test ./...
# Agent
cd agent
make install
make test
# Frontend
cd frontend
npm ci
npm run dev
# Helm
helm repo add bitnami https://charts.bitnami.com/bitnami --force-update
helm dependency build charts/kube-rca
helm lint charts/kube-rca
```
## 常见问题解答
### 我需要 Slack 吗?
不需要。Slack 是可选的。您可以从纯仪表盘流程开始,如果线程通知适合您的事件处理流程,可以稍后再启用 Slack。
### 我需要 Tempo 或其他高级可观测性后端吗?
不需要。KubeRCA 可以从 Kubernetes 告警和核心集群上下文路径开始。当额外的可观测性后端可用时,可以提高分析的深度。
### 我可以使用外部 PostgreSQL 吗?
可以。该 Chart 支持在捆绑依赖之外配置 PostgreSQL。有关特定于安装的值,请参阅 Chart README。
### 我应该从哪个 AI 提供商开始?
为了最快上手,项目示例使用了 Gemini,但通过相同的提供商抽象,同样也支持 OpenAI 和 Anthropic。
### 我可以在没有 OIDC 的情况下运行吗?
可以。在没有 OIDC 的情况下,本地认证即可正常工作。Google OIDC 是可选的,可以在您需要集中登录时稍后启用。
### 支持哪些语言?
目前,KubeRCA 支持韩语和英语。
## 许可证
该项目基于 **Apache License, Version 2.0** 授权。详情请参阅 [LICENSE](LICENSE) 和 [NOTICE](NOTICE)。
标签:AI, Apache-2.0, DLL 劫持, EVTX分析, Go, Helm, LLM, Python, RCA, React, Ruby工具, Slack集成, SRE, Syscalls, Unmanaged PE, XML注入, 事件管理, 人工智能, 仪表盘, 偏差过滤, 告警分析, 大语言模型, 子域名突变, 故障排查, 无后门, 日志审计, 根因分析, 测试用例, 用户模式Hook绕过, 自动化代码审查, 自定义请求头, 逆向工具