夜莺项目介绍
夜莺监控(Nightingale)是一款专注于告警的监控类开源项目。与 Grafana 类似,夜莺也采用数据源集成方式,支持对接多种现有数据源。两者的区别在于:Grafana 侧重于数据可视化,而夜莺侧重于告警引擎、告警事件的处理和分发。
夜莺监控项目最初由滴滴公司开发和开源,并于 2022 年 5 月 11 日捐赠予中国计算机学会开源技术发展委员会(CCF ODC),成为 CCF ODC 成立后接受捐赠的第一个开源项目。
代码仓库
如果是前端交互问题,请在 https://github.com/n9e/fe 提交 issue。其他问题请在 https://github.com/ccfos/nightingale 提交 issue。
工作原理
当用户已具备指标和日志数据采集能力时,可将现有存储系统(如 VictoriaMetrics、ElasticSearch 等)作为数据源接入夜莺,在夜莺中配置告警规则和通知规则,实现告警事件的生成和分发。这种模式下,夜莺不采集数据、不存储数据,仅作为告警引擎。

如果您尚未采集监控数据,也可以使用 Categraf 作为采集器,Categraf 可以与夜莺丝滑对接。
Categraf 支持采集操作系统、网络设备、各类中间件和数据库的监控数据,通过 Remote Write 协议将数据推送至夜莺。这种模式下,夜莺仍然不存储监控数据,而是充当数据转发网关,将监控数据做一些处理然后转存至时序数据库(如 Prometheus、VictoriaMetrics 等)。
对于网络链路不稳定的边缘机房场景,为提升告警可用性,夜莺提供边缘机房告警引擎下沉部署模式。在此模式下,即使边缘机房与中心机房网络中断,告警功能仍可正常运行(具体可参考架构设计章节)。

上图中,机房 A 与中心机房网络链路稳定,因此直接由中心端的夜莺进程执行告警引擎功能;机房 B 与中心机房网络链路不稳定,因此在机房 B 部署 n9e-edge 作为告警引擎,对机房 B 的数据源进行告警判定。
告警降噪、升级与协同
夜莺的核心功能是告警引擎,负责生成告警事件、对事件做二次处理后根据通知规则进行灵活分发。系统内置支持 20 多种通知媒介,包括电话、短信、邮件、钉钉、飞书、企业微信、Slack 等。
对于以下高级需求场景,夜莺可能无法满足:
- 需要将企业内多套监控系统(比如各类云监控、Zabbix)产生的事件统一汇聚至单一平台,进行收敛降噪、响应处理和数据分析
- 需要支持人员排班、On-call 管理、告警认领、升级机制(避免遗漏)和协同处理
针对上述场景,强烈建议使用 FlashDuty 等专业的 On-call 管理产品,将云上、云下各类监控系统的告警统一汇聚,进行降噪、分发和响应管理。
相关资料与交流渠道
- 📚 夜莺介绍 PPT:有助于了解夜莺的各项关键特性(PPT 链接位于文末)
- ❤️ 提问与 Bug 报告:请提供版本信息、问题描述、复现步骤、截图等详细信息,以便社区能够有效协助解决问题
- 🌟 社区交流:添加微信
picobyte(备注:夜莺经验分享群)加入微信群;如已在生产环境部署夜莺,可以加入资深监控用户群
关键特性

- 告警规则管理:支持告警规则、屏蔽规则、订阅规则、通知规则,内置 20 多种通知媒介,支持消息模板自定义
- 事件管道处理:支持事件管道功能,对告警事件进行 Pipeline 处理,便于与自有系统进行自动化集成,例如为告警事件附加元信息、对事件进行 Relabel 操作
- 业务组与权限:支持业务组概念,提供权限管理体系,实现规则、机器、仪表盘的分类管理
- 规则导入:提供多种数据库和中间件的内置告警规则,可直接导入使用;也支持直接导入 Prometheus 告警规则
- 告警自愈:支持告警自愈功能,告警触发后可自动执行预定义脚本,例如磁盘清理、现场信息采集等操作

- 历史事件存档:完整存储历史告警事件,支持多维度查询和统计
- 灵活聚合分析:支持灵活的聚合分组功能,便于直观查看企业告警事件分布情况

- 集成中心:内置常用操作系统、中间件、数据库的指标说明、仪表盘和告警规则(由社区贡献,可能良莠不齐)
- 多协议支持:支持接收 Remote Write、OpenTSDB、Datadog、Falcon 等多种协议的数据,可与各类 Agent 对接
- 多数据源支持:支持 Prometheus、ElasticSearch、Loki、TDEngine 等多种数据源,可对数据源中的数据进行告警配置
- 系统集成:支持内嵌企业内部系统(如 Grafana、CMDB 等),并可配置内嵌系统的菜单可见性

- 仪表盘功能:支持仪表盘功能,提供常见图表类型,并内置多种仪表盘模板
- 与 Grafana 的对比:如已习惯使用 Grafana,建议继续使用 Grafana 进行数据可视化,Grafana 在可视化方面功能更为丰富。对于 Categraf 采集的机器监控数据,建议使用夜莺自带的仪表盘查看,因为 Categraf 的指标命名遵循 Telegraf 的命名规范,与 Node Exporter 不同,难以找到 Grafana 仪表盘模板
- 业务组联动:由于夜莺采用业务组概念,机器可归属不同业务组,仪表盘支持与业务组联动,便于仅查看当前业务组内的机器数据
感谢众多企业信赖
夜莺拥有众多企业用户,以下仅展示部分用户案例,排名不分先后。

开源协议
夜莺监控项目采用 Apache License 2.0 协议开源。