一条告警响 100 次,怎么变成 1 次?开源 AIOps Keep 告警自动化快速上手
【免费下载链接】keepThe open-source AIOps and alert management platform项目地址: https://gitcode.com/GitHub_Trending/kee/keep
凌晨两点,数据库挂了,Prometheus、Datadog、CloudWatch 接连往你手机里塞 300 条告警,说的却是同一件事,你得逐条翻,一小时就过去了。这就是值班工程师最讨厌的告警风暴。Keep 是一个开源 AIOps 与告警自动化平台:把各家监控工具的告警汇总到一张表里,做去重、富化和关联,再用自动化工作流替你值班,把处理时间从小时级压到分钟级。
快速认识 Keep:接入、治理、自动化
一句话定位:Keep 是告警的"瑞士军刀",把 130+ 种监控工具、沟通渠道和工单系统的告警放进同一张告警表,并且支持与监控工具双向同步(你这边处理完,状态会写回源头)。
它的用法就三步主线,你按顺序做就行:
- 接入:通过 provider(连接器,对接某个第三方系统的适配层)把告警报送进来或拉取进来
- 治理:用正则提取、CSV 映射、指纹去重把杂告警洗干净
- 自动化:写 Keep 工作流,让通知、建工单、自动恢复这些事不再靠人手
一条告警的旅程:从多源接入到 AI 关联降噪
3 分钟接上 Prometheus 或 Datadog
帮你省的是自己写采集脚本的功夫。在 Prometheus 或 Datadog 侧把 webhook 指向 Keep 的 API 端点,告警立刻落到统一告警表;工具不支持推送时,也可以让 Keep 主动轮询拉取。每个连接器的实现都在 keep/providers/ 里,照着看就能懂它怎么解析告警。
用正则从告警正文里抠出结构化信息
帮你省的是"同一个报错重复 100 次、只有客户号不同"时人工比对的功夫。机制是:你定义一条提取规则,指定对 message 这类字段跑正则,正则里的命名分组会被直接加为告警的新属性。比如 docs/ 里给的例子,从Error 404: Not Found - [UserID: 12345]里一把抽出错误码、错误信息和 user_id:
Error (?P<error_code>\d+): (?P<error_message>.+) - [UserID: (?P<user_id>\d+)]抽出来的属性马上能用于过滤、映射和分组。
指纹去重:把重复告警归成一条
帮你省的是反复被同一条告警叫醒的功夫。每个 provider 都声明了一组指纹字段(fingerprint,用于判断"两条告警是不是同一件事"的字段组合),Keep 对这些字段做哈希:指纹相同就算同一条,合并展示、合并触发。例如 Datadog 用的是groups + monitor_id。规则还能自定义,详见 docs/overview/deduplication.mdx。
用 AI 关联自动聚类
帮你省的是手工把散告警拖进事件单(incident,一次故障的聚合单元)的功夫。AI 关联引擎用你租户的历史告警做训练集,每 5~15 分钟跑一轮聚类,未分配告警置信度超过阈值就自动并入对应事件。注意该能力属于 Keep Cloud / 企业版,开源版不含。
让工作流替你值班:CEL 条件触发 + 一句话生成
一行 CEL 条件就能触发
帮你省的是写 if-else 代码的功夫。CEL(Common Expression Language,一门用来写条件的简洁表达式语言)在 Keep 里贯穿始终:告警列表过滤、工作流触发、维护窗口抑制都用它。工作流就是一个 YAML 文件:triggers 定义何时跑,steps 取数,actions 干活。官方 README 里这个例子只筛 Sentry 的 critical 告警:
workflow: id: sentry-alerts triggers: - type: alert filters: - key: source value: sentry - key: severity value: critical再配上 actions,就能给指定团队发 Slack、按条件建 Jira 工单,工单号还能回填进告警属性,下次同样的告警直接带上单号。
一句话生成告警工作流
帮你省的是背 YAML 字段的功夫。在 Workflows → Create Workflow 里打开 AI 助手,用大白话描述需求(比如"每分钟查 CloudWatch 日志发现错误就发 Slack"),它会生成完整的工作流草稿,你确认后才应用——开源版标注为 experimental,先用起来再打磨。
值班期实用功能:拓扑视图、维护窗口与自监控指标
服务拓扑关联视图
帮你省的是"这个服务挂了还会拖累谁"靠脑子想的功夫。Service Topology 把服务画成节点、依赖画成边,告警一关联上来,影响面在图上直接看得见,支持 Datadog、PagerDuty 等来源。
维护窗口抑制计划内告警
帮你省的是凌晨例行发布时被"预期内的错误"吵醒的功夫。机制:用一条 CEL 表达式定义抑制条件(比如service == 'database'),再设时间窗,窗口内匹配的告警直接不推送;但 RESOLVED 和 ACKNOWLEDGED 状态的告警不会被抑制,保证恢复消息能正常关单。
用指标盯着 Keep 自己
帮你省的是"告警平台挂了没人知道"的暗坑。后端提供/healthcheck健康检查端点和/api/metrics使用量指标;仓库自带的 docker-compose.yml 里预置了 Prometheus + Grafana 组件,用grafanaprofile 启动即可看板监控。
怎么跑起来:docker compose 两分钟 + 自定义 provider
docker compose 本地跑起来
帮你省的是本地装数据库和依赖的功夫。克隆仓库后一条命令启动,前端在 3000 端口、后端 API 在 8080 端口,另带一个 websocket 服务;默认用 SQLite,数据落在./state目录。
git clone https://gitcode.com/GitHub_Trending/kee/keep cd keep docker compose up -d开发一个自定义 provider
自家内部系统不在 130+ 连接器里时,从 keep/providers/base/ 的BaseProvider起步:声明认证配置(PROVIDER_SCOPES)和去重用的FINGERPRINT_FIELDS,实现查询方法,平台即可识别它。想参考现成写法,随便挑一个 provider 目录对照即可。
上手清单(按团队规模挑着做)
- 1~3 人小团队:先只接 Prometheus 或 Grafana OnCall,开默认指纹去重,把散落在几个工具里的告警合成一张表 ⚡
- 约 10 人团队:加正则提取和 CSV 映射(把 region 映射到负责团队),再写一个自动建 Jira 工单的工作流,examples/workflows/ 里有 100+ 现成模板可抄
- 有轮值制度的团队:给例行发布配维护窗口,把
/api/metrics接进 Prometheus 看住 Keep 本身 ✅ - 所有规模:先挑 1~2 个最高频的告警场景跑通,一周后按处理时间变化决定是否扩大接入范围,别一上来就把所有工具全接进来
【免费下载链接】keepThe open-source AIOps and alert management platform项目地址: https://gitcode.com/GitHub_Trending/kee/keep
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考