简介
VictoriaLogs 是一款由 VictoriaMetrics 开发的开源高性能日志数据库,专门用于大规模日志的存储与检索。该文档详细介绍了其核心优势,包括相比 Elasticsearch 等传统方案可节省高达 30倍的内存 和 15倍的磁盘空间。系统支持通过 LogsQL 进行复杂的全文本搜索与数据分析,并提供单机版、集群版及 云端托管 等多种部署模式。文中涵盖了从 数据采集、保留政策设置 到 高可用架构 的完整技术指南,并特别强调了其针对高基数数据的优化。此外,文档还提供了关于 多租户管理、安全加密 以及如何与 Grafana 集成的实用说明。通过一系列 性能基准测试 和故障排除指南,该资源为构建高效、低成本的监控系统提供了全方位的技术支持。
victorialogs 相较于 loki 的优势
根据您提供的来源,VictoriaLogs 相较于 Grafana Loki 具有多方面的显著优势,主要集中在资源效率、运维简便性以及对复杂数据的处理能力上。以下是详细的优势对比:
- 极高的资源效率:相比于 Loki,VictoriaLogs 更加节省资源。根据来源,它使用的 RAM 减少了多达 30 倍,磁盘空间减少了多达 15 倍。这种高效性使其不仅能在拥有数百个 CPU 核心和数 TB 内存的服务器上运行,甚至能在树莓派等资源受限的设备上平稳运行。
- 运维简单,零配置启动:VictoriaLogs 的安装和操作比 Loki 容易得多。它是一个单一的、零配置的可执行文件,无需复杂的调优,因为它会根据可用的 CPU 和 RAM 资源自动调整默认设置,。
- 原生支持高基数(High Cardinality)数据:Loki 在处理高基数标签(如
trace_id、user_id和ip)时往往面临挑战,而 VictoriaLogs 原生支持高基数日志字段。这意味着用户可以直接索引和查询具有大量唯一值的字段,而无需担心系统性能下降。 - 优化的大宽表(Wide Events)处理:VictoriaLogs 针对拥有数百个字段的日志(即宽事件)进行了专门优化。
- 线性的扩展能力:其容量和性能随可用资源(CPU、RAM、磁盘 IO、磁盘空间)线性扩展。在集群模式下,它可以横向扩展到数百个节点。
- 强大的查询语言 (LogsQL):VictoriaLogs 提供的 LogsQL 支持快速的全文本搜索、高级分析以及在查询时的实时数据提取和转换。此外,来源中还提到了如何将 Loki 查询转换为 VictoriaLogs 查询的指南,方便用户迁移。
更灵活的数据管理:
- 保留策略:支持基于时间的保留(默认 7 天,最高可达 100 年)以及基于磁盘空间使用量(绝对值或百分比)的自动删除策略,,。
- 回填与乱序:支持乱序日志摄取(回填),这在处理延迟到达的日志时非常有用,。
- 兼容性与集成:VictoriaLogs 可以接收来自多种流行日志收集器的日志(包括 Loki 常用的 Promtail),并提供 Grafana 插件用于构建仪表板,。
总结来说,如果说 Loki 像是一套需要精细调参和庞大基础设施支撑的复杂滤水系统,那么 VictoriaLogs 就更像是一个高效、自适应且即插即用的精密过滤器,既能节省空间,又能轻松处理最细微(高基数)的杂质。
vmui
VictoriaLogs 提供了一个内置的 Web UI,旨在为用户提供直观的日志探索和分析体验。以下是根据来源总结的功能、使用方法及核心性能指标:
UI 功能介绍
日志查询与分析:支持使用 LogsQL(一种简单且强大的查询语言)进行快速的全文本搜索、高级分析以及在查询时进行数据提取和转换。
• 实时查看 (Live Tailing):UI 支持对新摄入的日志进行实时跟踪查看。
• 上下文检索 (Surrounding Logs):允许用户选择某条特定日志,并查看其前后相邻的日志,这对于故障排查非常关键。
• 多维探索:针对高基数(High Cardinality)数据(如 trace_id、user_id 和 ip)进行了优化,用户可以轻松检索这些具有海量唯一值的字段。
• 宽事件处理:专门针对拥有数百个字段的复杂日志(Wide Events)进行了 UI 展示和查询优化。
使用方法
• 零配置启动:VictoriaLogs 是一个单一的可执行文件。在启动后,用户通常可以通过浏览器访问其默认端口(如 http://localhost:9428)直接进入 Web UI。
• 交互式查询:用户直接在 UI 界面输入 LogsQL 语句即可获取结果。对于想要提前体验的用户,官方还提供了一个 Demo 演练场(Demo Playground),无需自行部署即可在线测试 UI 功能和 LogsQL 语法。
• 集成与互补:虽然自带 UI,但它也提供 Grafana 插件,允许用户在 Grafana 中构建更复杂的仪表板;同时它也能与传统的 Unix 工具(如 grep、jq)无缝配合使用。
性能指标
VictoriaLogs 在性能设计上具有极高的效率和扩展性:
• 资源消耗极低:相较于 Loki 或 Elasticsearch,其 RAM 使用量减少了多达 30 倍,磁盘空间占用减少了多达 15 倍。
• 高压缩率:通常能对日志进行 10 倍或更高倍率的压缩,这意味着 100GiB 的磁盘空间可以存储超过 1TiB 的原始日志。
• 线性扩展:其容量和性能会随 CPU、内存、磁盘 IO 和磁盘空间的增加而线性扩展。它可以运行在树莓派上,也能横向扩展到拥有数百个节点的集群。
• 查询延迟:新摄入的日志会先进入内存缓冲区,通常在 1 秒内 即可变为可检索状态。
• 数据保留:支持基于时间(最高 100 年)或基于磁盘空间百分比/绝对值的自动留存策略。
如果把传统的日志系统比作一台笨重且费油的大型货车,VictoriaLogs 的 UI 和底层引擎就像是一辆高度自动化的精密电动跑车,它不仅启动即用(零配置),而且能以极低的能耗(30倍内存节省)在复杂的海量数据道路上飞驰。
问题
在 ui 界面查询数据时,最多支持多少行数据?
,
。
虽然来源没有给出具体的行数限制,但提到了与数据查询和展示相关的几项核心能力,这些能力有助于理解其如何处理大量数据:
• 实时查看与上下文检索:UI 支持 Live Tailing(实时跟踪新日志)以及 Surrounding Logs 功能(允许用户查看选中日志前后的上下文),这表明 UI 设计旨在支持连续的日志流探索
。
• 处理宽事件与高基数数据:VictoriaLogs 针对拥有数百个字段的宽事件(Wide Events)和高基数(High Cardinality)字段(如 trace_id、user_id)进行了 UI 展示和查询优化,确保即使在数据极其复杂的情况下也能进行交互式探索
。
• 线性扩展性能:其性能和容量随硬件资源(CPU、RAM、磁盘 IO)线性扩展,这意味着它在处理大规模数据集时具有底层的架构支撑
。
• 多种查询途径:除了内置的 Web UI,VictoriaLogs 还提供交互式命令行工具 vlogscli,并支持通过命令行与经典的 Unix 工具(如 grep、less、sort、jq)结合使用,这通常是处理超大规模结果集(超出浏览器 UI 渲染能力)的常用方式
。
提示:在实际应用中,此类工具的 Web UI 通常会设置一个默认的显示上限(例如 1000 或 10000 行)以防止浏览器因内存占用过高而崩溃,但具体的配置参数通常需要通过命令行标志(-help)进行查看
。如果您的查询返回了海量结果,建议使用其提供的 Grafana 插件 或 命令行工具 进行更深度的分页或流式处理,。
vlogscli 的一些使用场景和性能数据
vlogscli 是 VictoriaLogs 提供的一个交互式命令行查询工具,旨在为习惯终端操作的用户提供高效的日志检索体验。根据来源,其主要使用场景和相关的底层性能数据如下:
vlogscli 的使用场景
- 命令行交互式查询:vlogscli 为 VictoriaLogs 提供了一个原生的交互式命令行界面,允许用户直接输入 LogsQL 语句进行日志检索
。 - 与 Unix 工具链无缝集成:这是 vlogscli 最强大的场景之一。它可以与经典的 Unix 日志分析工具(如 grep、less、sort、jq 等)结合使用
。用户可以通过命令行管道将查询结果直接传递给这些工具进行进一步的处理、过滤或格式化
。 - 替代传统 grep 操作:来源提到有用户使用 VictoriaLogs/vlogscli 成功替换了原始的 grep 命令来进行日志分析,从而获得了更高的效率和更强的功能
。 - 处理高基数和宽事件数据:在需要分析包含大量唯一值(如 trace_id、user_id、ip)或者拥有数百个字段的“宽事件”日志时,vlogscli 能够配合 LogsQL 执行高效的全文本搜索和实时数据转换
。 - 自动化脚本与调试:虽然来源未详述脚本编写,但提到它作为命令行工具,非常适合在需要快速获取数据或进行系统故障排除的终端环境中使用
。
常用指令
场景 1:查询指定时间区间的特定超时日志
需求:查询 project:=officetest 且 job:=xcloud-ncs 在 14:00 - 18:00 期间包含“接口调用出现超时”的日志。
LogsQL 查询语句:
project:officetest job:xcloud-ncs "接口调用出现超时"
操作说明:
• 字段过滤:LogsQL 支持直接通过 key:value 的形式过滤字段
。如果这些字段是摄取时定义的“流标签(Stream Fields)”,查询速度会极快。
• 全文检索:直接输入引号包裹的字符串 "接口调用出现超时",VictoriaLogs 会执行高效的全文本搜索
。
• 时间区间选择:
◦ 在 Web UI 中:您无需在语句中写时间,直接通过 UI 界面顶部的**时间选择器(Time Picker)**选择当天的 14:00:00 到 18:00:00 即可。
◦ 在 API 或脚本中:如果通过命令行查询,可以使用 _time 过滤器,例如 _time:[2023-10-27T14:00:00, 2023-10-27T18:00:00]。
命令:
vlogscli -addr="http://localhost:9428" -query='project:officetest job:xcloud-ncs "接口调用出现超时" AND _time:[2023-10-27T14:00:00, 2023-10-27T18:00:00]'场景 2:实时查询(实时滚动)日志
需求:实时监控 project:=officetest 且 job:=xcloud-ncs 的日志。
LogsQL 查询语句:
project:officetest job:xcloud-ncs
操作说明:
• Live Tailing 功能:VictoriaLogs 原生支持 Live Tailing(实时跟踪)
。
• 在 Web UI 中使用:
1. 在查询框输入上述过滤语句。
2. 点击界面上的 "Live Tail" 按钮。此时,系统会自动持续刷新并展示最新摄入的符合条件的日志记录。
• 延迟说明:新摄入的日志通常在 1 秒内 即可变为可查询状态
。如果您是在进行自动化测试并需要立即看到结果,可以调用 /internal/force_flush 接口强制将缓冲区数据写入存储。
命令
# 方式 A:直接使用 vlogscli 进行查询
vlogscli -addr="http://localhost:9428" -query='project:officetest job:xcloud-ncs'
# 方式 B:结合 Unix 工具实现类似 tail -f 的效果(如果需要进一步过滤或格式化)
vlogscli -addr="http://localhost:9428" -query='project:officetest job:xcloud-ncs' | grep --line-buffered "特定关键词"
历史
VictoriaLogs 是一款由 VictoriaMetrics 团队推出的开源、用户友好型日志数据库。以下是根据提供的来源对其背景、历史及未来规划的详细介绍:
1. 诞生背景:解决传统方案的资源瓶颈
VictoriaLogs 的开发初衷是为了解决现有日志处理方案(如 Elasticsearch 和 Grafana Loki)在资源消耗和运维复杂性上的痛点。
- 资源效率极其低下:传统方案往往占用大量内存和磁盘。相比之下,VictoriaLogs 的设计目标是极端的高效,它使用的 RAM 减少了多达 30 倍,磁盘空间减少了多达 15 倍。
- 应对数据复杂性:现代观测性需求中存在大量高基数数据(如海量的
trace_id、user_id)和宽事件(拥有数百个字段的日志),VictoriaLogs 针对这些场景进行了底层存储优化。 - 运维压力:为了简化运维,它被设计为一个单一的、零配置的可执行文件,能够根据系统资源自动调整默认设置。
2. 发展历史与演进
虽然 VictoriaMetrics 品牌下的产品历史可追溯至 2020 年甚至更早,但 VictoriaLogs 是其产品矩阵中较新且快速增长的成员:
- 产品矩阵扩展:VictoriaLogs 作为 VictoriaMetrics 生态系统的一部分,与
vmagent、vmalert等组件协同工作,共同构成了涵盖指标(Metrics)、日志(Logs)和链路(Traces)的全栈观测性方案。 - 从单机到集群:最初以单机版(Single-node)形式推出,随后演进出了支持横向扩展的集群版本(Cluster version),能够处理数百个节点的规模。
- 功能迭代:在其发展过程中,逐步引入了 LogsQL(专为日志设计的查询语言)、内置 Web UI、
vlogscli命令行工具,以及对 OpenTelemetry、Fluentbit、Logstash 等多种主流数据摄取协议的支持。 - 社区认可:根据来源,已有用户成功使用单节点 VictoriaLogs 替换了原有的 27 节点 Elasticsearch 集群,或用其替代 Loki 和传统的
grep分析流程。
3. 未来规划与发展方向
根据来源中的产品架构和“Roadmap”链接,VictoriaLogs 的未来规划集中在以下几个方向:
- 持续的路线图迭代:官方维护着明确的 Roadmap,致力于引入更多分析功能和性能增强。
- 性能与稳定性优化:通过定期的版本升级,持续进行性能优化和 Bug 修复。开发目标是保持其处理能力随硬件资源(CPU、RAM、磁盘 IO)线性扩展的能力。
- 深度集成生态系统:进一步增强与 OpenTelemetry 的兼容性,并完善其在 Grafana 中的插件体验,以支持构建更复杂的分析仪表板。
- 存储管理优化:持续改进多级存储方案(如 NVMe 与 HDD 的自动迁移)以及灵活的数据保留策略(基于时间或磁盘空间百分比)。
- 企业级特性:在开源版基础上,继续发展企业级功能,如 mTLS 安全认证、证书自动签发以及更高级的多租户访问控制。
总结来说,VictoriaLogs 的背景可以看作是对“重型”日志系统的一次技术反叛。它通过极简的架构和极高的资源利用率,试图将日志处理从一种“基础设施负担”转变为像使用 Unix 工具一样轻量、快速的体验。