1 基础介绍
-
夜莺监控( Nightingale )是一款国产、开源云原生监控分析系统,采用 All-In-One 的设计,集数据采集、可视化、监控告警、数据分析于一体。于 2020 年 3 月 20 日,在 github 上发布 v1 版本,已累计迭代 60 多个版本。从 v5 版本开始与
Prometheus、VictoriaMetrics、Grafana、Telegraf、Datadog
等生态紧密协同集成,提供开箱即用的企业级监控分析和告警能力,已有众多企业选择将Prometheus + AlertManager + Grafana
的组合方案升级为使用夜莺监控。 -
夜莺监控,由滴滴开发和开源,并于 2022 年 5 月 11 日,捐赠予中国计算机学会开源发展委员会(CCF ODC),为 CCF ODC 成立后接受捐赠的第一个开源项目。夜莺监控的核心开发团队,也是
Open-Falcon
项目原核心研发人员。 -
官网:
-
名词解释:
- n9e:即nightingale,中间有9个字母,所以叫n9e,类似k8s的叫法。
- 快猫星云(北京快猫星云科技有限公司): 是一家云原生智能运维科技公司,成立于2021年10月,创始团队均来自阿里、百度、滴滴等互联网公司。快猫技术团队也是开源监控系统“Open-Falcon”和“夜莺监控”的创始团队。快猫星云打造的云原生监控分析平台“Flashcat平台”,旨在解决云原生架构、混合云架构下统一监控难、故障定位慢的问题。
2 架构介绍
2.1 基础结构
-
从上图可以看出,左侧为收集器,中间为夜莺的前后端服务,右侧为时序数据库。
-
夜莺本身不提供收集器和时序数据库,所以可以使用
Categraf/Exporters
之类的采集器接入夜莺,然后存储到Prometheus/VictoriaMetrics/Thanos
等TSDB(时序数据库)中。 -
TSDB社区推荐使用
VictoriaMetrics
,特别是单机版推荐这个DB,原因是可以承担上每秒数据点数上百万的写入(详见:victoriametrics
介绍),单机性能比prometheus
好。 -
采集器推荐使用Categraf。
2.2 服务架构
从上图可以看出:
-
通过采集器采集数据,然后将数据上报给
n9e-server
(夜莺的server端),并将数据写入到TSDB中。- 这里的Load Balance可以是k8s的service。也可以是其他(4层)代理(如:ipvs)。
-
MySQL的作用:将用户的个人信息、相关配置存储到mysql中。
-
Redis的作用:
n9e-server
会定时发送心跳信息到redis中,以确保对应的n9e-server是存活状态。还保存了jwt cache。 -
n9e-web的作用: 就是夜莺监控的前端页面,支持监控对象、监控看图、告警管理、告警自愈、人员组织等功能,如下图:
- 正常来说一个监控集群使用一个TSDB就够了。但如有特殊情况,如在多个城市都有机房,那么就可以考虑使用集群版本的TSDB(如
victorametrics3、m3db、thanos
等),那么可以安装多个n9e-server
,让n9e-server
和TSDB
在一起(如都安装到同一个机房),但同一个机房的n9e-server的/etc/server.conf
的ClusterName
必须相同(其次采集器的配置也要修改的),与其他城市ClusterName
的不同。这样相同ClusterName
的n9e-server会被看成一个集群,会读取相同的数据库。而在n9e-web
端,通过不同的ClusterName
来识别不同的数据源。具体如下图示例:
2.3 部署架构
-
Server端:
Prometheus
+MySQL
+Redis
+n9e-server
+n9e-webapi
-
采集端:
categraf
+ 其他exporter
3 代码信息
-
前端(n9e-webapi):
- v5版本地址:github.com/n9e/fe-v5
- v6版本地址:github.com/n9e/fe
- 语言/框架:TypeScript
-
后端(n9e-server):
- 地址:github.com/ccfos/night…
- 语言/框架:Gin(go版本要求>1.18)
- Star:6.7k
-
采集器(categraf):
- 地址:github.com/flashcatclo…
- 语言/框架:Gin