开源项目
ccfos/nightingale avatar
ccfos/nightingale

夜莺 Nightingale v9:把告警引擎做成数据源之上的独立层

Nightingale 之于监控和警报,就像 Grafana 之于可视化一样。

13,288 个 Star1,776 个 ForkGoApache-2.0

秒懂

它是什么?
Nightingale 是一个开源告警平台,定位是告警领域的 Grafana。它不采集数据,而是接住 Prometheus Remote Write 的数据,在时序库之上做规则、通知和降噪,v9 版本还内置了 MCP 服务。
适合谁用?
如果你的团队已经有成熟的监控采集和时序存储,缺的是一个能集中配置告警规则、统一分发通知的引擎,Nightingale 值得认真评估。它不适合需要事件聚合、值班排班、升级策略和协作闭环的场景,官方文档明确建议这类需求转向 PagerDuty 或 FlashDuty。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 Go(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

告警引擎的定位,和 Grafana 的差异

Nightingale 把自己比作告警领域的 Grafana,这个类比很准确,但也容易误导。Grafana 的核心是可视化面板,Nightingale 的核心是告警规则和通知分发。它不采集指标,不存储时序数据,这些分别交给 Categraf 和 Prometheus、VictoriaMetrics 这类组件。你已经有监控数据,只是缺一个统一的告警层,这正是 Nightingale 解决的问题。它的目标用户是已经跑了 Prometheus 或 ElasticSearch、但告警规则散落在各处的团队。把数据源接进来,在 Nightingale 里配规则,告警生成和分发就集中了。

数据流:Remote Write 进,规则出

从 README 的架构描述看,数据流是单向的。Categraf 采集操作系统、中间件、数据库的指标,通过 Prometheus Remote Write 协议推给 Nightingale。Nightingale 自己不落盘,而是把数据转发给后端的时序数据库,告警引擎在时序库之上跑规则。这意味着你已有的 Prometheus 或 VictoriaMetrics 可以直接复用,不需要迁移数据。告警规则在 Nightingale 里配置,触发后按通知规则分发到电话、短信、邮件、钉钉、Slack 等 20 种媒介。这个设计有个好处:告警逻辑和数据存储解耦,换时序库不影响规则。但代价是引入了一个额外跳板,Remote Write 的稳定性和延迟会直接影响告警质量。

边缘部署:n9e-edge 解决断网告警

分布式部署模式是 Nightingale 的一个亮点。文档描述的场景是:数据中心 A 网络好,直接用中心机房的 Nightingale 进程做告警引擎;数据中心 B 网络差,就在本地部署 n9e-edge,让边缘节点自己跑告警规则。断网时,边缘告警不受影响。这个机制对边缘计算或跨国分支的场景很实用,但 README 没有给出 n9e-edge 的详细配置方式,比如规则如何同步、边缘和中心如何对账。如果你想用这个模式,需要去文档里找更多细节,或者直接看源码。

内置 MCP:AI 直接操作告警

v9 最大的新增量是内置 MCP 服务。n9e 进程本身在 /mcp 路径暴露 Model Context Protocol 端点,不需要额外部署进程。连接方式很简单,在 MCP 客户端配置里填 URL 和 X-User-Token 头。认证复用 Nightingale 自己的 TokenAuth,每次工具调用都带着调用者的 token,RBAC 和业务组权限在 AI 调用时同样生效。这意味着 AI 助手只能操作它 token 所有者能操作的东西,权限边界清晰。工具集覆盖 alerts、targets、datasource、mutes、busi_groups 等 13 类,共 74 个工具,其中 42 个读、32 个写。写工具默认关闭,需要在 etc/config.toml 里显式设置 MCPEnableWriteTools = true。这个默认只读的设计很谨慎,AI 误操作的风险被压到最低。

OAuth 2.1 与 A2A:企业身份接入

除了 token,/mcp 还支持 OAuth 2.1。Nightingale 可以自己当授权服务器,支持 RFC 7591 动态客户端注册和 PKCE,Claude 或 ChatGPT 这类托管客户端可以零预注册直接连。也可以当资源服务器,对接 Keycloak、Entra ID、Okta、Auth0 这类企业 IdP,每个 token 映射到本地用户,权限和审计保持到人。同进程还暴露 /a2a 端点,封装内置 AI 助手,用于 agent 到 agent 集成。如果你不想用内置的,还有独立的 n9e-mcp-server 项目提供相同工具。这套设计把 AI 接入从实验性质推向了企业可用,但 OAuth 的两种模式分别需要看 doc/api 下的两个文档,README 没有展开细节。

明确的功能边界:不做事件聚合和值班

README 里有一段非常直白的自我限制。如果你想把多个监控系统的事件汇总到一个平台做统一降噪、响应和数据分析,或者需要值班排班、告警升级、协作处理,Nightingale 不适合。官方建议这类需求选 PagerDuty 或 FlashDuty。这个边界很有价值,很多项目什么都想做,最后什么都做不好。Nightingale 清楚自己是一个告警引擎,不是 on-call 平台。但这也意味着你如果选了它,告警升级和值班还得靠别的工具,集成成本需要提前算进去。

部署与配置:从 Docker 到 config.toml

部署入口是 Docker Hub 的 flashcatcloud 镜像。README 没有给出具体的 docker run 命令,但仓库结构表明配置文件是 etc/config.toml。MCP 相关的配置都在 [HTTP.A2A] 段下,DisableMCP 可以关掉 /mcp,MCPToolsets 限制暴露的工具集,MCPEnableWriteTools 开启写工具。认证依赖 [HTTP.TokenAuth],所以这个配置项要保持启用。如果你只想用告警功能,不碰 MCP,这些配置都可以忽略。但如果你想用 AI 助手,至少得在 Web UI 的 Profile → Token Management 里创建一个个人访问 token。整个配置是声明式的,改动后重启进程即可,没有看到热加载的说明。

维护成本与许可证

项目使用 Apache-2.0 许可证,这对商业使用友好,没有 copyleft 约束。仓库由 CCF ODTC 托管,最初由滴滴开源,2022 年捐赠给中国计算机学会。v9.1.1 是 2026 年 8 月的最新版本,v9.0.0 在 7 月发布,迭代节奏大约每月一个 minor 版本。升级成本主要来自配置兼容性,尤其是 MCP 和 A2A 这类新功能,升级前需要检查 config.toml 的变更。社区渠道有 Slack,文档在 flashcat.cloud/docs。整体看,项目维护活跃,但你没有理由假设 API 稳定,生产环境升级前应该读 changelog。

编辑结论

如果你的团队已经有成熟的监控采集和时序存储,缺的是一个能集中配置告警规则、统一分发通知的引擎,Nightingale 值得认真评估。它不适合需要事件聚合、值班排班、升级策略和协作闭环的场景,官方文档明确建议这类需求转向 PagerDuty 或 FlashDuty。采用前先验证三件事:确认你的数据源能通过 Prometheus Remote Write 写入,检查 74 个 MCP 工具中哪些对你开放,以及决定是否开启写工具,默认只读是个安全边界,但你需要明确谁有权限创建 token。v9 的 MCP 和 A2A 是新增量,如果你的 AI 助手需要操作告警,这是当前少见的开箱即用方案。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记