searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

主流tsdb特性比较

2023-05-28 19:14:08
290
0

1、背景

随着云原生普及和快速发展,prometheus已经成为服务端监控的事实规范,各家云厂商也都提供了托管式的prometheus服务。开源的prometheus缺少集群化方案,很难直接应用在大规模的监控场景。急需一种需要能够兼容prometheus生态的tsdb产品应对大规模指标监控场景。本文主要横行对比目前主流的tsdb引擎特性及差异


2、横向对比

 

victoriametrics

m3db

thanos

clickhouse

安装部署

简单,只需要部署victoriametrics集群(可单机部署)

较方便,需要部署M3集群、etcd集群,可通过prometheus remote与prometheus集成

较方便,需要部署thanos集群和ceph集群,需要在每个prometheus部署sidecar与thanos集成

较复杂,部署clickhouse实例和协调节点(zookeeper/ckeeper)、需要实现prometheus remote read/write adapt才能和prometheus对接

可用性

较高,无单点。查询、写入、存储分离。

storage节点数据副本能力较差,扩缩容及节点故障时,容易造成数据丢失

大量查询可能会影响数据的写入,可用性高

写入和查询经过sidecar,prometheus性能无法扩展

数据上传有周期限制,prometheus数据损坏则数据会丢失

高

数据实时性

高

高

较低,非实时数据存储在ceph,查询时速度较慢

高

升级、扩展

较方便,query、insert组件可以做HA

方便、灵活

不方便

query组件可以做HA,其他组件单实例,store组件升级不便

 较复杂

查询

响应快

响应较快

响应较慢

响应较慢

多租户

支持 通过account id

不支持

支持 通过prometheus external label标识

需要适配

运维成本

低

需要维护m3db、etcd

需要维护thanos、ceph、prometheus

 较高

HA

vselect、vinsert需要部署负载均衡组件

支持

query支持

 支持

数据备份

vmutil支持

支持

ceph支持

 支持

数据压缩

支持(2byte/point)

支持

支持

 支持

降精度

开源版本不支持,query支持在查询时增加时间范围实现降精度效果

支持(namespace)

支持

GraphiteMergeTree支持有限

社区活跃度

国内使用不多,社区较活跃

不太活跃

活跃

 活跃,用来做prometheus remote storage较少

性能

vminsert 对资源要求较少

vmselect取决于查询qps和复杂度对mem/network要求较高

vmstorage对cpu/mem/disk要求高

m3db对dish/mem要求高

coordinator对mem/cpu要求高

sidecar对cpu/disk/mem/network要求一般

store对cpu/mem要求高,对disk磁盘要求低

 clickhouse对cpu/mem/disk要求高

promql

支持,有兼容性问题,官方兼容性测试用例通过率70%,常规使用无问题

支持

支持

 不支持,需要开发适配

分布式能力(数据分片)

不完善,不支持分布式协议,采用hash算法实现数据分布,shared-nothing

完善(基于hash算法做数据分布,数据节点存储的虚拟分片保存在etcd)

不完善

 教完善

数据副本

支持,多副本,写入端写入多份数据,查询端查询多份数据后去重

支持,副本信息存储在etcd

  支持

节点扩缩容

vinset,vselect节点无状态,vstroage存储节点,如果单副本存在,无法做到无损

多副本部署,无损扩缩容

  支持

3、总结

prometheus

prometheus由前Google 员工,受Google 内部Borgman 的启发,2012年开始的开源项目,2018年进入毕业状态。是一个集数据采集、数据存储、异常检测、可视化为一体的全套监控解决方案,具有功能丰富、易用性高等特点。

VictoriaMetrics

VictoriaMetrics 是一种快速、经济高效且可扩展的监控解决方案和时间序列数据库。支持单机和集群版本,单机版本支持超100万/s数据点的摄入,集群版本支持性能和容量的水平扩展,可以作为prometheus的远程存储,也可以直接替换prometheus使用。VictoriaMetrics的架构设计更加注重简单可靠和单机版的性能优化,而在分布式能力和高级功能方面相对较弱。downsample等功能目前只有企业版本支持,而数据的自动再平衡也需要用户自己实现。VictoriaMetrics是一个非常优秀的时序数据存储和查询引擎,适用于大多数中小型应用场景。

M3DB

M3DB架构设计上更高级,实现难度也更大。M3DB的设计目标是为了解决大规模时序数据存储和查询的问题,它的架构设计包含了多个组件,如存储节点、协调节点、查询节点等,同时还支持自动扩缩容和数据自动平衡等高级运维功能。M3DB的可靠性也更难保证,由于其架构设计较为复杂,各个组件之间的依赖关系也比较复杂,因此在运维和维护方面需要付出更多的精力和成本。同时,M3DB的学习曲线也相对较陡峭,需要花费一定的时间和精力去掌握其使用方法和技术细节。M3DB在国内的社区活跃度也较低。

Thanos

Thanos 是一个开源的分布式系统的监控和告警系统,它可以整合多个 Prometheus 服务器的数据,并提供查询和告警的功能。Thanos 的主要目标是解决 Prometheus 在长期存储和全局查询方面的不足之处。通过 Thanos,用户可以将 Prometheus 数据存储在对象存储中,从而允许用户保存更长时间的历史数据。同时,Thanos 可以跨多个数据中心查询 Prometheus 数据,从而方便用户进行全局监控和分析。Thanos 还支持水平扩展,通过添加更多的 Prometheus 服务器来扩展其能力,从而支持更大规模的监控。如果您需要进行大规模的分布式系统监控,可以考虑使用 Thanos。

Thanos需要引入额外的组件,同样也会给架构带来复杂性,配置也较复杂度,Thanos 的查询性能可能会受到多个 Prometheus 服务器的影响,从而导致一些性能损失。
 

0条评论
0 / 1000
齐****军
13文章数
0粉丝数
齐****军
13 文章 | 0 粉丝
原创

主流tsdb特性比较

2023-05-28 19:14:08
290
0

1、背景

随着云原生普及和快速发展,prometheus已经成为服务端监控的事实规范,各家云厂商也都提供了托管式的prometheus服务。开源的prometheus缺少集群化方案,很难直接应用在大规模的监控场景。急需一种需要能够兼容prometheus生态的tsdb产品应对大规模指标监控场景。本文主要横行对比目前主流的tsdb引擎特性及差异


2、横向对比

 

victoriametrics

m3db

thanos

clickhouse

安装部署

简单,只需要部署victoriametrics集群(可单机部署)

较方便,需要部署M3集群、etcd集群,可通过prometheus remote与prometheus集成

较方便,需要部署thanos集群和ceph集群,需要在每个prometheus部署sidecar与thanos集成

较复杂,部署clickhouse实例和协调节点(zookeeper/ckeeper)、需要实现prometheus remote read/write adapt才能和prometheus对接

可用性

较高,无单点。查询、写入、存储分离。

storage节点数据副本能力较差,扩缩容及节点故障时,容易造成数据丢失

大量查询可能会影响数据的写入,可用性高

写入和查询经过sidecar,prometheus性能无法扩展

数据上传有周期限制,prometheus数据损坏则数据会丢失

高

数据实时性

高

高

较低,非实时数据存储在ceph,查询时速度较慢

高

升级、扩展

较方便,query、insert组件可以做HA

方便、灵活

不方便

query组件可以做HA,其他组件单实例,store组件升级不便

 较复杂

查询

响应快

响应较快

响应较慢

响应较慢

多租户

支持 通过account id

不支持

支持 通过prometheus external label标识

需要适配

运维成本

低

需要维护m3db、etcd

需要维护thanos、ceph、prometheus

 较高

HA

vselect、vinsert需要部署负载均衡组件

支持

query支持

 支持

数据备份

vmutil支持

支持

ceph支持

 支持

数据压缩

支持(2byte/point)

支持

支持

 支持

降精度

开源版本不支持,query支持在查询时增加时间范围实现降精度效果

支持(namespace)

支持

GraphiteMergeTree支持有限

社区活跃度

国内使用不多,社区较活跃

不太活跃

活跃

 活跃,用来做prometheus remote storage较少

性能

vminsert 对资源要求较少

vmselect取决于查询qps和复杂度对mem/network要求较高

vmstorage对cpu/mem/disk要求高

m3db对dish/mem要求高

coordinator对mem/cpu要求高

sidecar对cpu/disk/mem/network要求一般

store对cpu/mem要求高,对disk磁盘要求低

 clickhouse对cpu/mem/disk要求高

promql

支持,有兼容性问题,官方兼容性测试用例通过率70%,常规使用无问题

支持

支持

 不支持,需要开发适配

分布式能力(数据分片)

不完善,不支持分布式协议,采用hash算法实现数据分布,shared-nothing

完善(基于hash算法做数据分布,数据节点存储的虚拟分片保存在etcd)

不完善

 教完善

数据副本

支持,多副本,写入端写入多份数据,查询端查询多份数据后去重

支持,副本信息存储在etcd

  支持

节点扩缩容

vinset,vselect节点无状态,vstroage存储节点,如果单副本存在,无法做到无损

多副本部署,无损扩缩容

  支持

3、总结

prometheus

prometheus由前Google 员工,受Google 内部Borgman 的启发,2012年开始的开源项目,2018年进入毕业状态。是一个集数据采集、数据存储、异常检测、可视化为一体的全套监控解决方案,具有功能丰富、易用性高等特点。

VictoriaMetrics

VictoriaMetrics 是一种快速、经济高效且可扩展的监控解决方案和时间序列数据库。支持单机和集群版本,单机版本支持超100万/s数据点的摄入,集群版本支持性能和容量的水平扩展,可以作为prometheus的远程存储,也可以直接替换prometheus使用。VictoriaMetrics的架构设计更加注重简单可靠和单机版的性能优化,而在分布式能力和高级功能方面相对较弱。downsample等功能目前只有企业版本支持,而数据的自动再平衡也需要用户自己实现。VictoriaMetrics是一个非常优秀的时序数据存储和查询引擎,适用于大多数中小型应用场景。

M3DB

M3DB架构设计上更高级,实现难度也更大。M3DB的设计目标是为了解决大规模时序数据存储和查询的问题,它的架构设计包含了多个组件,如存储节点、协调节点、查询节点等,同时还支持自动扩缩容和数据自动平衡等高级运维功能。M3DB的可靠性也更难保证,由于其架构设计较为复杂,各个组件之间的依赖关系也比较复杂,因此在运维和维护方面需要付出更多的精力和成本。同时,M3DB的学习曲线也相对较陡峭,需要花费一定的时间和精力去掌握其使用方法和技术细节。M3DB在国内的社区活跃度也较低。

Thanos

Thanos 是一个开源的分布式系统的监控和告警系统,它可以整合多个 Prometheus 服务器的数据,并提供查询和告警的功能。Thanos 的主要目标是解决 Prometheus 在长期存储和全局查询方面的不足之处。通过 Thanos,用户可以将 Prometheus 数据存储在对象存储中,从而允许用户保存更长时间的历史数据。同时,Thanos 可以跨多个数据中心查询 Prometheus 数据,从而方便用户进行全局监控和分析。Thanos 还支持水平扩展,通过添加更多的 Prometheus 服务器来扩展其能力,从而支持更大规模的监控。如果您需要进行大规模的分布式系统监控,可以考虑使用 Thanos。

Thanos需要引入额外的组件,同样也会给架构带来复杂性,配置也较复杂度,Thanos 的查询性能可能会受到多个 Prometheus 服务器的影响,从而导致一些性能损失。
 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0