- 🔍 统一视图 - 用于所有告警和事件的最佳可定制界面
- 🛠️ 告警多功能助手 - 去重、关联、过滤与丰富
- 🔄 深度集成 - 与监控工具双向同步,并支持自定义工作流
- ⚡ 自动化 - 为你的监控工具提供 GitHub Actions
- 🤖 AI 事件分析 - AI 驱动的关联与摘要、中文事件报告,支持 DeepSeek / Qwen / GLM 等国产大模型
上游 Keep 是一款优秀的开源 AIOps 平台:477 个监控/工单/通信集成、声明式工作流引擎、AI 告警关联,这些能力在国内没有同量级的开源替代。但它是围绕海外生态设计的,直接放进国内企业环境,"能跑起来,却用不起来":
- 集成断供:477 个集成里没有钉钉、企业微信、飞书,也没有阿里云/腾讯云监控——国内团队最高频的告警触达渠道一个都没有,只能靠通用 webhook 兜底;
- 默认值不匹配:界面与 AI 提示词默认英文,AI 后端默认 OpenAI/Anthropic,国产大模型要自己想办法接;
- 部署假设不同:认证默认对接 Auth0/Okta 等 SaaS IdP,与国内企业内网环境(LDAP、受限外网)有距离。
而国内的另一头,监控采集层已经非常成熟——Zabbix、Prometheus、夜莺、云厂商监控各司其职。真正碎片化、没人管的是告警之后的第一公里:告警风暴无人收敛、值班靠人肉盯群、事件处置没有沉淀、AI 分析基本空白。商业 AIOps(智能告警收敛方向)客单价在百万级,中小企业用不起;开源侧只有 PrometheusAlert 这类"消息转发器",没有完整的聚合、事件与 AI 平台。
这个空档就是本项目的立足点:以 MIT 协议的 Keep 为底座,做一款中国企业场景真正可用的开源告警聚合与 AI 事件管理平台。 中文化只是第一层,核心是补上国内生态的三块短板:国内 IM 触达、国产大模型接入、内网私有化部署。
更夫是古代的夜间值守人:巡夜、报时,发现火情就敲锣示警,把要紧的警讯送到该听到的人耳朵里。他做的事正是这个产品做的事——值守(on-call)、分辨真警讯、把对的通知发给对的人。产品的告警通知里也保留了这个彩蛋:「天干物燥,小心火烛」。
监控采集不归更夫管——Zabbix、Prometheus、夜莺、云监控继续各司其职。更夫承接的是告警产生之后的一切:
监控层(夜莺 / Prometheus / Zabbix / 云监控 / 日志系统)
│ webhook / API 接入
▼
更夫:接入汇聚 → 去重降噪关联 → 值班与通知(钉钉 / 企微 / 飞书)
→ 事件管理 → AI 分析与报告 → 工作流自动化处置
已完成
- 全模块界面中文化(zh-CN)
- AI 提示词与事件报告中文输出:多模板报告、报告聊天历史持久化
- 内网私有化部署套件(
deploy/idc/):LDAP 认证、无 Redis 降级运行、VictoriaMetrics 监控栈 - AI 模型数据库化配置:OpenAI 兼容接口直连 DeepSeek / Qwen / GLM 等国产模型
- 国内 IM 三件套原生 provider:钉钉(加签/关键词)、企业微信(@手机号)、飞书(签名/卡片)
进行中 / 计划
- 每季度审阅上游安全与核心修复,按需 cherry-pick 吸收(不做全量合并;依赖更新由 dependabot 自动化)
- 海外 SaaS 集成(PagerDuty、ServiceNow、Slack 等)转为默认关闭的可选项
- 国产大模型兼容矩阵:验证工具已就绪(
scripts/verify_llm_compat.py),待接入各家 API key 实测并产出矩阵 - 企业微信/飞书 @ 指定值班人(需开放平台 user_id 映射)
本仓库是 keephq/keep(MIT License)的中文发行版。更夫独立演进:按自己的路线图做国内化与二次开发,不向上游回馈 PR;每季度审阅一次上游变更,安全修复与核心 bug 修复按需 cherry-pick 吸收,其余不跟进。MIT 许可证与版权声明完整保留,致谢见文末。
|
Anthropic |
OpenAI |
DeepSeek |
Ollama |
LlamaCPP |
Grok |
|
Gemini |
|
BigQuery |
ClickHouse |
Databend |
MongoDB |
MySQL |
PostgreSQL |
|
Snowflake |
|
Discord |
Google Chat |
Mailgun |
Mattermost |
Ntfy.sh |
Pushover |
Resend |
|
SendGrid |
Slack |
SMTP |
Telegram |
Twilio |
Teams |
Zoom |
|
Zoom Chat |
|
Grafana Incident |
Grafana OnCall |
Ilert |
Incident.io |
AWS Incident Manager |
OpsGenie |
|
PagerDuty |
Pagertree |
SINGL4 |
Squadcast |
Zenduty |
Flashduty |
|
Asana |
GitHub |
GitLab |
Jira |
Linear |
LinearB |
Microsoft Planner |
|
Monday |
Redmine |
ServiceNow |
Trello |
YouTrack |
|
Azure AKS |
ArgoCD |
Flux |
GKE |
Kubernetes |
OpenShift |
|
Bash |
OpenAI |
Python |
QuickChart |
SSH |
Webhook |
|
Airflow |
|
Amazon SQS |
Kafka |
Keep 是为你的监控工具提供的 GitHub Actions。
Keep 工作流是一个声明式的 YAML 文件,自动化你的告警与事件管理。每个工作流包含:
- 触发器 - 启动工作流的事件(告警、事件、计划或手动)
- 步骤 - 读取或拉取数据(丰富、上下文)
- 操作 - 执行动作(更新工单、发送通知、重启服务器)
下面是一个简单的工作流,在 payments 与 api 服务中为每个来自 sentry 的 critical 告警创建 Jira 工单。
更多工作流请见 examples/workflows 目录。
workflow:
id: sentry-alerts
description: create ticket alerts for critical alerts from sentry
triggers:
- type: alert
# customize the filter to run only on critical alert from sentry
filters:
- key: source
value: sentry
- key: severity
value: critical
# regex to match specific services
- key: service
value: r"(payments|ftp)"
actions:
- name: send-slack-message-team-payments
# if the alert is on the payments service, slack the payments team
if: "'{{ alert.service }}' == 'payments'"
provider:
type: slack
# control which Slack configuration you want to use
config: " {{ providers.team-payments-slack }} "
# customize the alert message with context from {{ alert }} or any other {{ step }}
with:
message: |
"A new alert from Sentry: Alert: {{ alert.name }} - {{ alert.description }}
{{ alert}}"
- name: create-jira-ticket-oncall-board
# control the workflow flow with "if" and "foreach" statements
if: "'{{ alert.service }}' == 'ftp' and not '{{ alert.ticket_id }}'"
provider:
type: jira
config: " {{ providers.jira }} "
with:
board_name: "Oncall Board"
custom_fields:
customfield_10201: "Critical"
issuetype: "Task"
# customize the summary
summary: "{{ alert.name }} - {{ alert.description }} (created by Keep)"
description: |
"This ticket was created by Keep.
Please check the alert details below:
{code:json} {{ alert }} {code}"
# enrich the alerts with more context. from now on, the alert will be assigned with the ticket id, type and url
enrich_alert:
- key: ticket_type
value: jira
- key: ticket_id
value: results.issue.key
- key: ticket_url
value: results.ticket_url- 以开发者为先 - 现代 REST API、原生 SDK 与全面的文档,实现无缝集成
- 企业安全 - 完整认证支持(SSO、SAML、OIDC、LDAP),配合细粒度访问控制(RBAC、ABAC)与团队管理
- 灵活部署 - 可在本地或隔离环境中部署,架构与云无关
- 生产级规模 - 支持横向扩展的高可用、性能验证基础设施
最简单的启动方式是 Docker Compose(默认 NO_AUTH 免认证、SQLite 存储,适合内网试用):
mkdir gengfu && cd gengfu
curl -O https://raw.githubusercontent.com/fadewalk/gengfu/main/docker-compose.yml
docker compose up -d打开 http://localhost:4000 即可使用(API 在 http://localhost:8080)。
📖 中文快速上手:10 分钟从安装到收到第一条钉钉告警 🌙 接入夜莺 Nightingale —— 监控交给夜莺们,告警之后的事交给更夫 🗓️ 值班排班路线 —— 轻量排班 + 工作流动态解析(路线征集中)
生产环境建议:
- 认证:设置
AUTH_TYPE=LDAP并填入LDAP_URL/LDAP_BASE_DN等环境变量对接企业 AD/OpenLDAP(所有变量见 compose 文件内注释) - 数据库:注释 SQLite 连接串,启用 MySQL 段
- 集成目录默认隐藏了 54 个海外 SaaS(
KEEP_DEFAULT_HIDDEN_PROVIDERS可整体覆盖),钉钉、企业微信、飞书、Zabbix、Prometheus、Grafana 等国内常用集成开箱可见
Keep 可在多种环境与配置中运行。最简单的启动方式是使用 Docker Compose。
cd deploy/docker
docker compose up -d本项目基于 Keep(MIT License)二次开发,感谢 KeepHQ 团队与开源社区的贡献。上游的持续演进是本项目的地基;更夫独立演进,并定期审阅上游的安全与核心修复,按需吸收。

