Keep 开源告警管理平台:驯服告警风暴的实用指南
【免费下载链接】keepThe open-source AIOps and alert management platform项目地址: https://gitcode.com/GitHub_Trending/kee/keep
Keep 是一款开源 AIOps 告警管理平台,把散落在 Prometheus、Grafana、Datadog 等各监控工具里的告警汇聚到同一块屏幕,并提供去重、AI 关联和自动化工作流,适合被"告警风暴"刷屏、又不想再买一套商业 APM 的运维团队。
先看一个场景 🕘
凌晨两点,一个数据库慢查询,同时触发了 Prometheus 的 CPU 告警、Grafana 的响应延迟告警、Datadog 的错误率告警,你的手机在 10 分钟内震动 30 次。你真正要处理的是 1 个问题,看到的却是 30 条通知。
这就是 Keep 想解决的事:它不做监控采集,而是站在你所有监控工具的上层,把告警收进来,然后做四件事——聚合展示、去重、关联成事件、自动处理。
告警多了之后,最先缺的不是"看",而是"分清哪些是一回事"。
四个值得看的能力
所有告警聚到一张表 📋
能做什么:各监控工具的告警统一进同一个 Alert 列表,按严重程度、状态(Firing/Resolved/Suppressed)、来源、指派人筛选。怎么做:在 Providers 页面接上你的监控工具,支持 push(webhook 实时推)和 pull(定时拉取)两种方式,推荐 push。得到什么:一个事实来源,新告警通过 websocket 实时推送到页面,不用再切控制台。
左侧面板可按 Severity、Status、Source 组合过滤,右侧是实时告警流。
告警去重,先把噪音砍掉 🧹
能做什么:把"同一问题、不同来源"的告警合并成一条。分两种模式——部分去重按你指定的字段(如 service + error_message)归组;完全去重直接丢弃完全重复的告警。怎么做:每个 provider 都预置了默认的指纹字段规则,你可以按自己告警的结构改,也可以忽略某些字段(比如时间戳)。得到什么:一条告警背后挂了 N 个来源,通知量肉眼可见地降下来。规则详见 去重文档。
AI 告警关联,自动聚成事件 🔗
能做什么:把时间上、语义上相关的多条告警归成同一个 incident,比如"网络延迟高 + 应用响应慢"自动归为一起。怎么做:分两层——手动关联规则(基于告警属性写条件)人人可用;AI 关联则用 transformer 模型基于你自己的告警历史训练,界面里可以调准确率阈值、关联阈值和训练轮数,模型置信度不够时会转人工。得到什么:从"30 条告警"变成"3 个事件",排障入口少了一个数量级。注意它需要配置 AI 后端(如 OpenAI),不是开箱即用。
执行日志里能看到每条未关联告警的匹配分数和归属事件。
工作流:告警来了之后自动干活 ⚙️
能做什么:告警触发后自动执行动作——开 Jira 工单、发 Slack/邮件、调任意 HTTP 接口、跑 Python 脚本,甚至删掉故障的 K8s Pod。怎么做:工作流是 YAML 文件,可以手动上传,也可以在 Web 界面里用自然语言描述需求("每分钟查 CloudWatch 日志,发现 error 就发 Slack"),AI 会生成带触发器、条件、动作的完整工作流,你确认后保存即可。得到什么:一套"监控工具的 GitHub Actions"。仓库里 examples/workflows/ 有 100+ 现成模板可直接抄。
上手快跑 🚀
有 Docker 的话,一条命令就能跑起来(默认 compose 不带登录校验,数据落在本地 SQLite):
git clone https://gitcode.com/GitHub_Trending/kee/keep cd keep mkdir -p state docker compose up -d打开http://localhost:3000即可使用。三个容器分别是前端(3000)、后端 API(8080)、websocket(6001),全部配置见 docker-compose.yml。
接上第一个监控工具只需三步:Providers 页面选工具 → 填凭据 → 勾选 Install Webhook(让 Keep 自动帮你建 webhook)。之后去 Alerts 页面等告警进来。
边界说明:它适合谁,不适合谁 🧭
适合
- 同时用 3 个以上监控/告警工具,想统一入口的团队
- 告警量大、噪音多,需要去重、关联、自动处理
- 有 Docker 环境、愿意自己维护一个中间件层
不适合
- 想要"接上就能出监控指标"的——它不采集指标,监控工具仍然得自己部署
- 告警总量很小、一个工具就够的小团队,引入成本大于收益
- 期望 AI 功能零配置开箱即用的——需要你自己配 AI 后端密钥
- 无法部署容器化服务的纯本地脚本环境
常见坑 ⚠️
页面打得开,但告警不实时刷新→ 检查 websocket 容器(6001 端口)是否存活:docker compose ps。前端靠它推送,缺了就只有手动刷新能看到新告警。
生产环境还在用默认配置→ 默认 compose 是 NO_AUTH + 本地 SQLite,数据都在state/目录。上生产建议换 docker-compose-with-auth.yml(DB 认证,默认账号密码均为 keep,登录后立刻改密码),并把DATABASE_CONNECTION_STRING指向外部 PostgreSQL。
AI 关联/助手点了没反应→ 后端从环境变量OPENAI_API_KEY读密钥(支持用OPENAI_BASE_URL指向 LiteLLM 等代理)。启动 compose 前没注入这个变量,AI 功能就是空的。
pull 模式拉不到实时告警→ pull 主要用来回补历史告警,不触发工作流。要实时就开 push 模式(provider 设置里的 Install Webhook),这也是官方推荐方式。
升级/重装后数据没了→ 数据全在state/目录(含 SQLite 库和 secrets 文件)。备份或迁移前,先停容器再整体拷贝这个目录。
写在最后
Keep 的定位很克制:不替换你的监控工具,只做"告警进来之后"的聚合、降噪和自动化这一层——这恰恰是大多数团队最缺的一块。
- 用上面 4 行命令先跑起来,随便接一个 Prometheus 试试
- 抄一个 examples/workflows/ 里的模板,体验告警自动处理
- 告警量上来之后再考虑去重规则和 AI 关联,先降噪再上智能
【免费下载链接】keepThe open-source AIOps and alert management platform项目地址: https://gitcode.com/GitHub_Trending/kee/keep
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考