如果大家对时序指标存储方案有些了解,大概率听过 VictoriaMetrics。VictoriaMetrics 号称 Prometheus 的升级版,在性能和成本方面确实做得不错。如果是夜莺新用户,我通常推荐直接使用 VictoriaMetrics 作为存储。
前几天 Victoria 发布了 VictoriaLogs,声称比 Elasticsearch 大幅节省成本,比 Loki 快,比 ClickHouse 易用。这个牛吹得很大,未来是否能独霸天下还不好说。本文翻译整理 VictoriaLogs 官方文档中与其他日志存储的对比,先看看 VictoriaLogs 凭什么这么说。
核心摘要
- VictoriaLogs 面向日志场景设计,和 Elasticsearch/OpenSearch 这类通用全文搜索数据库的出发点不同。
- 相比 Elasticsearch,VictoriaLogs 强调更低 RAM 使用、更少磁盘占用、更简单的索引设置,以及单查询选择更多匹配日志行的能力。
- 相比 Grafana Loki,VictoriaLogs 强调支持高基数字段、自动索引所有摄取字段,并提供 LogSQL 查询语言。
- 相比 ClickHouse,VictoriaLogs 不要求预先设计固定日志字段 Schema,更适合字段集合经常变化的日志场景。
- VictoriaLogs 的核心实现思路是把字段值存入不同数据块,结合压缩、布隆过滤器、log stream 分组和时间戳稀疏索引提升查询效率。
VictoriaLogs 和 Elasticsearch/OpenSearch 的区别
Elasticsearch、OpenSearch 和 VictoriaLogs 都允许摄取结构化、非结构化日志,并对日志执行快速全文搜索。但 Elasticsearch 和 OpenSearch 本质上是通用数据库,目标是对大量文档进行快速全文搜索,并非专门针对日志场景优化。
在日志场景下,这会带来几个常见问题:
- RAM 使用率高。
- 磁盘空间使用率高。
- 索引设置很重要,但调优不太好搞。
- 无法在单个查询中选择超过 10K 的匹配日志行。
VictoriaLogs 专门针对日志进行了优化,因此强调以下能力:
- 易于设置和操作。无需为了不同日志类型创建各种索引,也无需反复调参数,只要在合适的硬件上运行 VictoriaLogs,它就会自动提供合适的性能表现。
- 对于相同工作负载,RAM 使用量比 Elasticsearch 低 30 倍。
- 对于相同数量的存储日志,磁盘空间使用量比 Elasticsearch 少 15 倍。
- 能够在单个节点上处理数百 TB 日志。
- 提供针对典型日志分析任务优化的查询语言 LogSQL。
- 开箱即用地对所有日志字段进行快速全文搜索。
- 与传统日志分析命令行工具良好集成。
这里要注意,VictoriaLogs 的对比前提是“日志场景”。如果你需要的是通用文档搜索、复杂文档建模或已有 Elasticsearch 生态能力,选型时仍然要回到具体业务需求。
VictoriaLogs 和 Grafana Loki 的区别
Grafana Loki 和 VictoriaLogs 都是为日志管理和处理设计的,两个系统都支持 log stream 概念。
VictoriaLogs 与 Grafana Loki 的主要区别包括:
- Grafana Loki 不支持高基数日志字段,也就是不适合把
user_id、trace_id、ip这类唯一值很多的字段作为标签。高基数字段进入 Loki 后,可能消耗大量 RAM 并拖慢系统。相关说明可以参考 Grafana Loki 的最佳实践文档。VictoriaLogs 支持高基数日志字段,会自动索引所有摄取的日志字段,并允许对任意字段执行快速全文搜索。 - Grafana Loki 提供 LogQL。原文认为 LogQL 对典型日志分析任务不够方便。VictoriaLogs 提供面向典型日志分析任务的 LogSQL。
- VictoriaLogs 声称执行典型全文查询的速度比 Grafana Loki 快 1000 倍。
- 对于相同数量的日志,VictoriaLogs 需要的存储空间比 Grafana Loki 更少。
- VictoriaLogs 比 Grafana Loki 更容易设置和操作。

恰饭时刻:Flashduty 是一款告警事件 OnCall 中心的产品。可以对接 Zabbix、Prometheus、Open-Falcon、Nightingale、Influx、Grafana、蓝鲸、各类云监控,把告警事件统一汇聚到一个中心,做告警聚合收敛降噪、排班认领协同。适合对稳定性有诉求的团队以及同时使用了多个监控系统的团队,欢迎体验和试用。
- 产品介绍地址:https://www.flashduty.com
- 产品注册体验:https://console.flashcat.cloud/
VictoriaLogs 和 ClickHouse 的区别
ClickHouse 是一个很快、很高效的分析数据库,也可以用于日志存储、日志分析和日志处理。VictoriaLogs 则专为日志设计,并使用了与 ClickHouse 类似的设计思想来实现高性能。
二者的关键区别在于 Schema 和使用复杂度:
- 如果你事先知道日志字段集合,ClickHouse 对日志很有用。你可以创建一张表,为每个日志字段建一列,从而实现很高的查询性能。
- 如果日志字段集合事先未知,或者字段可能随时变化,ClickHouse 依然可以使用,但效率会受到数据库 Schema 设计影响。ClickHouse 的效率很大程度取决于 Schema 是否针对特定工作负载做了优化。
- VictoriaLogs 可以开箱即用地处理结构化、非结构化和混合日志。它可以适配不同日志源中不断变化的字段集合。
- ClickHouse 的 SQL 方言适合复杂分析查询。VictoriaLogs 则提供针对日志分析优化的全文搜索和 LogSQL。对典型日志分析任务来说,LogSQL 通常更容易使用;但某些复杂分析仍可能需要 SQL 能力。
- VictoriaLogs 开箱支持业内常用日志采集中转器。ClickHouse 通常需要中间应用把日志转换为特定数据库 Schema 的 INSERT SQL 语句,这会增加系统复杂度和维护成本。
VictoriaLogs 是如何工作的
VictoriaLogs 接收 JSON 条目形式的日志,然后把每个字段值存储到不同的数据块中。例如,多条日志里同一字段的值会存入同一个数据块。这样做的好处是,查询时只需要读取相关字段的数据块。
数据块在保存到持久存储之前会被压缩。当查询受磁盘读取 IO 带宽限制时,压缩既能节省磁盘空间,也能提升查询性能。较小的数据块会在后台合并为较大的块;如果数据块超过大小限制,也会被拆分成多个较小的块。
查询期间,VictoriaLogs 以原子方式处理每个数据块。如果某个数据块至少包含一个需要处理的值,就会立即解包并读取整个数据块。查询会在所有可用 CPU 核心上并行处理数据块,因此查询性能可以随 CPU 核心数量扩展。
该架构的灵感来自 ClickHouse 架构。
除此之外,VictoriaLogs 还采用了这些优化:
- 使用布隆过滤器跳过不包含给定单词或短语的块。
- 对不同数据类型的字段使用自定义编码和压缩。例如,把 IP 地址编码为 4 字节元组。自定义字段编码可以减少磁盘数据大小并提高查询性能。
- 在物理上把同一个 log stream 的日志分组到彼此接近的位置。这可以提高压缩率,减少磁盘空间使用;使用流过滤器时,也能通过跳过不需要的流数据块来提升查询性能。
- 维护日志时间戳的稀疏索引,从而在使用时间过滤器时提升查询性能。
FAQ
VictoriaLogs 适合替代 Elasticsearch 吗?
如果你的主要场景是日志存储、日志全文搜索和日志分析,VictoriaLogs 的定位就是针对 Elasticsearch 在日志场景中的成本、资源消耗和索引复杂度问题做优化。但如果你的 Elasticsearch 承载的是通用搜索、复杂文档建模或大量生态插件能力,就需要单独评估。
VictoriaLogs 和 Loki 最大的差异是什么?
原文强调的最大差异是高基数字段处理。Loki 不建议把 user_id、trace_id、ip 等高基数字段作为标签,而 VictoriaLogs 支持高基数日志字段,并自动索引所有摄取字段。
VictoriaLogs 为什么不要求像 ClickHouse 那样先设计 Schema?
VictoriaLogs 面向日志场景,日志字段经常随来源、应用版本和采集方式变化。它接收 JSON 日志并按字段值组织数据块,因此更适合字段集合不固定的日志数据。ClickHouse 也能做日志分析,但高性能通常依赖提前设计适合工作负载的表结构。
总结
VictoriaLogs 的核心卖点不是“又一个日志库”,而是把日志这个特定场景从通用搜索、通用分析数据库里拆出来重新优化。它对 Elasticsearch/OpenSearch、Grafana Loki、ClickHouse 的挑战,主要集中在资源消耗、字段索引、查询语言、Schema 维护和运维复杂度上。
不过,选型不能只看宣传数字。日志系统最终要回到数据规模、查询模式、字段变化频率、已有生态和团队运维能力。如果你的痛点正好是 Elasticsearch 成本高、Loki 高基数字段不好处理、ClickHouse Schema 维护复杂,VictoriaLogs 值得重点测试。
扩展阅读:
