Thanos 和 VictoriaMetrics 之间的深入比较:性能和差异

admin 2024年1月26日06:55:16评论10 views字数 4765阅读15分53秒阅读模式

本文对 Thanos 和 VictoriaMetrics 进行了比较,讨论了它们是什么、它们的架构组件以及它们的差异。Thanos 和 VictoriaMetrics 之间的深入比较:性能和差异

Thanos是什么?

Thanos 是一个开源项目,是为 Prometheus 构建的扩展,可解决与长期存储和高可用性相关的一些挑战。

Thanos 提供了具有扩展存储功能的高度可用的 Prometheus 设置,使组织能够高效地存储和查询历史数据。为了实现这一目标,它引入了额外的组件,例如 Thanos Sidecar 和 Thanos Store,它们增强了 Prometheus 部署的可扩展性和耐用性。Thanos 由多个组件组成,包括 Thanos Sidecar、Thanos Query、Thanos Store 和 Thanos Compact,它们共同创建一个分布式、容错且可扩展的时间序列数据库。

通过利用分布式架构并与 Amazon S3 或 Google Cloud Storage 等对象存储系统集成,它可以实现无缝的水平可扩展性。Thanos 支持跨多个 Prometheus 实例的联合查询,使其成为处理大量时间序列数据的理想选择。

Thanos组件

  • Thanos Sidecar:充当 Prometheus 实例的 sidecar 组件代理,通过将数据推送到对象存储并促进跨多个 Prometheus 服务器的全局查询联合来实现长期存储。
  • Thanos Querier:作为 Thanos 架构中的中央查询引擎,允许用户跨多个 Prometheus 实例执行查询,提供时间序列数据的统一视图。
  • Thanos Store:将时间序列数据存储在对象存储中,例如 Amazon S3 或 Google Cloud Storage,并为 Thanos Querier 提供高效的读取访问。它处理重复数据删除和压缩,优化存储利用率。
  • Thanos Compact:对对象存储中的时间序列数据进行压缩,通过删除冗余数据块和块来减少存储开销并提高查询性能。
  • Thanos Ruler:为 Thanos 生态系统提供基于规则的扩展警报功能,允许用户跨分布式 Prometheus 实例定义和评估复杂的警报规则。
  • Thanos Receiver:提供一个端点,用于从远程 Prometheus 实例获取数据并将其存储在对象存储中。它可以高效、可靠地获取数据以进行长期存储和分析。
  • Thanos Compactor:通过合并和下采样数据块来管理压缩过程,提高查询效率,并减少长期存储层的存储需求。
  • Thanos Bucket:允许以时间分区的方式存储数据,通过根据时间范围将数据组织到可管理的存储桶中来提高查询性能。
  • Thanos 查询前端:作为面向用户的组件,接收查询请求并将其分发到 Thanos Querier 实例。它提供了一个基于 Web 的界面,用于执行查询和可视化结果。
  • Thanos Sidecar Downsample:为 Thanos Sidecar 提供下采样功能,降低存储时间序列数据的粒度,以提高较长时间范围的查询性能。

这些组件共同构成了 Thanos 架构,为 Prometheus 部署提供增强的可扩展性、容错能力、长期存储和全局查询功能。

什么是VictoriaMetrics

而VictoriaMetrics则是一个高性能、高性价比、可扩展的时间序列数据库,可以作为Prometheus的长期远程存储。它拥有卓越的数据压缩和高速数据摄取能力,使其成为大规模监控任务的有吸引力的替代方案。VictoriaMetrics源代码可以在以下位置找到: https: //github.com/VictoriaMetrics/VictoriaMetrics

这些项目的 GitHub 存储库包含所有源代码、文档、问题、拉取请求和文档。如果您想更多地了解这些系统的工作原理、想为项目做出贡献或者需要帮助解决问题,那么这些都是开始使用 Docker 的绝佳资源和教程。

VictoriaMetrics 组件

Victoria Metrics 在保持更简单的架构的同时,还包括几个核心组件:

  • VictoriaMetrics 单节点:这是 VictoriaMetrics 的基本构建块。它包括时间序列数据库和用于摄取和查询数据的HTTP服务器。
  • VictoriaMetrics Cluster:专为大规模部署而设计,VictoriaMetrics 的集群版本包括附加组件,例如分别用于查询执行、数据摄取和长期存储的 VMSelect、VMInsert 和 VMStorage 节点。
  • vmagent:Vmagent 是一个微小但功能强大的数据抓取器,可以从各种来源提取数据并将其发送到 VictoriaMetrics 或任何其他支持 InfluxDB 或 Prometheus 远程写入协议的远程存储。
  • vmalert:它根据 VictoriaMetrics 或任何其他兼容的 TSDB 评估警报和记录规则。
  • vmctl:此 CLI 工具将数据从不同的 TSDB 迁移到 VictoriaMetrics。
  • vmstorage:VictoriaMetrics 的存储后端。
  • vmui:VictoriaMetrics 开箱即用的 UI 层。

Thanos和VictoriaMetrics之间的差异

Thanos 和 VictoriaMetrics 是大规模运行的监控系统,旨在为时间序列数据提供长期存储解决方案,特别是在可观测性领域使用 Prometheus 的环境中。然而,两者之间存在几个关键区别。

起源与目的

Thanos:作为一个项目而诞生,旨在解决 Prometheus 中多集群监控和长期存储的需求,而无需求助于完全独立的监控系统。它通过全局查询视图、无限保留和下采样扩展了 Prometheus。

VictoriaMetrics:最初是作为 Prometheus 的替代长期远程存储 TSDB。

架构

Thanos:它基于模块化系统,您可以在其中部署单独的组件,例如 Sidecar、Store Gateway、Querier 等。每个组件都执行特定的功能。该系统可能有点复杂,但提供了灵活性。

VictoriaMetrics:它使用更简单的单节点和集群版本。VictoriaMetrics 强调简单性和易于部署。

存储效率

Thanos:使用 TSDB 格式,与 Prometheus 相同。虽然它确实提供下采样以节省空间,但在某些条件下它可能不如 VictoriaMetrics 那样具有存储效率。

VictoriaMetrics:声称由于其自定义的存储格式和压缩算法而具有更好的存储效率。

查询语言

Thanos:使用 PromQL,与 Prometheus 和 Prometheus API 相同的查询语言。

VictoriaMetrics:引入了MetricsQL,受到PromQL的启发,并且向后兼容PromQL。

高可用性和可靠性

Thanos:通过依赖对象存储(如AWS S3、GCS、Azure等)来存储长期数据来实现高可用性,并为其其他组件提供复制功能。这种设计选择带来了一些备份优势。

VictoriaMetrics:提供集群版本以实现高可用性和冗余,因为它将数据存储在本地存储上。

向下采样和保留机制

Thanos:具有明确的向下采样功能,允许您为原始、5 分钟和 1 小时下采样数据定义不同的保留期。

VictoriaMetrics还提供向下采样和可定制的保留策略,但细节可能有所不同。

一体化

Thanos:旨在与 Prometheus 和 Prometheus 生态系统紧密集成,并且可以与 Grafana 集成以实现可视化仪表板。

VictoriaMetrics:虽然它提供与 Prometheus 生态系统的兼容性,但 VictoriaMetrics 也可以用作 TSDB 的直接替代品。它与 Grafana 集成,也可以与 Thanos 或 Cortex 一起使用。

性能表现

性能可能因用例、硬件、数据量、预期高基数、延迟和查询复杂性而异。一些用户发现 VictoriaMetrics 速度更快、资源效率更高、CPU 使用率和磁盘空间更好,而其他用户可能更喜欢 Thanos 的模块化架构来进行特定设置。这两个 TSDB 都承诺能够轻松处理大量工作负载。VictoriaMetrics 也发布了一个性能测试基准https://victoriametrics.com/blog/benchmark-100m/

社区与发展

Thanos:拥有一个强大而活跃的社区,来自许多组织的贡献,包括 Slack 社区频道。这也是 CNCF 的孵化项目。

VictoriaMetrics:它在 Slack 和 Telegram 上也有活跃的社区,该项目在设计原则上强调性能和简单性。

与 Kubernetes 集成

鉴于 Kubernetes 是需要大规模监控解决方案的主要环境之一,Thanos 和 VictoriaMetrics 都旨在与 Kubernetes 无缝协作。以下是两者如何与 Kubernetes 集成的详细说明:

Thanos 和 Kubernetes

  • 作为有状态/无状态集部署:根据其性质,Thanos 组件可以部署为 StatefulSet(对于需要持久存储的组件)或 Deployment(对于无状态组件)。
  • Thanos Sidecar:对于 Kubernetes 集群中运行的每个 Prometheus 实例,您通常会在其旁边部署一个 Thanos Sidecar(在同一个 Pod 中)。这个 sidecar 负责将 Prometheus 数据上传到对象存储,是 Thanos Querier 的数据源。
  • 服务发现:Thanos 组件可以使用 Kubernetes 服务发现来查找彼此。例如,Thanos Querier 可以发现所有 Sidecars 和 Thanos Stores。
  • 使用 ConfigMap 进行配置:Thanos 组件的配置可以存储在 Kubernetes ConfigMap 中,并根据需要安装到 pod 中。
  • 存储:Thanos 使用对象存储(如 Amazon S3、Google Cloud Storage 等)进行长期存储。Kubernetes 中的持久卷通常用于短期存储。
  • Helm Charts:Thanos 有可用的 Helm 图表,这使得在 Kubernetes 上部署和管理其组件变得更加简单。

VictoriaMetrics 和 Kubernetes

  • 作为 StatefulSet 部署:当需要持久存储时,VictoriaMetrics,尤其是单节点版本,可以在 Kubernetes 中部署为 StatefulSet。
  • vmagent:VictoriaMetrics 提供了一个名为的组件vmagent,旨在与 Prometheus 一起部署或代替 Prometheus。它从服务端点获取数据并将其发送到 VictoriaMetrics。
  • 服务发现:与 Prometheus 一样,vmagent您可以使用 Kubernetes 服务发现来查找要从中获取指标的服务。
  • 使用 ConfigMap 进行配置:配置(例如抓取配置)可以存储在 Kubernetes ConfigMap 中。
  • 存储:VictoriaMetrics 将数据存储在磁盘上,并可以利用 Kubernetes 中的持久卷。对于 AWS,您还可以使用 EBS 卷。VictoriaMetrics 可以为其集群版本跨多个节点/pod 分发数据。
  • Helm Charts:VictoriaMetrics 提供了 Helm 图表,简化了其在 Kubernetes 上的部署。
  • 垂直 Pod 自动缩放:考虑到其高效的资源使用,VictoriaMetrics 经常建议在 Kubernetes 中使用垂直 Pod 自动缩放。

从本质上讲,Thanos 和 VictoriaMetrics 都是根据云原生原则构建的,并与 Kubernetes 很好地集成。选择一种通常取决于特定功能、操作偏好或现有基础设施。

原创不易,随手关注或者”在看“,诚挚感谢!

原文始发于微信公众号(运维帮):Thanos 和 VictoriaMetrics 之间的深入比较:性能和差异

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月26日06:55:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Thanos 和 VictoriaMetrics 之间的深入比较:性能和差异http://cn-sec.com/archives/2430835.html

发表评论

匿名网友 填写信息