夜莺监控设计思考(五)告警原理和处理流程深度剖析

Nightingale部署方案 另外ibex的agent也合并至了categraf,categraf也支持远程执行脚本,执行请求路径为n9e --> ibex server --> categraf。监控告警体系一直是运维工作的重中之重,万物无定型,技术的选择也是遵循这个道理,在综合当前公司的实际情况下,国产监控热门只选Nightingale就自然而然的成为了最佳的选择。当前公司服务大部分运行在IDC机房中,并且存在多个机房,也有部分云服务,部署方式既有主机部署的、Docker部署的,也有部署在K8S集群中的,情况复杂多样。 阅读详情

这将是一个系列,讲解 夜莺监控 的设计思考,可以理解为原理+最佳实践+产品设计时的折中取舍。

本系列其他文章:

本篇聊聊夜莺最核心的逻辑:告警。涉及告警事件的产生、告警事件的后续处理、告警事件的通知。

夜莺的告警逻辑整体是追随 Prometheus 的逻辑,本文默认你已经对 Prometheus 的告警逻辑比较清楚。

前置知识

夜莺有两个进程:

  • n9e 部署在中心,既是告警引擎,又是 webapi
  • n9e-edge 部署在边缘机房,作为告警引擎

夜莺作为告警引擎,可以对接多种数据源,哪些告警引擎负责哪些数据源的告警判定,是需要用户告知夜莺的。

所以,

  • 启动夜莺的进程的时候,要做好规则,在 config.toml 配置文件里指定 EngineName,即引擎的名字,相同名字的引擎会当做一个引擎集群
  • 要在夜莺里配置数据源的信息,包括连接地址,以及和告警引擎集群的关联关系

然后,告警引擎就开始干活了,对自己负责的那些数据源,做告警判定。

告警判定是需要有告警规则的,即:哪些监控指标阈值是多少,需要用户给出。所以,需要用户在夜莺页面上配置告警规则(可以导入内置的现成的一些告警规则,然后二次修改)。

OK,进入正题。

告警处理流程概述

我们来看整个告警流程示意图:

  1. 用户在 Web UI 配置告警规则,规则保存在 DB 中(通常是 MySQL)。
  2. 告警引擎(n9e 进程内置一个告警引擎,边缘模式下 n9e-edge 进程里也内置告警引擎)从 DB 同步告警规则到内存中(通常 n9e-edge 无法直接读 DB,是调用的中心端 n9e 的接口获取的告警规则)。
  3. 告警引擎会为每条告警规则创建一个 goroutine(协程,姑且可以理解为轻量级线程),按照用户在告警规则里配置的频率,周期性查询存储,对数据做异常判定,最终生成告警事件。
  4. 产生告警事件后,判定是否被屏蔽了,如果被屏蔽了直接丢弃事件,否则,要把事件持久化到 DB 中(通常是 MySQL),然后再走后面的通知规则。
  5. 通知规则包含两部分,一个是若干事件处理器(比如 relabel、event update、event drop、ai summary 等),另一个是若干告警通知配置(比如 Critical 的告警事件打电话、发短信,Warning 的告警事件只发邮件)。

1. 生成告警事件

这块逻辑和 Prometheus 很像,只不过 Prometheus 只支持对自身 TSDB 的数据做告警判定,夜莺支持其他更多类型的数据源。

以 Prometheus、VictoriaMetrics 等时序数据源为例,夜莺会根据告警规则里的 promql 查询数据(按照执行频率周期性查询),查到了就认为有异常数据,就要产生告警事件,如果配置了持续时长,则要连续等待更长时间,每次都查到异常数据才产生告警事件。

产生告警之后,如果后面某次查询查不到对应的异常数据了,就认为告警恢复。如果配置了留观时长,则要多等待留观时长对应的时间,这个时间内没有再查到异常数据才算恢复。

注意:告警之后,如果新的监控数据写入时序库有延迟,比如数据采集链路出了问题或者变慢了,告警引擎查询的时候查不到数据,也会报恢复。因为引擎分辨不出是数据不符合阈值了所以没有返回还是数据延迟了所以没有返回。

2. 告警事件的数据结构

告警事件是根据告警规则查询数据源产生的。告警事件有很多属性,以及标签。

  • 属性:比如告警级别、规则标题、事件状态、触发时间、触发时的值等,里边很多属性是来自事件对应的告警规则
  • 标签:事件的标签有两个来源,一个是查询数据源返回的数据里的标签,一个是告警规则的附加标签

比如某个告警规则,其 promql 为 disk_used_percent>0,根据这个 promql 查到的数据为:

那就会产生 3 条告警事件,因为 promql 返回了 3 条数据,3 条数据的标签不同,用于区分三个事件。

后续的各类规则,比如屏蔽规则、订阅规则、通知配置,都要对告警事件做筛选,核心就是按照告警事件的属性、标签进行筛选。

3. 告警屏蔽

告警事件产生之后,会去找告警规则所属的业务组下面是否有屏蔽规则,如果有,就拿着这个告警事件挨个去匹配屏蔽规则,如果匹配了某个屏蔽规则,则告警被屏蔽,直接丢弃告警事件,不会写入 DB。

后面可能会修改这块的逻辑,屏蔽的告警事件也存 DB,只是打个“已屏蔽”的标记。

注意,屏蔽规则只生效在同业务组下的告警规则产生的事件。防止某个新兵配置了一个全局屏蔽规则,把公司所有告警都屏蔽了。

屏蔽规则的多个条件之间是 AND 的关系,即 与 的关系,这点请注意。官网文档里也有相关说明,这里不再赘述。

4. 告警事件持久化

告警事件如果没有被屏蔽,就要入库持久化,写入 alert_his_event 表,这是所有历史事件的全量存档表,同时,也会修改 alert_cur_event 表,这是活跃告警表,即当前尚未恢复的告警事件的一个表。

如果从细节来讲,其实可以把告警和事件区分开(后面版本的夜莺可能会做这个改进)。

比如 a 机器 mem_free 指标在 10:00:00 告警了,产生了一条告警事件,其 id 是 1,hash 是 xx,告警规则里通常会配置重复通知,每隔 1h 重复产生一条新的事件。即 a 机器 mem_free 指标在 11:00:00 会再次产生一条告警事件,其 id 可能为 2,hash 仍然是 xx。

这两条事件是在两个时刻产生的,是两个对象,所以 id 不同,但是确实都是说的一个事,都是 a 机器的 mem_free 告警,所以 hash 值相同,后面告警恢复的时候,会产生一个新的事件,其 id 可能为 3,hash 值仍然是 xx,这样才能关联起来。

有了上面的讲解,alert_cur_event 表的更新逻辑就成了:

  • 来了一个新的事件,根据这个事件的 hash,删除 alert_cur_event 的记录
  • 如果这个新事件是恢复事件,就啥都不用干了,相当于:恢复告警就要从活跃告警里清理掉;如果新事件是告警事件,就把最新的事件写入 alert_cur_event

这个设计其实不太好,在整个体系里只有 event 的概念,没有 alert 的概念,少抽象了一个领域对象。后面的版本可能会改进。

5. 事件关联通知规则

告警事件产生了,后面可能涉及对告警事件的二次处理,比如做 relabel、做过滤等,以及把告警事件投递发送出去。这就涉及到“通知规则”了。

那告警事件具体和哪个通知规则关联呢?在夜莺里有两种方式:

  1. 告警规则里直接配置通知规则:这个告警规则产生的所有告警事件,都直接走这个通知规则
  2. 使用订阅规则:订阅规则相当于是写了一个告警事件的筛选条件,会筛选到一堆告警事件,筛到的这些事件交予订阅规则里配置的通知规则去处理

通常走第 1 种方案就可以了,对于某些全局级别的通知规则,可以走方案 2。

6. 通知规则

通知规则最核心的是配置通知媒介和告警接收人。之前这些信息是在告警规则里直接配置的,感觉不灵活,从 V8 开始单独提取出来了。

如果各个团队分别收告警,通常,每个团队要对应一个通知规则,在这个通知规则里,一次性配置好什么样的告警发什么通知媒介,然后这个团队的所有告警规则都绑定这个通知规则即可。

通常,根据告警级别定义不同的通知媒介,比如:

  • Critical 的告警,打电话、发短信、发邮件、钉钉
  • Warning 的告警,只发短信、发邮件、钉钉
  • Info 的告警,只发邮件、钉钉

通知这里,还要对两个东西做实体建模抽象,一个是通知媒介,一个是消息模板。V8 版本可以很方便对接一个企业内部的通知媒介。具体可以参考相关文档,这里不再赘述。

7. 事件处理器

V8 还引入了一个事件处理器的概念,可以把多个处理器组成一个 Pipeline,通知规则里可以引用多个 Pipeline。

这里的思考是:告警事件产生之后,可能有各种不同的处理,比如做 relabel、filter、enrichment 等,Pipeline 相当于抽象了一个 workflow,让用户在事件处理的链路上插入一些自定义的逻辑,给用户极大的灵活性

开源运维监控系统-Nightingale(夜莺)应用实践 某业务系统因OS改造,原先的Zabbix监控系统推倒后未重建,本来计划用外部企业内其他监控系统接入,后又通知需要自建才能对接,考虑之前zabbix的一些不便,本次计划采用一个类Prometheus的监控系统,镜调研后发现Nightingale兼容Prometheus,又有一些其他功能增强,又在一些大的企业经过较大规模部署实践,故本次采用Nightingale作为监控系统来进行重建。 阅读详情

相关推荐

【AI方案集】多模态AI智能家居控制中枢设计方案.docx

这套AI技术方案不走“先堆概念再硬套场景”的老路,而是以业务痛点为锚点,把机器视觉识别、预测性分析、大模型知识赋能等能力拆解成轻量化可落地的功能模块,直接嵌入生产运营的关键环节,既能快速落地见效,又能通过持续的数据迭代逐步放大价值,帮企业在不盲目新增硬件投入的前提下,稳步完成智能化升级,实实在在把AI变成能降本、提效、控风险的生产工具。

夜莺搭建(边缘机房)

n9e-edge 不依赖 mysql、redis,只依赖中心端的 n9e,所以 edge.toml 配置文件里,需要配置中心端 n9e 的地址。然后添加边缘机房时序库的数据源 后查看已获取到。查看系统配置->告警引擎。

zs11234的博客 911

高校技术转移办公室人员如何提升技术成果的市场化对接效率?.docx

高校技术转移办公室人员如何提升技术成果的市场化对接效率?

告警能力中台设计与实践(二)——事件树系统

针对第三方服务告警需求,设计开发告警能力的业务中台,提供策略集中管理分发、告警数据汇聚、收敛、告警事件化、多维度通知等能力。

不积跬步无以至千里 1855

国央企创新负责人如何通过平台实现科技成果的定向匹配与快速转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

端口测试软件Windows

端口测试软件Windows

zabbix事件自动创建事件工单

1.zabbix告警触发调用脚本,action.sh 2.action.sh带入事件描述变量,登录iTop系统,创建一个事件工单。

ITSM/ITIL/网络安全/IT运维 1352

Java编程MVC架构下的Web开发示例

内容概要:本文通过一个“用户管理”功能的开发实例,详细展示了MVC(Model-View-Controller)架构在Web开发中的具体应用。文章将系统划分为三层:Model负责数据与业务逻辑,View专注于页面展示,Controller处理请求并协调前后端交互。通过手写Servlet + JSP的传统方式实现MVC,帮助读者深入理解分层原理和请求流转过程,包括数据传递、视图渲染与重定向机制。同时简要对比了Spring MVC的实现差异,突出传统实现对架构本质的清晰呈现。示例采用内存模拟数据库操作,简化环境依赖,便于学习。 适合人群:具备Java基础和基本Web开发知识,工作1-3年的后端研发人员或学习中的计算机专业学生。 使用场景及目标:①掌握MVC架构的核心思想与分层职责划分;②理解Servlet如何作为控制器处理HTTP请求与响应流程;③学习JSP与JSTL在视图层的数据渲染与安全防护(如XSS防御);④为后续学习Spring MVC等现代框架打下扎实基础。 阅读建议:建议动手实践文中代码,结合调试观察请求流程与数据流向,重点关注各层之间的协作关系及PRG模式的应用,以加深对Web应用整体结构的理解。

从告警风暴到精准定位:Pinpoint监控指标告警事件关联规则自动化配置指南

你是否还在被海量告警淹没?当服务器CPU骤升、响应时间飙红、数据库连接池耗尽同时发生时,如何快速判断根因?Pinpoint作为分布式系统应用性能管理(APM)工具,提供了强大的监控指标告警事件关联能力。本文将详解如何通过自动化配置,让告警规则从"被动响应"升级为"主动关联",读完你将掌握:3步完成基础告警规则配置、5种事件关联模式设计、2个自动化配置案例(含YAML模板)。 ## 告警事件关联的...

gitblog_00743的博客 769

文旅酒店业AI知识库平台规划方案(生态合作版).pptx

文旅酒店业AI知识库平台规划方案(生态合作版).pptx

政府科技管理者在推动科技成果转化时,如何确保科技成果的评价结果具有科学性和权威性?.docx

政府科技管理者在推动科技成果转化时,如何确保科技成果的评价结果具有科学性和权威性?

夜莺监控 - 边缘告警引擎架构详解

夜莺类似 Grafana 可以接入多个数据源,查询数据源的数据做告警和展示。但是有些数据源所在的机房和中心机房之间网络链路不好,如果由 n9e 进程去周期性查询数据并判定告警,那在网络链路抖动或拥塞的时候,告警就不稳定了。所以,夜莺引入了边缘告警引擎:n9e-edge。n9e-edge 进程部署在边缘机房,和边缘机房的时序库部署在一起,由 n9e-edge 负责边缘机房的告警判定工作,这样整个架构就稳定的多了。

n9ecommunity的博客 1734

两相交错并联Boost电路仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了两相交错并联Boost电路的Simulink仿真模型,属于电力电子变换器领域的核心技术研究。该模型基于Simulink平台构建,重点在于通过多相交错并联结构提升Boost电路的输出稳定性与转换效率,有效降低输入电流纹波,适用于中高功率电力变换场合。文档系统阐述了电路的工作原理、闭环控制策略设计、软启动机制实现以及关键参数的优化方法,充分展现了多相并联技术在改善动态响应、提高功率密度方面的优势。同时,提供了完整的仿真建模流程和技术路线,涵盖主电路搭建、控制器设计、系统调试与性能分析等环节,并配套提供仿真文件、设计报告及参考文献等丰富资料,便于学习者深入理解与实践复现。; 适合人群:具备电力电子技术基础知识、熟悉Simulink仿真环境,正在从事新能源发电、电动汽车、工业电源系统等相关领域研究的硕士博士研究生、科研人员及电气工程方向的工程技术人员。; 使用场景及目标:①用于深入理解多相交错并联Boost电路的拓扑结构与工作机理;②支撑科研项目中的高效DC-DC变换器性能验证与优化设计;③为实际电源产品开发提供理论依据和仿真原型;④作为高校课程设计或实验教学的参考案例,提升学生的工程仿真与系统分析能力。; 阅读建议:建议结合文档中提及的其他相关变换器模型(如LLC谐振变换器、PFC电路、Buck变换器等)进行横向对比学习,深入掌握不同拓扑的控制策略差异与适用场景,并充分利用所提供的网盘资源下载完整仿真模型,动手调试参数、观察波形,从而深化对多相并联控制、电流均流、闭环稳定性等关键技术的理解,全面提升电力电子系统的仿真与设计能力。

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink平台构建的全桥LLC谐振变换器闭环仿真模型,采用变频与移相混合控制策略,以实现对变换器高效、稳定的动态调节。文档系统阐述了变换器的主电路建模方法、关键参数设计流程及闭环控制系统架构,涵盖了软启动过程、恒压恒流双竞争控制等多种典型工况的仿真验证,充分体现了其在高频高效电源系统中的应用潜力。资源包还包含完整的设计报告、仿真文件与参考文献,有助于用户深入理解并复现实验结果,适用于电力电子系统的研究与工程开发。; 适合人群:电力电子、电气工程及其自动化等相关专业的研究生、科研人员以及从事开关电源、新能源变换器设计的工程技术人员,要求具备扎实的电路理论基础和一定的Simulink仿真能力。; 使用场景及目标:①深入掌握全桥LLC谐振变换器的工作机理与变频+移相结合控制策略的设计原理;②学习如何在Simulink中搭建高精度闭环仿真模型,并开展动态响应、效率优化与稳定性分析;③为科研课题、学位论文或工业级电源产品的研发提供可复用的技术方案与仿真模板支持; 阅读建议:建议结合所提供的设计报告与仿真模型同步操作,重点剖析控制环路(如PI调节器)的设计思路与参数整定过程,通过调整输入电压、负载条件等方式测试系统的鲁棒性与调节性能,从而全面深化对LLC谐振变换器闭环控制机制的理解。

夜晚监控场景下老鼠检测数据集VOC+YOLO格式3961张1类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

电动车检测数据集VOC+YOLO格式3015张1类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

ABAQUS插件-批量创建基准面并拆分

1.插件在“part”模块使用; 2.解压缩后,先仔细阅读“安装及使用指南”。

无人机视角建筑物楼房外立面缺陷剥落裂缝检测数据集VOC+YOLO格式1263张2类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

上一篇: 夜莺监控设计思考(四)关于机器那些事儿
下一篇: SRE 踩坑记:JVM 暂停竟然是因为日志
夜莺开源监控
博客等级 码龄6年 1358粉丝 203原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜莺开源监控

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值