夜莺-Nightingale
夜莺V6
项目介绍 架构介绍
快速开始
黄埔营
安装部署
升级
采集器
使用手册
API
数据库表结构
FAQ
开源生态
Prometheus
版权声明
第1章:天降奇兵
第2章:探索PromQL
第3章:Prometheus告警处理
第4章:Exporter详解
第5章:数据与可视化
第6章:集群与高可用
第7章:Prometheus服务发现
第8章:监控Kubernetes
第9章:Prometheus Operator
参考资料

夜莺项目整体介绍

项目介绍

夜莺监控是一款开源云原生观测分析工具,采用 All-in-One 的设计理念,集数据采集、可视化、监控告警、数据分析于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析和告警能力。夜莺于 2020 年 3 月 20 日,在 github 上发布 v1 版本,已累计迭代 100 多个版本。

夜莺最初由滴滴开发和开源,并于 2022 年 5 月 11 日,捐赠予中国计算机学会开源发展委员会(CCF ODC),为 CCF ODC 成立后接受捐赠的第一个开源项目。夜莺的核心研发团队,也是 Open-Falcon 项目原核心研发人员,从 2014 年(Open-Falcon 是 2014 年开源)算起来,也有 10 年了,只为把监控这个事情做好。

项目截图

20240221141801

20240221141817

项目代码

夜莺项目已收获 8000 多 github stars,1000 多 forks,100 多 contributors 参与其中,欢迎大家在 GitHub 上关注夜莺项目,及时获取项目更新动态,有任何问题,也欢迎提交 issues,以及提交 pull requests,开源社区需要大家一起参与才能有蓬勃的生命力。

最新进展

夜莺当前最新版本是 V7 beta,预计开发半年左右 V7 正式版会发布。V7 重点做体验优化,和 V6 完全兼容可以平滑升级(V6 升级到 V7 只需要替换一下二进制重启即可,如果是容器部署,只需要更新镜像并重启)。V7 新版本已经做了如下关键优化项:

  • 全站暗黑主题
  • 优化边缘机房机器失联告警的实现逻辑,真正做到边缘机房告警自闭环
  • 优化内置大盘、内置告警规则的列表页面 UI
  • 全局回调地址页面展示优化,增加详尽的文档提示信息

更多优化项正在开发中,V5、V6 用户可以放心升级,V7 会是一个更好的版本。先参考 这个文档 升级到 V6 最新版,再从 V6 最新版升级到 V7。另外,升级之前记得备份以防万一。

关于文档

该文档站点是最权威的文档,V5 V6 V7 三个版本的文档都在这里。请各位小伙伴先通读文档,大部分问题就可以解决了。SRETalk 视频号中也有一些小的视频教程供大家参考。另外,之前在极客时间开设过一个专栏,系统性的讲解了运维监控相关知识,建议大家也都看一下:《运维监控实战笔记》,尤其是前几节,专栏里提过的基础知识,本文档将不再赘述。

架构简介

夜莺依赖 MySQL 存储各类用户配置,比如告警规则、屏蔽规则、仪表盘,依赖 Redis 存储一些机器心跳上来的元信息以及 jwt token,除此之外,没有别的依赖。如果只是把夜莺当做页面化的告警引擎,其架构如下:

20240221152601

这个架构下,夜莺就类似 Grafana(Grafana 侧重看图,夜莺侧重告警),可以接入多种不同的数据源,比如 Prometheus、VictoriaMetrics、M3DB、ElasticSearch、Loki、TDEngine 等等,在夜莺中配置管理告警规则,夜莺周期性去查询各个存储,判定异常数据,产生告警事件,然后把告警事件通过钉钉、企微、邮件等方式发出,或直接推给 FlashDuty,做告警聚合降噪之后再由 FlashDuty 做后续分发。

这种架构,核心就是使用夜莺作为告警引擎,把各种监控数据源的告警规则集中管理,统一告警事件的分发,而监控数据的采集、传输,夜莺都没有介入。如果我们想让夜莺把监控数据的采集、传输也做了,那么架构就变成了下面这样:

20240221154910

上例中同时举例了指标和日志两种数据的处理流程。

  • 指标使用 Categraf 采集(就是那个猫爪样式的图标),推送到夜莺,夜莺把数据转存到时序库(此处以 VictoriaMetrics 举例,也可以写入 Prometheus 等其他时序库),之后把 VictoriaMetrics 作为一个数据源接入夜莺
  • 日志使用 Vector 采集推送给 ElasticSearch,然后把 ElasticSearch 作为一个数据源接入夜莺

当然了,实际生产场景可能会更复杂,比如有多个数据中心,每个数据中心都有多个时序库多个日志库,不同数据中心之间要考虑机房网络割裂的问题,如果发生网络割裂,希望机房内部告警自闭环不受网络故障影响,平时网络链路好的时候,又希望在中心端统一查看指标、日志。这些问题都是可以解决的,后续在其他章节详述更复杂的架构设计。

对比 Prometheus

这是经常被问到的问题。如果您当前使用的是 Prometheus,而且没有痛点,那么就不需要考虑夜莺了,用好现在的体系就可以了。如果您用了多个时序库,比如 Prometheus、VictoriaMetrics、Thanos 等等,需要一个统一的平台来管理告警、看图,夜莺是一个选择。如果您想把监控的能力开放给公司所有研发团队,让研发团队自助服务,Prometheus 使用配置文件的告警规则管理方式不方便,夜莺是一个选择。如果您需要更为灵活的告警策略配置,比如控制生效时间、一套规则生效多个集群,夜莺是一个选择。如果您需要告警自愈能力,告警之后自动执行个脚本啥的,夜莺是一个选择。如果您需要一个统一的事件 OnCall 中心,聚合各个监控系统的告警,做统一的告警聚合降噪、排班认领升级、灵活的分发和协同,FlashDuty 是一个选择。

另外,相比 Grafana,夜莺的看图能力还是差一些,因为 Grafana 是 agpl 协议,我们也没法封装 Grafana 进夜莺,所以夜莺的看图是自研的,和 Grafana 没法 100% 兼容,当然,夜莺支持导入 Grafana 的仪表盘 JSON,基础的图表都是兼容的。另外,夜莺设计了内置告警规则和内置仪表盘,方便用户开箱即用,现在覆盖了常用组件,后面随着时间推移,这个体验也会越来越好,期待大家一起共建。

以笔者观察来看,很多公司是一套组合方案(成年人的世界,没有非黑即白,都要):

  • 数据采集:组合使用了各种 agent 和 exporter,比如使用 Categraf,辅以各类 Exporter
  • 存储:时序库主要使用 VictoriaMetrics,因为 VictoriaMetrics 兼容 Prometheus,而且性能更好且有集群版本,对大部分公司,单机版就足够用了
  • 告警引擎:使用夜莺,方便不同的团队管理协作,内置了一些规则开箱即用,告警规则的配置比较灵活
  • 看图可视化:使用 Grafana,图表更为炫酷,社区非常庞大,从 Grafana 站点可以找到很多别人做好的仪表盘,直接导入即可
  • 告警事件 OnCall 分发:使用 FlashDuty,聚合了 Zabbix、Prometheus、夜莺、Open-Falcon、云监控、Elastalert 等各类告警事件,统一聚合降噪、排班、认领升级等

企业版

快猫星云技术团队是夜莺监控的创始团队。 点击查看以下 PDF 材料,了解更多企业版功能。

点击 联系我们,与快猫团队交流 !

您的浏览器不支持 PDF,请访问该链接: 下载 PDF

当然,我们也提供性价比极高的专业版,具体可以从这里了解。有预算的公司,咱们合作共赢,没预算的公司用开源版本,我们也会持续迭代支持。

获得帮助

  • 方式1:github bug issue,提 bug 专用入口
  • 方式2:github feature issue,提建议专用入口
  • 方式3:免费加入知识星球:SRE-可观测性SIG,在这里交流夜莺、Prometheus、Grafana、ClickHouse、ElasticSearch 等各类可观测性相关话题,二维码如下
  • 方式4:如果已经把夜莺上到了生产环境,或者写过夜莺的文章教程,可以加入微信资深玩家群,加我微信好友(我的微信:picobyte),备注:资深玩家群。
开源版
Flashcat
Flashduty