联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台

  • 背景
  • 作为时序数据库的优势
    • 出色的性能表现
    • 完整的时序数据管理
  • 数据采集能力
    • VictoriaMetrics
    • 观测云
  • 日志及应用链路观测
    • VictoriaMetrics
    • 观测云
  • 数据查询及可视化
    • VictoriaMetrics
    • 观测云
  • 结语

观测云与VictoriaMetrics对比白皮书

观测云与VictoriaMetrics对比白皮书

背景

VictoriaMetrics 是一款开源的时序数据库(Time Series Database, TSDB)工具,最初于 2019 年发布,旨在解决大规模时序数据存储和分析的痛点。时序数据(Time Series Data)是一种特殊的数据类型,它由一系列按时间先后顺序排列的数据点组成,通常用于记录随时间变化的指标或事件。这种数据在很多领域都有广泛应用,例如监控常见的系统采集场景,收集到的服务器、网络设备等的性能指标通常以时序数据方式存在。又比如 IoT 领域,采集各种传感器设备的测量数据也将以时序数据方式进行存储。

对于传统的关系型数据库,受限于数据存储方式,往往难以胜任这种海量、高写入、高查询性能要求的场景。这就催生了新一代时序数据库的出现,而 VictoriaMetrics 就是其中的代表产品之一。

背景

而 VictoriaMetrics 具备怎样的一些技术特点,在可观测性领域的应用中相比于国内领先的工具平台观测云究竟有哪些优劣势,本文尝试从以下几个维度对该问题进行探讨。

作为时序数据库的优势

出色的性能表现

VictoriaMetrics 的核心设计目标之一就是提供出色的性能表现和扩展能力。为此,它采用了多项优化技术:

• 存储引擎优化:VictoriaMetrics 使用自研的存储引擎,采用高度压缩的数据格式,大幅降低了存储空间和I/O开销。同时,它还利用内存缓存、并发读写等机制进一步提升性能。

• 分布式架构:VictoriaMetrics 支持水平扩展,可以通过添加更多节点来增加存储容量和计算能力。分布式架构还能提高可用性,降低单点故障风险。

• 并发优化:VictoriaMetrics 在读写操作、查询处理等环节进行了精 fine-grained 的并发控制,大幅提升了吞吐量和响应速度。

• 查询优化:VictoriaMetrics 的查询 引擎采用了众多优化策略,如索引加速、流式处理、query planning 等,可以高效地处理各种复杂查询。

得益于以上技术优化,VictoriaMetrics 在海量时序数据的存储、查询和计算方面表现出色。它能够轻松处理每秒上百万数据点的写入负载,查询延迟保持在亚秒级。同时,单个 VictoriaMetrics 实例可管理数十TB的数据,分布式集群的扩展能力也非常出色。这些性能指标在时序数据库领域属于领先水平。

完整的时序数据管理

除了出色的时序数据处理性能表现,VictoriaMetrics 还提供了一套完整的时序数据管理解决方案:

• 数据采集:VictoriaMetrics 支持多种时序数据源的接入,如 Prometheus、Graphite、InfluxDB 等,用户可以灵活选择适合自己的数据采集方式。

• 数据存储:VictoriaMetrics 的存储引擎针对时序数据进行了深度优化,提供高效的数据压缩、分片、备份等功能。

• 数据查询:除了强大的 PromQL 支持,VictoriaMetrics 还提供丰富的查询 API,方便用户进行数据分析和可视化。

• 监控报警:VictoriaMetrics 内置了强大的报警引擎,可以根据查询结果触发自定义的报警规则,为用户提供全面的监控服务。

数据采集能力

VictoriaMetrics

由于聚焦于时序数据库本身的一些特性,VictoriaMetrics 自身并不提供数据采集能力,而是依赖较为成熟的监控数据采集生态,实现对目标被测系统的数据收集。例如Prometheus 数据采集器,VictoriaMetrics 完全兼容 Prometheus,可以直接从 Prometheus 服务器采集数据。用户只需要将 VictoriaMetrics 配置为 Prometheus 的 remote_write 目标即可实现对 prom 数据的自动对接。对于惯用 Prometheus 的用户来说,迁移起来非常方便。

再比如 Graphite 对接,VictoriaMetrics 提供了原生的 Graphite 协议支持,可以直接从 Graphite 系统中采集时序数据。用户只需要将 VictoriaMetrics 配置为 Graphite 的存储后端即可,VictoriaMetrics 会自动接收和存储 Graphite 的 metric 数据。这使得 VictoriaMetrics 可以很好地替代 Graphite。

其他还包括 OpenTSDB 协议的支持,可以直接从 OpenTSDB 系统中采集时序数据。商业或开源的数据采集套件,如 Datadog Agent、StatsD 等数据采集器,也支持用户自定义数据格式的接收。

VictoriaMetrics

观测云

观测云提供了统一的数据采集套件 DataKit,仅通过一个探针便可从各种基础设施或技术栈中采集 Metrics、Logs、Traces 等数据,并对这些数据进行结构化处理。内置简便的数据提取、处理引擎 Pipeline,用户可通过正则脚本的开发,提取采集数据中的信息,方便后端的查询与统计。

另外,在生态兼容性方面,观测云也不遑多让。对于 VM 所支持的数据源,观测云均可以通过 DataKit 数据采集器或其他方式进行简单的对接。不论是 Prometheus、InfluxDB、消息队列订阅还是开源数据协议,用户均可通过简单的配置,将这些数据源的数据汇总至观测云,实现全面的数据可观测。

观测云

日志及应用链路观测

VictoriaMetrics

2023 年 VictoriaMetrics 扩展了自身在可观测领域可提供的能力,其中便包括日志的采集和处理能力。VictoriaLogs 便是 VictoriaMetrics 推出的一款专业的日志管理平台,与 VictoriaMetrics 时序数据库相配合,应用于日志存储和分析领域。

VictoriaMetrics

VictoriaLogs 的主要特点包括:

• 统一的日志管理:VictoriaLogs 可以实现对分布式系统中产生的各种日志的统一收集、存储和查询。支持从 Kafka、Fluentd、Logstash 等常见的日志采集系统导入日志数据。

• 强大的查询语言:VictoriaLogs 内置了一种专门的日志查询语言 VQL,基于 SQL 语法进行扩展,用户可以轻松地检索、分析和可视化日志数据。

• 与 VictoriaMetrics 的集成:VictoriaLogs 与 VictoriaMetrics 紧密集成,用户可以将日志数据与时序数据进行关联分析。例如根据错误日志触发告警,或者分析某些指标与日志的相关性。

• 安全和访问控制:VictoriaLogs 提供细粒度的权限管理,支持基于角色的访问控制,保护敏感日志数据的安全性。

在应用性能监测方面,VictoriaMetrics 提供了一定的支持能力,但从官网资料来看,目前仅在 APM 查询和展示方面提供了少量指南,例如用户可以在原生界面 VMUI 的 Trace Analyzer 中进行简单的链路查询和分析。当然,这可能也和 VictoriaMetrics 更偏向于可观测基础设施,即 TSDB 的自身定位有关。因此,在目前阶段如需构建可观测体系,可能还需要增加其他厂商的 APM 工具来补全应用性能监测方面的能力。

VictoriaMetrics

观测云

观测云自研的 GuanceDB 可以良好支持指标和泛日志数据(日志、应用链路、用户访问等)的存储及查询。全面支持 SchemaFree,符合可观测性数据的场景。并且原生支持 JSON 结构,实现更多数据计算和分析。

观测云

另外,GuanceDB 针对查询和写入性能做了大量优化,可同时分析处理千亿以上规模的数据。相比于其他开源或商业版本的文本数据库,实现了更高的数据压缩比,同等数据规模所占存储只需传统方案的 1/4。

观测云

数据查询及可视化

VictoriaMetrics

对于指标数据的查询,VictoriaMetrics 提供 MetricQL 给用户,用于获取指标相关数据的检索及聚合结果。MetricQL 是基于 PromQL 进行增强后的查询语言,支持各种复杂的聚合、计算和数据转换操作,并在查询优化、错误处理等方面相比于 PromQL 进行了深入的改进,使查询性能和可靠性大幅提升。这使得 VictoriaMetrics 可以无缝替代 Prometheus,为用户提供更好的查询体验。 同时,VictoriaMetrics 还支持类 SQL 的查询语言,方便那些更熟悉 SQL 的用户进行数据分析。

在日志查询方面,VictoriaMetrics 提供了 LogsQL。LogsQL 是 VictoriaMetrics 专门为日志数据查询设计的一种域特定语言(Domain-Specific Language, DSL)。它基于 SQL 语法进行了一些扩展和优化。支持使用正则表达式对日志文本内容进行高级搜索和过滤,提供了一定程度的聚合函数,如 count()、avg()、sum() 等,支持按照日志的各种维度进行聚合统计,并支持对日志和指标进行混合查询,构建复杂的数据计算场景。

对于查询数据的可视化应用,VictoriaMetrics 提供的原生界面 VMUI 功能相对较弱,可以进行基本的数据展示。在实践应用中,用户更多使用其他可视化界面,如 Grafana,对数据进行可视化展示以取得更好的数据可视化效果。

VictoriaMetrics

基于以上描述我们可以清楚的了解到,对于数据查询和展示方面 VictoriaMetrics 尚有欠缺。首先数据的查询需要学习两到三种不同的查询语言,对于有 Prometheus 使用基础的用户其学习成本还可控。但对初次接触可观测体系的用户,就会造成一些学习和使用上的不便。另外,对于可观测数据的可视化方面功能也比较弱,在支撑复杂的数据可视化应用需求上还需要一定的迭代和演进。因此,在实际的可观测场景中,VictoriaMetrics 更多以 TSDB 组件的身份,配合周边工具组合来提供完整的可观测能力。

观测云

而观测云则比较好的解决了上述问题,通过提供统一的数据查询语言 DQL,并支持了 PromQL,用户可以使用一套语法体系,对不同维度的数据——包括指标、日志、应用链路、用户访问数据——进行检索和查询。数据可以很方便的基于观测云 GuanceDB 的数据标签治理结果进行关联分析。

所有的数据应用和消费场景,都可以在观测云可视化界面 Guance Studio 上,通过拖拽方式构建自定义仪表板,或者直接使用原生界面预置的数据分析功能,例如日志查看器或应用性能监测概览等界面,对被观测对象的运行状态进行分析,及时发现可能存在的问题,保障系统运行的健康及稳定。

观测云

结语

经过数年的发展,VictoriaMetrics 凭借其出色的性能、可靠性和易用性已经成为可观测领域的一支重要力量,对时序数据的良好支持、高性能/高吞吐的数据读写能力和丰富的生态兼容性都是 VictoriaMetrics 具备亮点的几个方面。但在可观测数据支持的完整度上,尚缺乏对应用链路/用户访问数据的深度支持。其数据查询相对复杂,自身可视化能力较弱,依赖第三方可视化工具。在实际应用场景中,VictoriaMetrics 还是更多以 TSDB 的身份,配合其他工具共同完成可观测工具体系的构建,再加上技术支持文档也比较匮乏,用户使用起来会有一定的学习成本。相比于观测云还不算是非常完善的可观测工具,对于具有复杂需求的可观测场景,观测云应对起来还是要更得心应手一些。

即刻开启您的监控可观测之旅

立即开始