介绍
夜莺Nightingale是中国计算机学会托管的开源云原生可观测工具,最早由滴滴于 2020 年孵化并开源,并于 2022 年正式捐赠予中国计算机学会。夜莺采用 All-in-One 的设计理念,集数据采集、可视化、监控告警、数据分析于一体,与云原生生态紧密集成,融入了顶级互联网公司可观测性最佳实践,沉淀了众多社区专家经验,开箱即用。
简称n9e:即nightingale,中间有9个字母,所以叫n9e,类似k8s的叫法
功能和特点
- 统一接入各种时序库:支持对接 Prometheus、VictoriaMetrics、Thanos、Mimir、M3DB 等多种时序库,实现统一告警管理
- 专业告警能力:内置支持多种告警规则,可以扩展支持所有通知媒介,支持告警屏蔽、告警抑制、告警自愈、告警事件管理
- 高性能可视化引擎:支持多种图表样式,内置众多Dashboard模版,也可导入Grafana模版,开箱即用,开源协议商业友好
- 无缝搭配 Flashduty:实现告警聚合收敛、认领、升级、排班、IM集成,确保告警处理不遗漏,减少打扰,更好协同
- 支持所有常见采集器:支持 Categraf、telegraf、grafana-agent、datadog-agent、各种 exporter 作为采集器,没有什么数据是不能监控的
- 一体化观测平台:从 v6 版本开始,支持接入 ElasticSearch、Jaeger 数据源,实现日志、链路、指标多维度的统一可观测
开源地址
后端:github.com/ccfos/night…
前端:github.com/n9e/fe
官方文档:flashcat.cloud/docs/conten…
简单使用
官网提供两种部署方式,推荐第二种
为了方便,我们采用第一种方式,首先要安装docker 和 docker
docker 的下载地址:github.com/docker/comp…,下载指定的版本,我下载的是windows版本的,下载后双击运行即可。
cmd窗口一闪而过,已经装好了。我当时还不知道,捯饬了白天。。。
然后按照官网给的命令执行
git clone https://github.com/ccfos/nightingale.git
cd nightingale/docker
docker-compose up -d
需要注意的是:
我们的docker中不能有mysql,redis 等命名的容器,因为他默认的名字是这个,如果有会卡住不动,并且 不能再 windows上的docker启动,因为windows中docker是不支持 host模式的
启动好后的docker 如下所示
在我们的宿主机访问夜莺
http://172.168.3.67:17000/
默认用户是root
,密码是root.2020
登录之后需要配置数据源
采集器
夜莺本身,其实只是一个服务端组件,不负责数据采集。
夜莺开发者建议:
优先使用 categraf 做机器基础指标的采集,和夜莺对接最为丝滑,然后各类中间件、数据库,如果 categraf 可以直接搞定就用,如果不能直接搞定,再配合其他 agent 来使用,是比较合理的选择
Categraf
Categraf 是一款 all-in-one 的采集器,是一个监控采集 Agent,开源地址为:
- github: github.com/flashcatclo…
Categraf 不但可以采集 OS、MySQL、Redis、Oracle 等常见的监控对象,也准备提供日志采集能力和 trace 接收能力,这是夜莺主推的采集器
metrics agent
是categraf
组件的核心模块,metrics agent
主要实现对各种组件的性能指标进行采集,类似于prometheus
中的exporter,但是categraf
组件采用All-in-one
的设计思想,并利用插件模式进行实现。
采集插件的代码,在代码的 inputs
目录,每个插件一个独立的目录,目录下是采集代码,以及相关的监控大盘JSON(如有)和告警规则JSON(如有),Linux相关的大盘和告警规则没有散在 cpu、mem、disk等采集器目录,而是一并放到了 system 目录下,方便使用。
插件的配置文件,放在conf
目录,以input.
打头,每个配置文件都有详尽的注释,如果整不明白,就直接去看 inputs
目录下的对应采集器的代码。
categraf
大概实现了70+插件
夜莺可以监控xx么?
官网给出的解释是:
其实,夜莺啥都可以监控,又啥都监控不了。夜莺是一个服务端组件,类似 Grafana,可以接入不同的数据源,比如 Prometheus、VictoriaMetrics、Thanos 等等,只要数据进到这些库里了,夜莺就可以对数据源的数据进行分析、告警、可视化,以及后续的事件处理、告警自愈。
当然,夜莺也有端口接收监控数据,可以跟开源社区常见的各种监控采集器打通,比如 Telegraf、Categraf、Grafana-agent、Datadog-agent、Prometheus 生态的各类 Exporter 等等。这些 agent 采集了数据推给夜莺,夜莺适配了这些 agent 的数据传输协议,所以可以接收这些 agent 上报的监控数据,转存到后端对接的数据源,之后就可以对这些数据做告警分析、可视化。
所以夜莺本身不做监控数据采集,啥都不能监控,但是夜莺可以对接数据源,又啥都可以监控。
他本身是一个平台,采集数据需要各种采集器来接入数据,接收到数据之后对数据库进行展示、分析
总结
夜莺是一个平台,功能强大,可以接入各种数据源,可以对数据进行分析,告警等。在滴滴有成熟的实践方案,可以用于大厂的监控告警等