YScope 的压缩日志处理器 (CLP) 会压缩您的日志,并允许您在不解压的情况下搜索压缩日志。 CLP 支持 JSON 日志和非结构化(即自由文本)日志。它还支持多个日志库中的实时日志压缩。 CLP 还包括用于搜索和查看压缩日志的专用 Web 界面。要了解更多信息,请阅读我们 2021 年有关处理非结构化日志的论文和 2024 年有关将其扩展到 JSON 日志的论文。
上图显示了 CLP 与其他工具相比的压缩和搜索性能。我们将 JSON 和非结构化日志分开进行实验,因为 (1) 有些工具只能处理一种类型的日志,(2) 可以处理两种类型的工具通常针对每种类型有不同的设计(例如 CLP)。
压缩率是通过各种日志数据集的平均值来衡量的。其中一些数据集可以在这里找到。搜索性能是使用 MongoDB 日志(对于 JSON)和 Hadoop 日志(对于非结构化日志)的查询来衡量的。请注意,CLP 使用无索引设计,因此为了公平比较,我们禁用了 MongoDB 和 PostgreSQL 的索引;如果我们启用它们,MongoDB 和 PostgreSQL 的压缩率会更差。我们没有禁用 Elasticsearch 或 Splunk 的索引,因为这些工具基本上是基于索引的(即,没有索引就无法搜索日志)。有关我们实验方法的更多详细信息,请参阅 2021 年论文和 2024 年论文。
CLP 提供端到端日志管理管道,包括压缩、搜索、分析和查看。上图展示了CLP的生态架构。它由以下功能组成:
压缩和搜索:CLP 将日志压缩到存档中,可以在 Web UI 中搜索和分析这些存档。输入可以是原始日志,也可以是 CLP 日志记录库生成的 CLP 压缩 IR(中间表示)。
使用 CLP 日志库进行实时压缩:CLP 提供适用于 Python 和 Java(Log4j 和 Logback)的日志库。日志库实时压缩日志,因此只有压缩的日志才会写入磁盘或通过网络传输。压缩日志使用 CLP 的中间表示 (IR) 格式,该格式比 Zstandard 等通用压缩器具有更高的压缩比。将 IR 压缩到存档中可以进一步使压缩率加倍并启用全局搜索,但这需要更多的内存使用,因为它需要缓冲足够的日志。有关 IR 与档案的更多详细信息,请参阅此 Uber 工程博客。
日志查看器:可以在基于 Web 的日志查看器中查看压缩的 IR。与在编辑器中查看日志相比,CLP 的日志查看器支持高级功能,例如根据日志级别详细程度过滤日志(例如,仅显示日志级别等于或高于 ERROR 的日志)。这些功能之所以成为可能,是因为 CLP 的日志记录库会在将日志压缩到 IR 之前对其进行解析。
IR 分析库:我们还提供了一个可以分析压缩 IR 的 Python 库和 Go 库。
日志解析器:CLP 还包括一个基于自定义下推自动机的日志解析器,它比 RE2 等最先进的正则表达式引擎快 3 倍。日志解析器可作为可供其他应用程序使用的库。
您可以下载包含分布式压缩和搜索支持的发行包。或者,要快速尝试 CLP 的核心压缩和搜索,您可以使用预构建的容器。
我们还有从源代码构建包和 CLP 核心的指南。
对于一些可用于测试 CLP 的日志,请查看我们的开源数据集。
您可以在线找到我们的文档或在docs/src
中查看源代码。
您可以使用 GitHub issues 报告错误或请求功能。
加入 Zulip,与开发人员和其他社区成员聊天。
这是我们的开源版本,我们将不断更新错误修复、功能等。如果您需要某个功能或想要报告错误,请提出问题,我们将很乐意参与。