夜莺监控开源两年半,正式成为“5K 开源项目”:在 GitHub 上获得了 5K 个 Star,有 70 多位 Contributor,数千个终端用户在生产环境中使用。其中每 5 个 Star 产生 1 次 Fork,每 10 次 Fork 产生 1 位 Contributor。“参与感”是夜莺开源社区的最美风景线。

夜莺监控一直以来以专业、易用的告警管理能力打动开发者和用户。但“告警管理”只是夜莺监控格外突出的那块木板。夜莺监控希望成为监控领域的“水桶机”,每一块木板都要足够长。
这次新版的重点之一,是提升可视化体验和产品设计感。下面结合快猫星云团队设计师 李金阳 的思考,说明这次改版到底解决了什么问题。
核心要点
- 新版通过调整颜色纯度和亮度,让危险状态更容易被用户快速识别。
- 仪表盘卡片面板做了功能区域划分,帮助用户形成稳定操作习惯。
- Dashboard 增加 Dark Mode,优先覆盖程序员夜间查看仪表盘的场景。
- 除了可视化体验,新版还增强了 recording rule、多集群规则、变量、告警屏蔽、批量查询和自身监控等能力。
- 这些改进的共同目标是:让监控工具既能处理告警,也能更高效地承载日常观测和排障。
设计目标一:让用户更快定位问题
新版对颜色进行了修改和调整,增强了危险类颜色的纯度和亮度。
监控产品里的颜色不是装饰,而是信号。危险状态、异常趋势、告警区域需要在复杂页面中快速被看见。通过更明确的颜色对比,用户可以更快定位问题或问题区域,提升页面查看效率。
设计目标二:养成平台内统一的操作习惯
新版对监控仪表盘卡片面板的功能进行了区域划分。
类似的功能操作会出现在同一个区域。即使后续增加新功能,也会根据功能类型放到对应区域,而不是随意挤入或堆放在卡片的任意空闲位置。
这种设计的价值在于降低学习成本。用户用得越久,越能知道什么类型的功能应该在哪个区域找,从而形成统一认知,减少“功能找不到”的问题。

设计目标三:Dashboard 增加 Dark Mode
考虑到程序员夜间工作的习惯,新版为仪表盘增加了 Dark Mode 展示方式。
Dark Mode 在夜间不会产生过强的环境亮度对比,长期使用不容易造成视觉不适。此次改版迫于时间压力,仅增加了仪表盘部分的 Dark Mode,后续会将此模式拓展到整个夜莺平台。

新版功能更新清单
除了提升可视化设计感,本次夜莺新版还包含一批功能更新。
1. 支持 recording rule 管理
对于一些计算量较大的 PromQL,查询时会耗时较久。可以通过 recording rule,把 PromQL 配置上,周期性计算结果。
这样最终用户查询时,可以直接查到已经计算好的结果指标,查询速度会快很多。

2. 告警规则支持生效到多集群
从截图中可以看到,生效集群已经支持多选。
这意味着一条告警规则或记录规则可以生效到多个集群,能大幅减少重复配置,尤其适合多集群环境。
3. 仪表盘变量支持 TextBox
这是偏高级的玩法。如果用户对数据了解较深,可以直接通过正则匹配想查看的数据,使用起来更灵活。

4. 告警屏蔽支持更多操作符
原来的告警屏蔽只支持 ==、=~、in 三种操作符。新版增加了更多操作符:
!=!~not in
这些操作符可以让告警屏蔽规则表达更复杂的过滤条件。

5. 批量查询增强仪表盘查询性能
如果大盘里某个图表配置了多个 PromQL,原来的逻辑是每个 PromQL 发一次请求。
新版做了合并,多个 PromQL 可以只发一个请求,从而提升查询效率。
6. 更方便地复制机器列表
使用告警自愈脚本批量执行命令时,经常需要复制一批机器。有时我们想根据业务组筛选机器,新版本在对象列表表格里增加了复制图标。
点击后可以复制 ident 列表,再直接粘贴到批量执行脚本的输入框里,操作更方便。

7. 快速找到机器所属业务组
这是一个隐藏功能。在业务组筛选框里填入对象标识,系统会根据机器标识找到机器,再找到机器所属的业务组并展示。

8. docker-compose 支持 M1 芯片
使用新版 MacBook 的用户可以在 M1 芯片上运行 docker-compose,把夜莺跑起来,测试更方便。
9. n9e-server 数据转发改成异步
社区中有用户反馈,因为后端 TSDB 太慢导致数据积压。因此新版把发送逻辑改成异步,提升发送效率。
这个改动可能带来数据乱序,不过概率较小。典型情况是服务端挂了,客户端积累了一些数据;服务端恢复后,客户端把积累的数据一次性发给服务端;之后数据正常发送,就不会有问题。两相权衡,最终改成异步。
10. 增加夜莺自身监控仪表盘
夜莺自身的监控指标可以通过 /metrics 接口导出。n9e-webapi 和 n9e-server 都内置了相关埋点数据,其中 n9e-server 的监控更重要。
n9e-server 的监控仪表盘在这里:https://github.com/ccfos/nightingale/blob/main/doc/server-dash.json

红框标注的两个数据要额外注意:每秒接收的数据点数量,以及内存队列是否拥塞。
11. 更灵活的自定义告警内容
除了可以通过 etc/template 下面的模板文件定义告警消息内容,还可以利用告警规则的备注。这个备注也支持 Go template 语法。
相关教程地址:https://n9e.github.io/docs/usage/format/。
功能价值对照
| 改进方向 | 解决的问题 | 适用场景 |
|---|---|---|
| 颜色和功能区域调整 | 更快识别异常,更容易找到操作入口 | 日常看板、排障、告警确认 |
| Dark Mode | 降低夜间查看仪表盘的视觉负担 | 夜间值班、长期盯盘 |
| recording rule | 减少复杂 PromQL 实时查询开销 | 复杂查询、常用聚合指标 |
| 多集群规则 | 降低多集群重复配置 | 多 Prometheus、多集群环境 |
| 告警屏蔽操作符增强 | 表达更复杂的屏蔽条件 | 维护窗口、批量过滤、标签排除 |
| 批量查询 | 减少图表多 PromQL 请求次数 | 大盘加载性能优化 |
| 自身监控 | 观察夜莺自身运行状态 | 生产环境夜莺运维 |
关于夜莺监控
夜莺监控是一款开源云原生监控分析系统,采用 All-In-One 的设计,集数据采集、可视化、监控告警、数据分析于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析和告警能力。
已有众多企业选择将 Prometheus + AlertManager + Grafana 的组合方案升级为使用夜莺监控。夜莺监控由滴滴开发和开源,并于 2022 年 5 月 11 日捐赠予中国计算机学会开源发展委员会(CCF ODC),为 CCF ODC 成立后接受捐赠的第一个开源项目。
夜莺监控项目文档站点:https://n9e.github.io/。欢迎加入,一起打造好用的云原生监控系统;也欢迎大家在 GitHub 上 star 夜莺项目:https://github.com/ccfos/nightingale,及时了解社区动态。
FAQ
Q1:这次新版只是换了颜色吗? A:不是。颜色和 Dark Mode 是可视化体验的一部分,同时还包含 recording rule、多集群规则、告警屏蔽操作符、批量查询、自身监控仪表盘等功能更新。
Q2:为什么监控工具也要强调设计感? A:监控工具的设计感不是装饰,而是效率。颜色、布局、操作区域和信息层级都会影响用户定位问题、确认状态和执行操作的速度。
Q3:夜莺自身监控为什么重要?
A:夜莺本身也是生产系统的一部分。通过 /metrics 和自身监控仪表盘,可以观察接收数据点数量、内存队列等关键状态,提前发现夜莺自身的运行风险。
