夜莺开源项目于国庆前夕发布了 v7.4.1 版本,修复了一些 bug,同时也带来了一些新功能。其中最重要的一个功能是:机器支持挂载到多个业务组了。本文将介绍几个重要的变更。
所有变更点
- feat: 左侧栏业务组新设计
- feat: 机器支持了绑定到多个业务组,机器混部的场景,管理机器更加方便了
- feat: 告警规则支持导出到 csv
- feat: 仪表盘支持导入 “Grafana 仪表盘链接”
- feat: 仪表盘指标图支持 overrides 设置
- feat: 仪表盘时序图图例右侧位置展示时宽度自适应
- feat: 仪表盘排行榜图新增 topn 功能
- refactor: 仪表盘 Elasticsearch 源支持自动计算时间间隔,查询原始日志内容时支持设置时间格式
- refactor: 仪表盘数据源类型变量支持搜索
- refactor: 仪表盘匿名访问可选择主题色
- refactor: 业务组编辑表单去除 “英文标识” 设置项
- refactor: 机器列表原标签拆分成 “机器标签” 和 “用户标签”
- refactor: 告警规则中的回调地址和全局回调重复,不再重复发送回调通知
- fix: 订阅规则,修改附加标签,没有及时生效问题
- fix: 飞书通知,在大量通知场景下,信息内容错乱问题
- fix: 快捷视图和指标视图的 promql 特殊字符转义处理
- fix: 仪表盘图表的值格式化没有做默认的单位和小数点保留位数处理
- fix: redis 配置中存在重复字段,导致 UseTLS 不生效问题
机器管理功能更新
如上图所示:
- ① 业务组的树形结构做了重新设计,优化了 UI,看起来更加清晰
- ② 机器支持了绑定到多个业务组,机器混部的场景,管理机器更加方便了。原本只有标签的机制,如果一个机器同时混部了 a 服务和 b 服务,特别想打上标签
service=a
和service=b
,但是同 key 的标签只能有一个,所以做不到。现在支持了绑定到多个业务组,一定程度上让机器管理更方便了。后续在告警规则那里在支持根据业务组来筛选机器就更加方便了。 - ③ 机器的标签拆分成了 “机器标签” 和 “用户标签”,所谓“机器标签”,就是 categraf 上报的标签,就是在 categraf 的 config.toml 中配置的那个
global.labels
部分的标签,“用户标签”是用户在夜莺的页面上给机器打的标签。“机器标签”以 categraf 上报的数据为准,不可编辑,而“用户标签”是用户自己打的标签,可以编辑。目前你可能还看不到“机器标签”的内容,因为还需要 categraf 支持在心跳的时候上报标签,预计 categraf v0.3.80 版本会支持。
这里,机器支持挂到多个业务组,其实是一个关键决策,如果是完全的 Prometheus 生态的思考方式,是不应该有这样的设计的,因为在 Prometheus 里一切都是标签,而如果是 Zabbix 的思考方式,即资产的思考方式,这种设计就合情合理。以夜莺的众多用户的反馈来看,大家更倾向于把这个能力给到用户,让用户自己决定是重度使用标签机制来分类还是使用分组方式来分类,所以,我们开发了这个功能。
之后,告警规则也应该配套有相关设计,即筛选机器方面,不止是使用标签来筛选,还应该支持业务组来筛选,这样才是闭环的,具体设计还在讨论中。
仪表盘支持导入 “Grafana 仪表盘链接”
这个设计也需要跟大家重点讲讲。
很多人已经用过 Grafana 了,很多图表都沉淀在 Grafana 了,如果全部迁移到夜莺中,就会发现各种不适。但是夜莺中也内置了一些仪表盘,他也想用,另外夜莺还管理了人员权限、告警规则、告警事件,如此一来,就会有个普遍的想法,就是希望能够在夜莺中直接看到 Grafana 的图表,把夜莺作为统一的平台入口,这样就不用来回切换了。
之前我们尝试让大家直接把 Grafana 的仪表盘导入夜莺,但是这毕竟是两个产品,没法 100% 兼容,所以直接把 Grafana 的仪表盘 JSON 导入夜莺,兼容性不好。这次呢,我们换个思路,Grafana 的仪表盘不是可以分享嘛,那就支持把 Grafana 分享的仪表盘链接配置到夜莺里,然后夜莺使用 iframe 的方式展示 Grafana 仪表盘,算是曲线救国了。
通过 Grafana 分享的仪表盘链接来导入,首先要拿到 Grafana 的仪表盘链接,在 Grafana 的仪表盘页面,点击分享按钮,如下图所示:
在打开的分享设置弹层中,拷贝 URL 即可,如下图所示:
拷贝的这个 URL 记录下来,待会要用。然后我们进入夜莺的仪表盘列表页面,选择左侧的某个业务组,然后在找到右上角的导入按钮。如下图所示:
点击「导入」会弹出一个弹层,选择第二个 tab,导入 Grafana 仪表盘链接,给仪表盘取个名字,然后填入 Grafana 的仪表盘链接即可。如下图所示:
最终效果如下:
注意:如果你导入仪表盘发现不好使,很可能是你的 Grafana 不允许外部系统通过 iframe 方式内嵌,这个时候你需要在 Grafana 的配置文件中配置
allow_embedding = true
,然后重启 Grafana 服务。一般是在 Grafana 的 defaults.ini 中,搜索allow_embedding
即可找到。
这种方式其实也不只是适用 Grafana 的仪表盘,你也可以导入其他的监控系统的 URL,只要是 iframe 能展示的,都可以导入到夜莺中。
其他变更点就不一一介绍了,大家可以前往夜莺下载中心下载 v7.4.1 版本体验一下。如果遇到问题,可以到夜莺的 github 提 issue。