前言

监控系统的重要性不言而喻,国内用的最多的应该是 Zabbix 和 Prometheus,其优缺点:

  • Zabbix 是资产管理式,监控数据存在数据库中,擅长设备监控,不擅长微服务和云原生环境的监控;推出时间较早,社区活跃度较高
  • Prometheus 是云原生环境的监控利器,支持多维度的指标数据,自研存储引擎,但是告警引擎是单点,使用配置文件管理规则,缺少权限化管理的 WebUI,如果把监控能力开放给公司所有团队,让各个团队自服务,就比较困难

随着云的发展,Zabbix 感觉是依托于存量市场,而 Prometheus 是未来的大势所趋。那 Prometheus 的缺点应该如何解决呢?推荐大家了解一下夜莺(Nightingale)开源项目。

夜莺介绍

夜莺项目 github 地址是 https://github.com/ccfos/nightingale 。其中 ccfos 是哪家公司?其实,ccfos 不是家公司,ccf 是中国计算机学会的缩写,os 是 open source 的缩写,ccfos 是中国计算机学会开源项目的统一地址。夜莺项目最初由滴滴开源,后来捐赠给中国计算机学会进行托管了。

目前,夜莺项目的 github star 数量在 9300 多,fork 数量在 1300 多,相当于每 7 个 star,就有一次 fork,docker pull 的数量 178000,增长曲线非常健康。

夜莺产品架构

夜莺核心是做一个高可用的告警引擎,支持多数据源接入,很多公司都有多个 Prometheus、VictoriaMetrics、Thanos,希望统一管理告警规则,于是,夜莺的产品架构图如下:

用户配置的告警规则,可以同时生效到多个时序库,不需要为每个时序库分别配置告警规则。另外,对于有些公司有多个机房,网络链路不太好,时序库可能分散在多个机房,夜莺支持把告警引擎下沉部署到各个机房,即便和中心机房的网络链路中断,也不影响边缘机房的告警。架构图如下:

下面我们介绍一下夜莺的优势和劣势。

夜莺优势1:灵活的告警规则

夜莺主要是告警引擎这块做得最方便,告警规则的配置也较为灵活,告警规则支持级别抑制、生效时间配置、事件 relabel、告警屏蔽、告警订阅、告警自愈等等。告警规则的配置界面如下:

  • 数据源支持配置多个,也可以选择全部,即:一条告警规则生效到多个数据源
  • 告警规则支持多条,可以启用级别抑制,编写 promql 时可以调出内置指标,方便编写
  • 事件 relabel 是对告警事件的二次处理,比如 drop 掉一些不想要的标签
  • 生效时间用于配置告警规则的生效时间,比如只在工作日生效,周末不生效,或者只在白天生效,晚上不生效,或者不同时段不同阈值
  • 告警自愈是告警触发之后,自动执行一些脚本,串联一些固定止损操作
  • 回调地址是告警触发之后,调用第三方接口,比如钉钉、飞书等,进行告警通知,也可以对接各个公司自定义的接口

夜莺优势2:内置很多最佳实践

夜莺除了对接时序库,还可以对接各类采集器 agent,比如 telegraf、categraf、datadog-agent、各类 exporter 等,不同的数据库、中间件都有提供一些现成的仪表盘、告警规则,这样可以快速上手,省心不少。下面是夜莺内置的模板中心:

很多朋友不会写 promql,但是 promql 在 Prometheus 生态里又极为重要,那能否让一些资深工程师提前写好,沉淀下来,普通工程师直接用呢?夜莺支持的指标视图就是干这个事的,目前已经内置沉淀了几百个 promql,开箱即用。

夜莺的劣势1:仪表盘不如 grafana

虽然已经内置了不少仪表盘了,但是还是不如 grafana 那么丰富,grafana 在看图这块确实无出其右,夜莺内置的那些仪表盘,如果你觉得够用了,就用,如果觉得不够用,建议还是上 grafana,下图是夜莺内置的一个仪表盘样例:

夜莺的劣势2:告警降噪能力不够

夜莺侧重在多数据源告警、告警规则统一管理,支持邮件、企微、飞书、钉钉等通知媒介,通过自定义通知脚本,也可以实现电话、短信通知,即常用的通知媒介都是支持的,不支持的写个脚本也可以支持。但是告警收敛降噪、排班、认领、升级、和 IM 深度打通等功能,还是不够(可能我想要的太多)。

夜莺核心研发团队搞了一个 FlashDuty 的 SaaS 产品,专门做这块,但是 FlashDuty 是收费的,不是开源的。FlashDuty 有免费套餐,对于小公司可以白嫖。当然,FlashDuty 就不止是针对夜莺了,也可以对接其他监控系统,比如 Prometheus、Zabbix、各类云监控、蓝鲸、SkyWalking 等。核心逻辑就是:这些监控系统负责产生告警事件,统一发给 FlashDuty,FlashDuty 负责事件后续处理,比如告警降噪、排班、认领、升级、和 IM 深度打通等功能。

总结

夜莺没有 Prometheus 的用户广,不过夜莺和 Prometheus 是协同关系,不是非此即彼,夜莺的企业用户有上千家,比如移动、联通、电信、米哈游、莉莉丝、途游、悠星、高济、益丰、大参林、方正证券、国泰君安、海底捞、海康、搜狐、新浪等,分布在各行各业。夜莺开源项目的背后有商业公司(flashcat.cloud)在持续运作支持,而且托管在基金会,发展具有可持续性,推荐大家在日常工作中尝试。

9k star 监控系统,100% 国产,推荐了解的更多相关文章

  1. 手把手教你树莓派实现简易室内监控系统(C)之BOA服务器的搭建

    本篇主要讲利用BOA服务器做室内监控系统的服务器端. 古人云:万事开头靠百度,实在不行就Google.小编也是一步一步的,亲自搭建成功,不能说是万全之策,仅仅是给大家一个参考就满足了. 第一步: 1. ...

  2. 基于 HTML5 WebGL 的低碳工业园区监控系统

    前言 低碳工业园区的建设与推广是我国推进工业低碳转型的重要举措,低碳工业园区能源与碳排放管控平台是低碳工业园区建设的关键环节.如何对园区内的企业的能源量进行采集.计量.碳排放核算,如何对能源消耗和碳排 ...

  3. 微信团队原创分享:iOS版微信的内存监控系统技术实践

    本文来自微信开发团队yangyang的技术分享. 一.前言 FOOM(Foreground Out Of Memory),是指App在前台因消耗内存过多引起系统强杀.对用户而言,表现跟crash一样. ...

  4. Centos 7.2天兔(Lepus 3.8)数据库监控系统部署

    天兔(Lepus 3.8)数据库监控系统部署 转载自:https://blog.csdn.net/m0_38039437/article/details/79613260 一.安装LAMP基础环境 首 ...

  5. 运维开发实践——基于Sentry搭建错误日志监控系统

    错误日志监控也可称为业务逻辑监控, 旨在对业务系统运行过程中产生的错误日志进行收集归纳和监控告警.似乎有那么点曾相识?没错... 就是提到的“APM应用性能监控”.但它又与APM不同,APM系统主要注 ...

  6. 饿了么监控系统 EMonitor 与美团点评 CAT 的对比

    背景介绍 饿了么监控系统EMonitor:是一款服务于饿了么所有技术部门的一站式监控系统,覆盖了系统监控.容器监控.网络监控.中间件监控.业务监控.接入层监控以及前端监控的数据存储与查询.每日处理总数 ...

  7. 基于 H5与webGL 的低碳工业园区监控系统

    前言 低碳工业园区的建设与推广是我国推进工业低碳转型的重要举措,低碳工业园区能源与碳排放管控平台是低碳工业园区建设的关键环节.如何对园区内的企业的能源量进行采集.计量.碳排放核算,如何对能源消耗和碳排 ...

  8. 使用Ubuntu系统编译安装Zabbix企业级监控系统

    使用Ubuntu系统编译安装Zabbix企业级监控系统   作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Ubuntu系统部署笔记:https://www.cnblogs.com/ ...

  9. 【转】Spark Streaming 实时计算在甜橙金融监控系统中的应用及优化

    系统架构介绍 整个实时监控系统的架构是先由 Flume 收集服务器产生的日志 Log 和前端埋点数据, 然后实时把这些信息发送到 Kafka 分布式发布订阅消息系统,接着由 Spark Streami ...

  10. 使用Ubuntu系统管理包工具(apt)部署Zabbix企业级监控系统

    使用Ubuntu系统管理包工具(apt)部署Zabbix企业级监控系统  作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Ubuntu系统部署笔记:https://www.cnblo ...

随机推荐

  1. C# pythonnet(2)_傅里叶变换(FFT)

    Python代码如下 import pandas as pd import numpy as np import matplotlib.pyplot as plt # 读取数据 data = pd.r ...

  2. Godot中鼠标点击3D对象

    Godot中鼠标点击3D对象 方法一:调用RigidBody3D中的input_event事件 RigidBody3D中有信号input_event可以接受鼠标的输入,用这个信号可以处理点击事件. 具 ...

  3. ClickHouse介绍(四)ClickHouse使用操作

    ClickHouse使用操作 这章主要介绍在ClickHouse使用的各个操作的注意点.常规的统一语法不做详细介绍. 1. Join操作 在ClickHouse中,对连接操作定义了不同的精度,包含AL ...

  4. Ubuntu 22.04单机部署K3s

    安装docker 从docker官网获取最新的一键安装脚本,安装docker运行环境 curl -fsSL https://get.docker.com -o get-docker.sh sudo s ...

  5. UG二次开发 PYTHON 环境配置

    NX 二次开发 PYTHON VSCODE 环境配置 我电脑上装的是WIN11 NX1988 在电脑的UG的安装文件夹内找到 python 一般在 xx\NXBIN 在所在的文件夹内,运行python ...

  6. 【Hadoop报错】The directory item limit is exceeded: limit=1048576 items=1048576

    问题描述: 调度系统执行hive任务失败,一直执行失败,报错如下: java.io.IOException: java.net.ConnectException: Call From #HostNam ...

  7. 4. href 与 src?

    href (Hypertext Reference)指定网络资源的位置,从而在当前元素或者当前文档和由当前属性定义的需要的锚点或资源之间定义一个链接或者关系.(目的不是为了引用资源,而是为了建立联系, ...

  8. 使用FastReport报表动态更新人员签名图片

    在一些报表模块中,需要我们根据用户操作的名称,来动态根据人员姓名,更新报表的签名图片,也就是电子手写签名效果,本篇随笔介绍一下使用FastReport报表动态更新人员签名图片. 1.设计FastRep ...

  9. MongoDB分片+副本集高可用集群的启停步骤

    ■■ 集群启动步骤 1.先启动各节点的 config server mongod -f ${MongoDir}/conf/config.conf 2.再启动各节点的 shard server mong ...

  10. leetcode简单(矩阵):[566, 766, 832, 867, 999, 1030, 1261, 1275, 1337, 1351]

    目录 566. 重塑矩阵 766. 托普利茨矩阵 832. 翻转图像 867. 转置矩阵 999. 可以被一步捕获的棋子数 1030. 距离顺序排列矩阵单元格 1260. 二维网格迁移 1275. 找 ...