已经有 Prometheus 了,还需要夜莺?
谈起当下监控,Prometheus 无疑是最火的项目,如果只是监控机器、网络设备,Zabbix 尚可一战,如果既要监控设备又要监控应用程序、Kubernetes 等基础设施,Prometheus 就是最佳选择。甚至有些开源项目,已经内置支持了 Prometheus 协议的指标暴露,比如新版本的 Zookeeper、新版本的 RabbitMQ、Nginx vts 等等。Prometheus 的影响力可见一斑。
很多场景里讲到的 Prometheus 这个词,其实已经不仅仅是 Prometheus 项目本身了,而是 Prometheus 生态,包括 Prometheus 定义的指标格式、传输协议、查询语言、各类 Exporter 采集器、各类兼容的存储等。
在 Prometheus 生态里,采集可以使用各类 Exporter,存储可以使用 VictoriaMetrics,看图可以使用 Grafana,看起来已经非常完备了,为啥又冒出一个“夜莺(Nightingale)”的开源项目,还声称和 Prometheus 无缝对接?本文尝试探讨一二。
夜莺介绍
从夜莺官网摘出一段夜莺项目介绍:
夜莺监控是一款开源云原生观测分析工具,采用 All-in-One 的设计理念,集数据采集、可视化、监控告警、数据分析于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析和告警能力。夜莺于 2020 年 3 月 20 日,在 github 上发布 v1 版本,已累计迭代 100 多个版本。
夜莺最初由滴滴开发和开源,并于 2022 年 5 月 11 日,捐赠予中国计算机学会开源发展委员会(CCF ODC),为 CCF ODC 成立后接受捐赠的第一个开源项目。夜莺的核心研发团队,也是 Open-Falcon 项目原核心研发人员,从 2014 年(Open-Falcon 是 2014 年开源)算起来,也有 10 年了,只为把监控这个事情做好。
看完项目介绍,只能知道夜莺是一个监控系统,到底和 Prometheus 有哪些差异点,暂时没有看出来。别急,我们先来看看 Prometheus 的问题。
Prometheus 的问题
Prometheus 的采集、存储、看图都已经解决的挺好了。唯独就是告警,对某些公司来讲,可能会有如下痛点:
- 一个公司有很多套 Prometheus,规则分散在多个 yaml 中不方便管理
- 希望能有一套易用的、权限隔离的 UI,把监控能力开放给全公司各个团队并让他们自服务,别啥事都来找监控团队
- 直接使用 Promql 查询数据、配置告警规则要求有点高,能否内置一些规则库、查询语句,让知识可沉淀,让普通用户也能开箱即用
- 告警规则希望能够更灵活一些,比如支持不同的规则不同的生效时间,能够内置提供一些告警自愈的机制等等
夜莺就是为此而生的。其实夜莺老版本是自成体系的,脱胎自 Open-Falcon,但是随着 Prometheus 大势起来,夜莺就开始拥抱 Prometheus 生态了。可以把夜莺看做是时序数据的告警引擎。当然,夜莺也提供看图、仪表盘的能力,甚至可以查看 Elasticsearch、Loki、TDEngine 的数据,不过当前现状就是夜莺的告警能力大家用的最多,仪表盘大都仍然使用 Grafana 居多。典型的夜莺使用的架构如下:
可以用夜莺完全替代 Prometheus 吗?
其实不是替代的关系,是协同的关系。在夜莺看来,Prometheus 主要是作为时序库使用,除了 Prometheus 这个时序库,还可以选择 VictoriaMetrics、Thanos、M3DB、TDEngine 等其他时序库。夜莺呢,则只是作为一个时序库的告警引擎,既可以对接 Prometheus,也可以对接其他时序库,用户在夜莺里统一管理告警规则,对异常数据做判定,产生告警事件,并做后续分发通知、告警自愈等逻辑。
另外,如果你有多个机房,时序库分散在多个机房,机房之间的网络不好,即便发生网络割裂你也希望边缘机房能够自治不影响告警,夜莺也非常合适。这种情况夜莺称为边缘机房部署模式,时序库和告警引擎下沉部署,网络断了也没事,网络好的时候还可以在中心端统一查看数据,统一管理告警规则,其架构图如下:
上例中,演示了 3 个机房的部署架构,其中机房 A 和中心机房之间网络链路很好,机房 B 和中心机房之间的网络链路不太好,各个机房都有时序库。所以,中心机房的夜莺告警引擎直接处理中心机房和机房 A 的时序库,机房 B 的时序库由机房 B 的告警引擎处理,也就是图中的 n9e-edge,n9e-edge 会从中心机房的夜莺同步告警规则,然后对本机房的时序库做告警判定。
这样一来,即便机房 B 和中心机房之间网络割裂,由于 n9e-edge 内存中早就同步到了告警规则,所以机房 B 的告警引擎还是可以正常处理机房 B 的两个时序库的告警判定工作。提升了监控系统整体高可用性。
什么场景用夜莺而非 Prometheus?
关键看你的痛点是什么。如果现阶段使用单点的 Prometheus 也可以很好的解决你的问题,完全没必要换,在任何公司,技术工具的迁移都是会受到各种阻力的,懂的自然懂。
如果你有告警规则管理的痛点、边缘机房告警高可用的痛点,那可以尝试一下夜莺。任何工具都有自己的优缺点,根据场景选择。
夜莺可以接收各类监控系统的告警统一做事件通知吗?
有些朋友看到夜莺可以对接各类时序库,做告警判断生成告警事件并分发,就想说,那我其他的监控系统产生的告警能否也交给夜莺去发送呢?这样就可以统一管理告警通知模板、联系人、认证登录权限等问题。
实际是不行的。这是一个典型的事件 OnCall 需求,收集各个监控系统(比如 Prometheus、Zabbix、Open-Falcon、蓝鲸、各类云监控、ElastAlert 等)的告警,统一做告警收敛降噪、排班、认领升级、按条件灵活分发等,这个需求要想做好,值得用一个单独的产品来搞,我们姑且称这个产品为 OnCall 产品。OnCall 产品和各个监控系统之间的关系是:
即:监控系统(包括各类云监控)重点把数据采集、存储、可视化分析、告警判定这些问题解决好,负责产生告警事件,之后告警事件就交给 OnCall 中心来处理即可,OnCall 中心来负责告警事件的收敛降噪、抑制屏蔽、过滤分发等等诸多事宜。
好的 OnCall 产品都是商业产品,比如 PagerDuty、FlashDuty、Opsgenie 等,大家可以自行 Google,各取所需。
夜莺比 Prometheus 还多了啥有意思的功能?
这里我随便截几张系统图,略作介绍。
夜莺不做采集,可以对接市面上各类采集器,其中,categraf 采集器和夜莺的对接最为丝滑,使用 categraf 作为采集器的话,可以采集机器的各类元信息,构建一个轻量的机器层面的 CMDB。
夜莺内置提供告警自愈的能力,即告警时可以自动到告警的机器上执行脚本,你可以在脚本里写一些自动化的修复逻辑。
夜莺内置提供了指标视图,会在 v7 beta3 版本放出,会内置提供很多常用的 promql,点击查询即可,对小白用户会极为友好。
小结
已经有 Prometheus 了,为啥还需要夜莺(Nightingale)?本文算是对这个问题的一个探索性回复。希望对你有帮助,感谢大家的阅读。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MySQL 通过 systemd 启动时 hang 住了……
mysqld:哥,我起不来了…… 作者:贲绍华,爱可生研发中心工程师,负责项目的需求与维护工作。其他身份:柯基铲屎官。 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文约 2100 字,预计阅读需要 7 分钟。 引言 正如题目所述,在自动化测试场景下,通过 systemd 无法启动 MySQL。 连续 kill -9 结束实例进程,检测 mysqld 在退出后是否会被正确拉起。 具体信息如下: 主机信息:CentOS 8(Docker 容器) 使用 systemd 的方式管理 mysqld 进程 systemd service 的运行模式为:forking 启动命令如下: # systemd 启动命令 sudo -S systemctl start mysqld_11690.service # systemd service 内的 ExecStart 启动命令 /opt/mysql/base/8.0.34/bin/mysqld --defaults-file=/opt/mysql/etc/11690/my.cnf --daemonize --pid-f...
- 下一篇
成本降低 90%,出海社交平台 Typing 基于 Databend 的大数据探索与实践
Typing(输入中科技)成立于 2022 年,是一家主要面向东南亚、拉美、中东等海外地区提供社交平台的出海企业。其社交平台类似于国内的 Soul、陌陌等,提供视频直播、语音聊天室、短视频、生活分享、文字聊天等社交功能,注册用户超百万,日活用户数十万。人们可以在平台内认识有趣的人,结交新朋友,还可以建立自己的社交社区。 Typing 业务场景特点 如今,社交平台已经成为生活中必不可少的一部分。人们在社交平台上交友、分享和交流信息,这些信息包含了丰富的用户行为和偏好数据。大数据技术使得这些海量的数据可以被有效地挖掘和分析,从而为社交平台的发展和用户体验,提供技术支撑和决策支持。 Typing 作为一家社交公司,数据的重要性不言而喻,通过数据可以挖掘出许多商业价值: 一,构建社交平台的用户画像。用户画像是基于用户的行为数据和个人信息建立的用户模型。Typing 通过分析用户的关注、好友关系、兴趣爱好等数据,可以对平台内用户进行准确的用户画像构建。通过用户画像,平台可以更好地理解用户的需求和行为倾向,从而为 Typing 的用户提供更加个性化和精准的服务和推荐,提升平台的用户体验度和满意度。...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 2048小游戏-低调大师作品
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G