监控产品规划(二)--竞品分析

2023-04-19  本文已影响0人  sknfie

概述

通过对业界典型方案的竞品分析,以及深入了解监控的发展历史之后,对选型会有较大帮助。

Zabbix

zabbix是一个基于WEB界面的提供分布式系统监控以及网络监控功能的企业级的开源解决方案。zabbix能监控各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix核心由2部分构成,zabbix server与可选组件zabbix agent。zabbix server可以通过SNMP,zabbix agent,ping,端口监控等方法提供对远程服务器/网络状态的监控,数据收集等功能。
zabbix还有一些配套组件,zabbix proxy、zabbix java gateway、zabbix get、zabbix web等,共同组成了zabbix整体架构。


zabbix整体架构

Zabbix的优点:

Open-Falcon

Open-Falcon出现在Zabbix之后,Open-Falcon开发的初衷,就是解决Zabbix的容量问题,Open-Falcon最初来自小米公司,14年,小米有3套Zabbix,一套业务性能监控系统perfcounter,Open-Falcon初衷是想做一套大一统的方案,来解决这个乱局。


Open-Falcon

Open-Falcon基于rrdtool做了一个分布式时序存储组件graph,这种做法可以把多台机器组成一个集群,大幅提升整个集群的处理能力,前面负责转发的组件是transfer,transfer对监控数据求取一个唯一ID,再对ID做哈希,即可生成监控数据和graph组件的对应关系,这就是Open-Falcon架构中最核心的逻辑。

时序数据库异军突起

指标监控系统的架构中,最核心的部分是时序库,Zabbix直接使用DBMS,DBMS擅长处理的是事务场景,没有针对时序场景做优化,Open-Falcon就用rrdtool攒了一个,但是rrdtool本身的设计就有问题,对硬盘IO的要求太高,散文件太多,性能较差,Falcon-Graph是分布式的,可以通过堆机器来解决大规模的问题,但显然不是最优解。
于是,各种专门解决时序存储问题的数据库横空出世,比较有代表性的有:OpenTSDB、InfluxDB、TDEngine、M3DB、VictoriaMetrics、TimescaleDB 等。

OpenTSDB

OpenTSDB出来的挺早,2010年左右就有了,是基于HBase封装的,后来OpenTSDB持续发展,也有了基于Cassandra封装的版本。
OpenTSDB的数据模型很简单,包含四部分:metric(指标名称)、tags(维度标签)、timestamp(时间戳)、value(值),这种设计很灵活,后面很多时序库的数据结构都借鉴了这种设计,当然,会有小的优化,OpenTSDB确实是很好的先驱。
由于底层存储是基于HBase的,一般小公司都玩不转,所以OpenTSDB在国内的受众相对较小,当下2022年,再选型时序数据库,已经很少有人会选择OpenTSDB了。这里就不做过多介绍。

InfluxDB

InfluxDB来自InfluxData,19年D轮融资6000万美金,是一个创业公司做的项目,也拿到了不错的融资,所以开发人员不担心养家糊口的问题,做的产品还是非常不错的。
InfluxDB针对时序存储的场景做了专门的设计,专门设计了存储引擎、数据结构、存取接口,国内用的人挺多,而且InfluxDB可以和Grafana良好整合看图,组织社区开发了Telegraf采集器,整个生态是非常完备的。
不过InfluxDB开源版本是单机的,没有开源集群版本,毕竟是商业公司,需要赚钱实现良性发展,这个点是需要大家斟酌的。

TDEngine

姑且可以看做是国产版InfluxDB,Github的Star数上万,针对物联网设备的场景做了优化,性能很好,相比InfluxDB,生态上差一些,适合有自研能力的团队,使用TDEngine处理偏设备监控的场景。
TDEngine的集群版也是开源的,也可以兼容Telegraf采集器,创始人陶建辉也有非常高的技术热情,TDEngine也拿到了很高的融资,有粮草,未来可期。

M3DB

这是来自Uber的时序数据库,声称在Uber抗住了66亿Series,这个量是非常庞大的,M3DB是全开源的,包括集群版,不过架构原理上比较复杂,CPU和内存占用较高,在国内没有大规模推广起来。M3DB的架构代码中包含很多分布式系统设计的知识,是个可以拿来学习的好项目。

VictoriaMetrics

VictoriaMetrics,简称VM,架构上非常简单清晰,采用merge read方式,避免了数据迁移问题,搞一批云上虚拟机,挂上云硬盘,部署VM集群,使用单副本,是非常轻量可靠的集群方式。
VM实现了Prometheus的Querier接口,即 /api/v1/query
/api/v1/query_range
/api/v1/label/<label-key>/values
相关的接口,是Prometheus的一个非常好的Backend。

TimescaleDB

Timescaledb是 timescale.inc开发的一款兼容sql的时序数据库, 底层存储架构在postgresql上。作为一个postgresql的扩展提供服务。
因为是基于postgres的,所以,postgres生态四十年的积累,就是巨人的肩膀。比如对于保障数据安全,因为程序可能随时会崩溃,服务器可能会遇到电源问题或硬件故障,磁盘可能损坏或者夯住,这些极端场景都需要完善的解决方案来处理。postgres社区已经有了现成的高可用特性,包括完善的流复制和只读副本,数据库快照功能,增量备份和任意时间点恢复,wal支持,快速导入导出工具等。而其他时序库,这些问题都要从头解决。
但是传统数据库是基于btree做索引的,数据量到百亿或者千亿行,btree会大到内存都存不下,产生频繁的磁盘交换,数据库性能会显著下降。另外,时序数据的场景是写入量特别大,postgres面对大量的插入性能也不理想。那 TimescaleDB 就要解决这些问题。

新一代整体方案代表 Prometheus

Prometheus的思路来自Google的Borgmon,师出名门,就像Borgmon是为Borg而生,Prometheus就是为Kubernetes而生。Prometheus针对Kubernetes做了直接的支持,提供了Kubernetes的服务发现机制,大幅简化了Kubernetes的监控。
在Kubernetes环境下,POD创建和销毁非常频繁,Series生命周期大幅缩短,这导致类似Zabbix这种面向资产的监控系统力不从心,而且云原生环境下大都是微服务设计,服务数量变多,指标量也成爆炸态势,这就对时序数据存储提出了非常高的要求。
Prometheus1.0的版本设计较差,从2.0开始,对时序库做了重新设计,性能、可靠性都要好很多,另外社区涌现了越来越多的Exporter采集器,非常繁荣。Prometheus的架构如下:


Prometheus

Prometheus的优点:

新一代国产代表 Nightingale

Nightingale 可以看做是 Open-Falcon 的一个延续,因为开发人员是一拨人,不过两个软件的定位截然不同,Open-Falcon 类似 Zabbix,更多的是面向机器设备的,Nightingale 则不止是解决设备和中间件的监控,也希望能一并解决云原生环境下的监控问题。
但是在 Kubernetes 环境下,Prometheus 已经大行其道,再重复造轮子意义不大,所以 Nightingale 的做法是可以和 Prometheus 做良好整合,打造一个更完备的方案。当下的架构,可以把 Prometheus 作为一个时序库,作为 Nightingale 的一个数据源,如果不使用 Prometheus 也没问题,比如使用 VictoriaMetrics 作为时序库,也是很多公司的选择。
采集层面,Nightingale支持多种采集器,比如 Telegraf、Datadog-Agent、Grafana-Agent、Prometheus Exporters、Categraf 等。同时,Nightingale 也实现了 Prometheus 的 remote write 协议接口,可以作为 Prometheus 的 backend,即:可以把 Prometheus 作为一个采集器,采集数据推给 Nightingale,新版本的 Prometheus 支持 agent mode,是一个挺好的落地方式。
Nightingale的优点:

参考

龙渊秦五专栏连载:《说透运维监控系统》

上一篇下一篇

猜你喜欢

热点阅读