夜莺擅长处理多 Prometheus 集群的告警管理,也提供了一些内置仪表盘和常用图表类型。但如果团队已经大量使用 Grafana 仪表盘,频繁在两个系统之间切换会影响查看效率。v7.beta12.1 开始,夜莺支持集成 Grafana 仪表盘,已经习惯 Grafana 的用户可以考虑升级验证。
核心要点
- 夜莺 v7.beta12.1 支持内置 Grafana 仪表盘。
- Grafana 侧需要开启
allow_embedding。 - 如需匿名访问,需要配置
auth.anonymous,并设置enabled、org_role、org_name。 - 如果嵌入后无法登录并反复返回登录页,需要检查 cookie 相关配置。
- 该能力适合希望在夜莺中统一查看告警和 Grafana 仪表盘的团队。
升级方法
从 v6 版本开始,程序自动创建表结构,所以 v6、v7 的各个小版本之间升级,相对容易,整体逻辑是:
- 备份数据库、二进制、配置文件、integrations 目录,以防万一。
- 下载新版本并解压,修改配置文件中的数据库连接地址、Redis 连接地址、时序库连接地址等个性化信息。
- 停掉老版本,启动新版本。建议新老版本使用不同安装目录,都保留不删,并用软链指向当前使用的版本。
配置方式
可以参考网友写的这篇文章:夜莺v7版本如何嵌入grafana监控面板
1. 启用 embedding
在 Grafana 配置文件中找到 allow_embedding 的配置项,设置为 true。
2. 启用 anonymous
找到 auth.anonymous 配置段,把 enabled 设置为 true,org_role 设置为 Viewer,org_name 根据你自己的环境配置即可。
完事重启 Grafana,效果如下:

3. 处理嵌入页面登录问题
如遇第三方页面无法登录、总是返回登录页,并且打开调试窗口发现如下图所示报错:

需要调整 Grafana 配置。在 security 配置段,把 cookie_secure 设置为 true,把 cookie_samesite 设置为 none,这样 iframe 嵌入后通过 https 访问即可。
如果 http 访问,需要在嵌入的服务前面使用 Nginx 配置一下自签证书 ssl 访问即可。
配置项速查
| 配置项 | 建议值 | 用途 |
|---|---|---|
allow_embedding |
true |
允许 Grafana 被嵌入到夜莺页面 |
auth.anonymous.enabled |
true |
启用匿名访问 |
auth.anonymous.org_role |
Viewer |
匿名访问角色 |
auth.anonymous.org_name |
按环境配置 | 指定匿名访问组织 |
security.cookie_secure |
true |
配合跨站嵌入和 https 访问 |
security.cookie_samesite |
none |
解决 iframe 嵌入后的 cookie 限制 |
后续计划
近期夜莺还计划做的事情如下:
- 告警规则:告警事件支持配置事件 relabel 规则,可以过滤掉一些没用的标签,避免告警事件中展示一堆不重要的标签
- 机器管理:标签拆成 user_tags 和 host_tags,host_tags 联动 categraf global tags,user_tags 用于用户自定义标签
- 机器管理:机器支持角色字段,即无头标签,用于描述混部场景
- 机器管理:把业务组的 busigroup 标签迁移到机器的属性里,让机器支持挂到多个业务组
- 告警规则:增加 Host Metrics 类别,支持按照业务组、角色、标签等筛选机器
- 告警通知:重构整个通知逻辑,引入事件处理的 pipeline,支持对告警事件做自定义处理和灵活分派
v7 正式版何时发版?
现在虽然是 beta 版本,实际也是稳定的,可以上生产的。由于运营的诉求,正式版会放在每年 7 月底发布,每个大版本会持续支持 2 年。这也意味着,届时 v5 以前(含)版本将不再提供社区支持,建议 v5 版本的用户尽快升级到 v7 版本。升级方案可以查阅如下链接:
https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v7/install/upgrade/
常见问题
Q1:夜莺集成 Grafana 后,Grafana 还能单独使用吗?
A:可以。原文描述的是在夜莺中集成 Grafana 仪表盘,减少系统间跳转,并没有要求停用原 Grafana。
Q2:嵌入 Grafana 最关键的配置是什么?
A:首先要启用 allow_embedding。如果使用匿名访问,还需要配置 auth.anonymous。
Q3:为什么 iframe 嵌入后总是回登录页?
A:原文给出的处理方式是调整 Grafana security 配置,把 cookie_secure 设为 true,把 cookie_samesite 设为 none,并通过 https 访问。
