理想的监控系统到底是什么样的?

智数破浪人
• 阅读 162
笔者从 14 年开始做监控,从 Open-Falcon 到后来的 Nightingale,到现在接近 10 年,认知在持续迭代,最近又有一些新想法,跟大家分享一下我眼中的理想的监控系统到底是什么样的。

关于采集器

市面上有众多采集器,比如 telegraf、categraf、grafana-agent、datadog-agent 以及 Prometheus 生态的各类 Exporter,但没有一个是完美的。采集器的理想形态应该是做成两个进程组件,一个部署到所有 OS 上,以 Daemonset 方式来跑,采集机器上的 OS 指标、日志、eBPF 等数据,因为这些数据必须要和操作系统、文件系统交互,所以一个部署到所有机器上的 agent 必不可少,后面计划让 Categraf 往这个方向演进。还需要另外一个进程组件,做探针类的采集,比如采集 MySQL、Redis、Kafka、ElasticSearch 等组件的数据,这个进程组件可以作为 Sidecar 模式和被采集对象部署到一起,也可以在中心作为 Deployment 部署,采集远端的监控目标,要支持良好的对象目标发现,引入 Prometheus 中的各类 SD 机制,最近新起了一个开源项目是 cprobe,就是专门做探针采集器。

传输中转

如果只是指标数据,量比较小,一般可以直接让采集器直连 TSDB 推数据。如果担心服务端挂了,采集器就需要把数据临时缓存起来,等服务端好了再继续推,这种需求并不是所有的采集器都能很好的满足,推荐使用 vmagent 或 Vector 做个中转,vmagent 有缓存和重试机制,如果后端是 VictoriaMetrics 的话,vmagent 写数据到 VM 后端会走一个压缩比更高的协议而非 Prometheus remote write,另外 vmagent 支持接收不同协议的监控数据,兼容并包,这也是一个优点。Vector 的话,一般用于清洗和转发日志,替换 logstash 的,当然 Vector 也可以中转指标。

小结:各机房之间网络链路很好,让采集器直推服务端即可,如果要做的更鲁棒一些,中间可以加 vmagent 或 Vector 做中转。

存储

性能监控数据通常是写到各类时序库,比如 VictoriaMetrics、Prometheus、Thanos、M3DB,如果是新用户,一般就建议使用 VictoriaMetrics,稳如老狗。当然了,业务监控数据(比如订单量、交易支付量)可能存在 OLTP 或 OLAP 的库里,业务数据也是一个很好的监控数据源。另外,日志一般就是存 ElasticSearch、ClickHouse 中,日志告警也是有很强的场景诉求的。

小结:从监控系统构建的角度,存储是个大杂烩,不同的数据写不同的存储,而这,就需要上层的可视化平台和告警平台能够对接这些存储,做统一分析和告警。

可视化

Grafana 就好。能够很好的支持各类存储的可视化。Nightingale 也可以,在 TDengine 等个别数据源的支持上体验更好,但 Grafana 整体能力更强大,生态也更好。

告警

首先,因为存储是个大杂烩,告警系统就需要能够对接各类存储,比如做指标告警可能要对接 Prometheus、VictoriaMetrics,做日志告警可能要对接 ElasticSearch、Loki、ClickHouse,做业务指标的告警可能要对接 MySQL、Postgres。而且要处理不同的告警方式,比如阈值告警、数据缺失告警、数据存在告警、智能算法告警等等。目前只有 Nightingale 和 Grafana 走在这个路上,但是也远远没有达到理想的状态。

除了对接不同的数据源做指标、日志、智能告警,还要支持模板仓库沉淀经验,支持不同的生效时间(甚至要考虑节假日),支持灵活的评估表达式,支持自定义 labels、annotations,支持留观时长,支持是否推送恢复事件的控制,支持事件生成次数和频率的控制,等等等等。后面会让 Nightingale 逐渐往这些方面演化迭代。对于不想自己搭建告警系统的用户,我后面会搞一个 SaaS 服务给大家用。

事件分发

告警事件产生之后,还有后面的分发过程,除了要能够灵活的根据标签做分发,还需要做告警聚合降噪、认领、告警升级、排班OnCall、IM协同等工作。因为告警引擎通常产生告警事件就完事了,不会对后续的事件处理做太多功能支持,这就需要一个单独的产品来做这些事情,这个产品也能够聚合接收各类监控系统的事件,比如 Zabbix、Prometheus、Nightingale、Grafana、各类云监控。

这类型的产品国外首选 PagerDuty 和 OpsGenie,国内首选 FlashDuty 和 睿象云,屁股决定脑袋,笔者个人自然更推荐 FlashDuty,其产品介绍地址在这里:

https://flashcat.cloud/product/flashduty/

另外,我有想法直接让 FlashDuty 内置告警引擎,来直接对接各类存储做告警,这样大家就不用自己搭建告警系统了,直接用 FlashDuty 就可以完成告警+事件分发。大家只需要着力做好数据采集、存储、展示就 OK 了。这个想法近期会落地,有兴趣的可以联系我做天使客户,天使客户天使对待。

结语

本文是从监控系统的构建角度,从采集->传输->存储->可视化->告警->事件分发不同阶段做了简要分析,给了一些可能的解法,希望对大家有帮助。如果你对监控系统的构建有更好的想法,欢迎留言交流。

点赞
收藏
评论区
推荐文章
芝士年糕 芝士年糕
2年前
Linux操作系统性能指标监控与通知
最近整了一台服务器,搭建了web网站,整了一下监控系统,这样也方便,我用的是3A的服务器,服务挺不错的系统的性能指标监控是比较常见的针对系统的管理场景,比如系统有挖矿程序,或者系统本身存在高CPU进程(正常应用),除了CPU之外,也可以监控内存,硬盘
DevOpSec DevOpSec
4年前
运维,关于监控的那些事,你有必要了解一下
作者|乔克来源|运维开发故事监控是整个运维以及产品整个生命周期最重要的一环,它旨在事前能够及时预警发现故障,事中能够结合监控数据定位问题,事后能够提供数据用于分析问题。一、监控的目的监控贯穿应用的整个生命周期。即从程序设计、开发、部署、下线。其主要的服务对象有:技术业务技术通过监控系统可以了解技术的环
Johnny21 Johnny21
4年前
运维监控系统——Zabbix简介
前言对于运维人员来说,监控是非常重要的,因为如果想要保证线上业务整体能够稳定运行,那么我们则需要实时关注与其相关的各项指标是否正常,而一个业务系统的背后,往往存在着很多的服务器、网络设备等硬件资源,如果我们想要能够更加方便的、集中的监
Stella981 Stella981
3年前
64.监控平台介绍 安装zabbix 忘记admin密码
19.1Linux监控平台介绍19.2zabbix监控介绍19.3/19.4/19.6安装zabbix19.5忘记Admin密码如何做19.1Linux监控平台介绍:常见开源监控软件~1.cacti、nagios、zabbix、smokeping、openfalcon等等~2.cacti、smokeping偏向于基础监
Stella981 Stella981
3年前
CODING DevOps 系列第六课:IT 运维之智能化告警实践
IT运维告警现状目前IT运维领域保证服务运行正常的主要方法是对相关运维指标进行实时监控,并根据经验设定一些规则,通过将实时监控的数据与规则进行对比,当某个指标监控值不符合设定的规则时,则判定为异常的状况,这样的话就会发送对应的告警到告警平台。告警平台收到通知后,会分配给对应的运维人员进行处理,运维人员去根据告警信息来排查,最终定
Wesley13 Wesley13
3年前
JMX
最近在看flume的监控源码,发现flume的监控metrics是存放在MBean中,再由web服务暴露到其他监控系统中。这次又get到了一个新知识点,今天给大家分享一下。什么是JMX和MBean?    JMX(Java管理扩展)提供了一种简单的、基础的方法,用来管理诸如应用、设备和服务等资源。由于JMX技术是动
Stella981 Stella981
3年前
LoadRunner如何监控Linux下的系统资源
关于LoadRunner监控Linux系统资源,大致分为以下步骤:1、在监控Linux之前我想阐述的观点是,Liunx系统机制与windows大致相同,要监控并得到他的相关参数必须需要得到它的同意,这就是操作系统,所以你必须有足够的权限和方法才能获得,关于Linux在LR中也相关添加区域,与windows享有同等的地位。在windows中需要开启许多许多
Stella981 Stella981
3年前
APM终端用户体验监控分析(下)
一.前言\APM终端用户体验监控分析(上)\\1\从APM终端用户产品特性、使用建议、以及从\真实用户体验\\2\和\模拟性能监控\\3\两方面入手给大家进行了简单的分享。本文为下篇,将给大家介绍几种新的APM终端\用户体验\\4\监控的方式。!APM终端用户体验监控分析(下)(http://blo
Stella981 Stella981
3年前
DevOps运维系统:监控管理
ITIL4的监控管理在DevOps风行的当下,人们越来越关注自动化运维。其中,监控预告警、监控自愈越发流行起来。在《DevOps实践指南》和《持续交付发布可靠软件的系统方法》两本书中(DevOps的教科书级别),都有涉及讲解监控管理和实施。其实,监控早不是什么新概念,运维界无论在理论还是工具中,一直在不断探索。监控管理虽然在I
云空间视频监控的可扩展性:适应不断增长的监控需求
随着企业和组织不断扩大,对视频监控系统的需求也在持续增长。云空间视频监控以其卓越的可扩展性,为满足这些日益增长的监控需求提供了理想的解决方案。本文旨在分享云视频监控的可扩展性优势,并提供从开发到部署的详细操作过程。
京东云开发者 京东云开发者
5个月前
物流KA商家业务监控能力建设与实践
作者:京东物流林群一、背景在常规的运维及线上故障响应实践中,我们观察到系统监控指标(SystemLevelMetrics)的异常波动往往与业务监控指标(BusinessLevelMetrics)的异常呈现高度相关性。具体而言,当系统级监控指标出现异常时,业
智数破浪人
智数破浪人
Lv1
我昨天不太开心,今天一定努力。
文章
3
粉丝
0
获赞
0