robusta
Kubernetes Prometheus 告警智能富化工具,自动附加日志、图表与修复建议
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Kubernetes Prometheus 告警智能富化工具,自动附加日志、图表与修复建议
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这个场景:凌晨三点,你的手机突然震个不停——Prometheus 告警狂响,密密麻麻的 Slack 消息堆了几十条。你睡眼惺忪地点开,每条告警都只有一行"Pod OOMKilled",没有日志、没有上下文、没有建议。你挨个去 kubectl 查、去找日志、去猜原因,折腾半小时才发现只是一个应用正常重启。
这是每一个 Kubernetes 运维工程师都经历过的噩梦。Prometheus 解决了"怎么监控"的问题,但它输出的告警本质上只是信号,没有上下文、没有故事、没有行动指南。Robusta 正是为了解决这个问题而生——它像一个"告警翻译官",把 Prometheus 的原始告警变成带 Pod 日志、带相关图表、带自动修复建议的富化通知。
Robusta 的诞生源于 Kubernetes 监控的真实痛点。kube-prometheus-stack 虽然免费且强大,但它的告警默认是"扁平的"——一条告警就是一条告警,没有任何附加信息。当一个生产集群每天产生上百条告警时,运维团队淹没在噪音中,真正重要的告警反而被淹没。
Robusta Classic(规则引擎版)最早由 Arik Alon 于 2021 年创建,定位是"Prometheus 告警的智能增强层"。用户无需改造现有的 Prometheus 配置,只需要在 Alertmanager 中加一个 webhook 指向 Robusta,就能自动获得增强后的告警体验。目前 Robusta 已有超过 3000 颗 GitHub 星标,被大量中大型企业的 Kubernetes 集群采用。
除了开源的 Classic 版本,Robusta 团队还推出了 HolmesGPT(AI 驱动的告警根因分析)和 Robusta Platform(在线 SaaS 平台),形成了从规则引擎到 AI 智能的完整产品线。
Prometheus 的原始告警是逐条发送的——一个 Deployment 的 10 个 Pod 重启,就会产生 10 条独立的 OOMKilled 告警,足以把 Slack 频道刷屏。Robusta 的智能分组(Smart Grouping)会自动将相关告警聚合到一个 Slack Thread 中,运维人员只需要看一条汇总消息,而不是 10 条碎片。
这是 Robusta 最核心的能力。当告警触发时,Robusta 会自动查询并附加:
用户收到的 Slack 消息不再只是一行文字,而是包含所有排查线索的"调查面板"。
Robusta 支持定义自动化修复规则(Playbooks)。例如:检测到 Pod OOMKilled → 自动重启 Pod;检测到 Job 失败超过 N 次 → 自动清理并重新运行;检测到 PVC 空间不足 → 自动扩容。这些修复可以是完全自动的,也可以是"仅建议、不执行"模式。
除了处理 Prometheus 告警,Robusta 还能直接从 Kubernetes API 拉取数据,检测诸如 OOMKills、失败的 Job、异常的 HPA 变更等问题——完全不需要写 PromQL 查询,降低了对 Prometheus 专业知识的门槛。
Robusta 与 HolmesGPT 深度集成,可以在告警触发时自动调用 LLM 进行根因分析,为运维人员提供 AI 生成的分析报告和建议修复步骤。
Robusta 的代码库采用 Python(3.10+)开发,核心依赖包括:
| 依赖 | 作用 |
|---|---|
kubernetes | K8s API 交互,读 Pod/Deployments/Events |
pydantic | 数据模型定义,结构化告警/事件建模 |
slack-sdk | Slack 消息发送和富化卡片 |
flask | 内置 HTTP 服务,接收 Alertmanager webhook |
prometheus-client | Prometheus 指标暴露(Robusta 也暴露自己的 metrics) |
jinja2 | 告警消息模板渲染 |
整体架构分为以下几个核心模块:
src/robusta/core/:核心告警处理引擎,包括告警解析、富化执行器、Playbook 调度器src/robusta/integrations/:各类集成实现(Slack、Teams、Jira、Opsgenie、Datadog 等 24 种 sink)src/robusta/runner/:Runner 进程,持续监听 K8s 事件和 Prometheus 告警src/robusta/api/:配置 API 和 Web 接口playbooks/:预置的 Playbook 规则集(可 pip 安装的 Python 包)helm/robusta/:Helm Chart,K8s 部署配置Playbook 是 Robusta 的扩展单元,本质上是一个 Python 类。用户定义触发条件(Trigger)和响应动作(Action):
class MyPlaybook(JavaActionTriggerSpec):
def get_actions(self):
return [PrometheusEnricher, ExecutorServicePodRestart]
Robusta 通过预置的 Playbook(如 prometheus_enricher、log_enricher、common_actions)提供了开箱即用的能力,用户也可以用 Python SDK 编写自定义 Playbook。
Robusta 通过 Helm Chart 部署到 Kubernetes 集群中,运行模式是"常驻守护进程":
Helm 安装 Robusta → Robusta Runner Pod 运行 → 监听 K8s API + Alertmanager Webhook
部署前置条件:
安装时会创建两个核心组件:Robusta Runner(主服务)和 Robusta API Server(配置管理),以及对应的 Kubernetes Service 和 RBAC 权限。
部署本身通过 Helm 2-3 行命令即可完成,难度中等,适合有 K8s 运维经验的团队。硬件需求极低,无需 GPU,普通 2 核 2GB 即可运行。
Robusta 的定位是集群级运维工具,它需要:
这些都决定了它不适合在本地单机环境一键运行。个人开发者若想体验,需要有一个 K8s 集群(可以用 kind/minikube 本地搭建)或使用 Robusta 的托管 SaaS 平台。
Robusta 的出现填补了"Kubernetes 告警增强"这个细分领域的空白。随着 Kubernetes 在企业中的大规模落地,Prometheus 虽然解决了监控数据采集问题,但告警体验的提升一直是社区痛点。Robusta 用极低的接入成本(加 webhook)提供了极大的体验提升,这是它的核心价值。
局限性:
Robusta 是 Kubernetes 运维工程师的"告警瑞士军刀"——通过简单的 Helm 安装,就能让 Prometheus 告警从"哑巴消息"变成"智能情报"。它的模块化 Playbook 设计让扩展变得容易,丰富的内置集成(24+ 种 Sink)覆盖了大多数团队的通知和协作工具链。
如果你正在运营 Kubernetes 集群并被 Prometheus 告警的噪音困扰,Robusta 是一个值得一试的低成本解决方案。