N9E夜莺告警架构梳理分析

一、夜莺系统简介

夜莺监控(Nightingale 简称 N9E, 类似K8S,所需其中的N个字母,方便阅读)与 Grafana 类似,支持对接多种数据源。Prometheus 是最常用的数据源(其他兼容 Prometheus 接口的数据源,如 VictoriaMetrics、Thanos、M3DB 等,均可视为 Prometheus 类型数据源),因此夜莺与 Prometheus 关系密切。

夜莺监控(Nightingale)是一款专注于告警的监控类开源项目。与 Grafana 类似,夜莺也采用数据源集成方式,支持对接多种现有数据源。两者的区别在于:Grafana 侧重于数据可视化,而夜莺侧重于告警引擎、告警事件的处理和分发。

Grafana: 侧重点在于进行监控数据UI页面的展示,支持多数据源(Promethues、Loki、ES等)

N9E夜莺: 侧重点在于适配多数据源的告警引擎, 可以集成告警规则、告警收敛、告警聚合、告警分发, 支持多数据源(Promethues、Loki、ES等)

后端:https://github.com/ccfos/nightingale 12.8K⭐

前端:https://github.com/n9e/fe

官方文档: https://n9e.github.io/zh/docs/prologue/introduction/

二、工作模式

1、模式一单纯只做告警引擎、不做数据采集、不做数据存储 (目前集成的方式⭐️)

当用户已具备指标和日志数据采集能力时,可将现有存储系统(如 VictoriaMetrics、ElasticSearch 等)作为数据源接入夜莺,在夜莺中配置告警规则和通知规则,实现告警事件的生成和分发。这种模式下,夜莺不采集数据、不存储数据,仅作为告警引擎。

我们已经在各个私有云场地使用K8S进行部署,并且使用Promethues进行指标数据采集、存储, 天然存在多数据源。无需再使用夜莺自身的Categraf采集组件,所以使用此模式,夜莺仅用于做告警引擎、不做数据采集、也不做数据存储。

2、模式二附加夜莺专有的Categraf 采集数据功能,兼备告警引擎

如果对于尚未采集监控数据,也可以使用 Categraf 作为采集器,Categraf 可以与夜莺丝滑对接。Categraf 支持采集操作系统、网络设备、各类中间件和数据库的监控数据,通过 Remote Write 协议将数据推送至夜莺。这种模式下,夜莺仍然不存储监控数据,而是充当数据转发网关,将监控数据做一些处理然后转存至时序数据库(如 Prometheus、VictoriaMetrics 等)。

对于网络链路不稳定的边缘机房场景,为提升告警可用性,夜莺提供边缘机房告警引擎下沉部署模式。在此模式下,即使边缘机房与中心机房网络中断,告警功能仍可正常运行。

上图中,机房 A 与中心机房网络链路稳定,因此直接由中心端的夜莺进程执行告警引擎功能;机房 B 与中心机房网络链路不稳定,因此在机房 B 部署 n9e-edge 作为告警引擎,对机房 B 的数据源进行告警判定。

三、N9E的部署架构

1、单节点架构N9E Golang编写的单个二进制文件主进程,依赖MySQL、Redis

【N9E主进程】 HTTP监听端口17000, RPC接口监听20090、告警引擎(一堆后台告警规则执行任务,每个任务就是一个go 协程)

【MySQL数据库】 存储告警规则、用户信息、用户组信息、系统相关元数据等等

【Redis服务】 存储一些缓存数据库、Categraf相关、JWT相关数据

2、多节点+高可用架构

N9E的集群高可用很简单, 只需要启动多个N9E实例进程即可,并且这些N9E进程连接到相同的MySQL数据库、Redis服务,一个高可用的N9E夜莺监控系统就搭建完成了。 告警规则任务会进行均摊,例如有100个告警规则,那么存在5个N9E实例,那么平均每个实例会分到20个告警规则任务,执行告警规则查询任务。 如果其中某个节点挂了,那么其他节点承担之前宕机节点的告警规则任务。

相关推荐
晴天169 小时前
Cordis框架: 为可逆软件系统而生的元框架-Day18
ai·架构
代码方舟9 小时前
零信任架构实战:基于天远车辆vin码查车辆信息详版构建自动化汽车金融审批网关
人工智能·架构·自动化·汽车
暖核9 小时前
Keepalived + LVS(DR)+ MariaDB 主主高可用架构实战指南
架构·mariadb·lvs
小生凡一9 小时前
【图解】DeepSeek Harness 架构解析
架构
Dr.kangder10 小时前
嵌入式面试总结(十六)——AMBA总线
面试·职场和发展·架构·嵌入式·虚拟化·总线
Dr.kangder10 小时前
嵌入式面试总结(十九)——内存泄露
单片机·算法·面试·职场和发展·架构·硬件架构
Dr.kangder10 小时前
嵌入式面试总结(十七)——DMA总线
面试·职场和发展·架构·嵌入式·总线
用户8524950718410 小时前
Next.js + Redis:我的笔记,终于有了记忆
架构
Maxkim11 小时前
DeepSeek Harness 源码深度分析:像 VS Code 一样插件化的 Agent 框架
前端·架构
用户8524950718411 小时前
Next.js App Router:一篇笔记的服务端奇幻漂流
架构