Grafana侧重可视化,那多数据源告警呢?
在监控、可观测性领域,Grafana 应该是使用最为广泛的开源项目了,Grafana 可以对接多种数据源,对其中的数据做可视化分析。
实际上,Grafana 也可以配置告警规则,只是设计上相对拧巴,用户用的比较少。因为大部分情况下,告警都是使用 Prometheus,所以用户就直接在 Prometheus 里配置告警规则了。当然,这样会有如下问题:
- Prometheus 的告警规则使用 YAML 文件维护,维护起来不方便
- 如果有多套 Prometheus,那维护起来更费劲
- 如果有日志告警需求,比如 ElasticSearch、ClickHouse 等,就需要寻找其他告警方案,人员权限、通知媒介等就散落各处了
- 业务数据经常存在 MySQL 等关系库中,如果对业务数据做告警,还需要有个针对 MySQL、Postgres 等 OLTP 库的告警引擎
今天为大家介绍另一款开源项目,侧重点就是多数据源告警,希望可以帮到大家。这个项目叫夜莺监控。
夜莺简介
夜莺监控最开始是滴滴开源出来的,后来捐赠给基金会运作,目前在 github 上已经上万颗星,小有影响力。
夜莺项目也算是一个监控系统,不过侧重点在告警引擎,可以对接常见的数据源,比如 Prometheus、VictoriaMetrics、Thanos、ElasticSearch、Loki、MySQL、Postgres、ClickHouse 等,根据用户配置的告警规则,对数据做判定,生成告警事件并发送。其架构示意图如下:

从图上可以看出:
- 夜莺包含两个功能模块,一个是 Webapi,用于和用户交互,对一些配置类信息做 CRUD,比如告警规则、通知规则、仪表盘等;另一个是告警引擎 AlertingEngine,根据用户配置的告警规则做告警判定
- 夜莺用到了两个存储,MySQL 存储用户、权限、规则等配置类信息;Redis 用于存储 JWT Token、机器的心跳信息等
- 夜莺可以对接多种数据源,比如下面框里的那些存储,对这些存储中的数据做告警判定
- 生成告警事件之后,可以通过不同的通知媒介发出,比如邮件、电话、短信、飞书、Flashduty、Slack 等
夜莺最核心的逻辑就是告警引擎,负责产生事件、对事件做二次处理,最终发出。我们看一下引擎的设计。
夜莺告警引擎

上图基本可以说明告警引擎的核心逻辑,里边涉及到一些概念:告警规则、屏蔽规则、通知规则、订阅规则、事件处理 Pipeline、事件处理器 Processor、通知媒介等。如果你用过 Prometheus 和 Zabbix,里边很多概念是类似的。
1.告警判定引擎
最左侧那个大的矩形框,比较告警判定引擎,里边有很多小圆圈,每个小圆圈表示一个 goroutine(go 语言中的协程,可以理解为轻量级线程),每个 goroutine 处理一个告警规则。
告警规则里通常会配置一个检测执行周期,goroutine 的核心逻辑姑且可以理解为一个死循环,每隔一段时间执行一次。执行的时候,就是根据用户配置的查询语句查询数据源,查到了数据,就要产生告警事件。
如果是 Prometheus 数据源,用户要配置 promql,如果是 VictoriaMetrics,用户要配置 Metricsql,如果是 ClickHouse、MySQL、ElasticSearch、Postgres 等数据源,用户要配置 SQL。
告警判定引擎需要从 DB 同步用户配置的告警规则,周期性同步,9秒一次。
2.屏蔽规则
产生告警事件之后,先判断屏蔽规则,如果命中了屏蔽规则,事件就被丢弃。
通常来讲,一些预期内的维护动作,可能会导致预期内的告警产生,可以通过屏蔽规则提前做屏蔽,省的大家收到告警担惊受怕。
3.事件持久化
告警事件产生之后,为了方便后面在页面查看,会持久化到 DB 里。
页面上分两个菜单,一个是活跃告警,用于展示当前未恢复的告警事件,另一个是历史告警,展示所有历史上的告警、恢复事件。
4.绑定通知规则
告警事件产生并持久化之后,下一步是关联通知规则,通知规则里可以对事件做二次处理并发送。
告警事件有很多,哪些事件绑定哪些通知规则,如何定义呢?有两个方式:
- 在告警规则里直接绑定通知规则。这个告警规则触发的所有事件都会走对应的通知规则
- 告警规则里不直接绑定通知规则,在订阅规则里绑定。订阅规则可以对告警事件做筛选,筛选到的事件走某个通知规则
5.通知规则
大公司通知规则有很多,通常每个团队一个通知规则,通知规则包含两部分:
- 事件处理器,对事件做二次处理,比如 Enrichment、Drop 等
- 通知配置,指定什么样的事件发什么通知媒介,比如 Critical 的告警打电话,Warning 的告警发短信
6.事件处理管道(Pipeline)

通知规则里可以配置多个 Pipeline,每个 Pipeline 里包含多个 Processor。事件处理器的典型场景:
- 跟内部的 CMDB 打通,附加一些更丰富的信息到告警事件上
- 调用 DeepSeek 的接口,对告警事件做一些智能分析,然后把分析结果附加到告警事件上
- 把所有告警事件发送到自己的系统,相当于镜像一份,做后续的分析处理
- 一些特定的告警事件可以 Drop 掉,比如一些恢复事件不想发送通知
总结
夜莺监控项目因为侧重点是告警,所以对告警事件相关的处理逻辑比较丰富,如果你也有类似需求场景,可以尝试一下试试。
参考:
- 夜莺代码仓库:https://github.com/ccfos/nightingale
- 夜莺文档地址:https://n9e.github.io/
- Grafana 官网:https://grafana.com/
Grafana侧重可视化,那多数据源告警呢?的更多相关文章
- 使用微创联合M5S空气检测仪、树莓派3b+、prometheus、grafana实现空气质量持续监控告警WEB可视化
1.简介 使用微创联合M5S空气检测仪.树莓派3b+.prometheus.grafana实现空气质量持续监控告警WEB可视化 grafana dashboard效果: 2.背景 2.1 需求: 1. ...
- Grafana数据可视化
1.1 Grafana简介 1.1.1 Grafana是什么? 一个类似Kibana的东西,也是对后端的数据进行实时展示,那么Grafana和Kibana有什么区别?在我看来区别不大,不过在大家的日常 ...
- zabbix+grafana实现可视化界面展示
昨天,经理找我说河南有个项目,甲方要求,一定要展示出科技感,问问我有什么好的方案,经过本人深(fen)思(kuan)熟(bai)虑(du),终于找到了一个心仪的方案,就是把业务监控用 zabbix+g ...
- 基于Prometheus和Grafana的监控平台 - 运维告警
通过前面几篇文章我们搭建好了监控环境并且监控了服务器.数据库.应用,运维人员可以实时了解当前被监控对象的运行情况,但是他们不可能时时坐在电脑边上盯着DashBoard,这就需要一个告警功能,当服务器或 ...
- Prometheus入门教程(二):Prometheus + Grafana实现可视化、告警
文章首发于[陈树义]公众号,点击跳转到原文:https://mp.weixin.qq.com/s/56S290p4j9KROB5uGRcGkQ Prometheus UI 提供了快速验证 PromQL ...
- 在Grafana中可视化Jenkins管道结果
这次我描述了一些稍微轻松的话题,与之前的一些帖子相比.就个人而言,我认为Grafana是一个非常酷的工具,用于可视化任何时间轴数据.事实证明,使用InfluxDB插件存储和可视化Jenkins构建结果 ...
- 通过官网模板轻松实现Grafana的可视化界面配置(以MySQL监控项为例)
我们知道可视化是监控的一个重要环节,所以往往我们这个环节花费大量的时间和精力.可是如果可以借鉴前辈的经验和成果,可以事半功倍.Grafana 有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编 ...
- idou老师教你学Istio 26:如何使用Grafana进行可视化监控
使用Grafana插件进行监控是Istio提供的监控能力之一.Istio提供丰富的监控能力,Grafana插件在Istio对Prometheus支持的基础上,为用户提供基于网页仪表面板的可视化监控效果 ...
- jmx_prometheus_javaagent+prometheus+alertmanager+grafana完成容器化java监控告警(二)
一.拓扑图 二.收集数据 2.1前期准备 创建共享目录,即为了各节点都创建该目录,有两个文件,做数据共享 /home/target/prom-jvm-demo 1.下载文件 jmx_prometheu ...
- 手把手教你搭建Windows 搭建Prometheus + Grafana + Jmeter可视化监控平台
下载安装包 Prometheus windows_exporter Grafana 下载地址:https://share.weiyun.com/D9sdiWoC 工作原理 Exporter 监控工具, ...
随机推荐
- HarmonyOS运动语音开发:如何让运动开始时的语音播报更温暖
鸿蒙核心技术##运动开发##Core Speech Kit(基础语音服务)# 前言 在运动类应用中,语音播报功能不仅可以提升用户体验,还能让运动过程更加生动有趣.想象一下,当你准备开始运动时,一个温暖 ...
- 16. MySQL 多版本并发控制
16. MySQL 多版本并发控制 @ 目录 16. MySQL 多版本并发控制 1. 什么是MVCC 2. 快照读与当前读 2.1 快照读 2.2 当前读 3. 复习 3.1 再谈隔离级别 3.2 ...
- vscode路径提示插件Path Intellisense
安装配置 在应用商店搜索Path Intellisense然后安装,安装之后需要配置 image.png image.png 点击设置按钮,在下拉列表中点击--扩展设置 选项,然后打开setting. ...
- c#基础(视频)
可空类型 类型后面+?就可以声明可空类型了,可空类型和普通的类型是两种类型,赋值时需要进行类型转换 例如 double? num=null: 面向对象 三大特征 封装 打包,便于管理 继承 拿来主义, ...
- Atlas启动报错:Caused by: org.apache.solr.common.SolrException: Cannot connect to cluster at xxx.com:2181: cluster not found/not ready
Atlas启动时报以下错误,看情况是atlas没有在zk上找到solr注册信息:然后发现solr启动命令bin/solr start -force会默认使用内置的zk,不会往公共zk上面注册: 解决方 ...
- AI领域又新增协议: AG-UI
随着AI的快速发展正在重塑技术生态,协议的演进速度尤为迅猛.一个令人头疼的问题浮现了:不同的AI智能体和前端应用之间就像说着不同语言的人,无法顺畅交流.开发者们需要为每个智能体单独编写接口,维护成本高 ...
- python如何将 数组文件 存储为json文件以及对于json文件的读取
简介 最近项目中要用到PCA计算,PCA从文件中读取数据,然后再写入数据 code #encoding = utf-8 import numpy as np import json from skle ...
- DeepCompare文件深度对比软件操作使用方法详细介绍
DeepCompare文件深度对比软件下载地址 可以通过以下网址下载软件,官网下载速度较慢,推荐通过CSDN或百度网盘下载. CSDN下载链接:https://download.csdn.net/do ...
- Product-Mechanics: 塑料:开模+挤塑量产
1. "业务广告"+"金属模具样品": 2. 生产设备: 3. 原料 4. 需求图:3D模型图: 5. 模具量产的成品
- SPI协议背景知识简介与FTDI的FT4232H配成USB to SPI(MPSSE)使用实例
MPSSE Application Example: http://ftdichip.cn/Support/SoftwareExamples/MPSSE.htm MPSSE: AN_129 FTDI ...