README 未给出具体安装命令,需按官方文档构建或使用容器;实时压缩需额外接入对应语言的日志库;IR 转归档可再提升压缩比但需缓冲更多日志、占用更多内存

clp
y-scopeApache-2.0活跃维护CLP 是一款日志管理工具,能把原始日志高倍压缩,并支持直接在压缩数据上检索,省去解压步骤,适合日志量大又需要快速查问题的场景。
Compressed Log Processor (CLP) is a free log management tool capable of compressing logs and searching the compressed logs without decompression.
下载 release 包:https://github.com/y-scope/clp/releases;或使用预构建容器快速试用核心压缩与搜索:http://docs.yscope.com/clp/main/user-docs/core-containerREADME 未说明
压缩日志并支持不解压直接搜索的日志管理工具,支持 JSON 与非结构化日志
CLP 是一款日志管理工具,能把原始日志高倍压缩,并支持直接在压缩数据上检索,省去解压步骤,适合日志量大又需要快速查问题的场景。
核心能力
- 将日志压缩为归档,无需解压即可搜索
- 支持 JSON 日志与自由文本非结构化日志
- 提供 Python、Log4j1/2、Logback 库实时压缩日志
- 附带 Web UI 搜索、查看与分析压缩日志
- 提供 Python 与 Go 库分析压缩 IR
容易踩的坑
- v0.14.1最新正式版2026-10-27 · 2026-10-27 18:45 UTC
A bug-fix release that improves the fault tolerance of
compression-coordinator.[!IMPORTANT]
Docker Compose 5.3.0 and 5.3.1 aren't supported due to an upstream regression in Docker Compose affecting disabled services.
This release includes two tars for CLP as a distributed system:
- clp-json for compressing and searching JSON logs
- clp-text for compressing and searching unstructured text logs
This release also includes installable packages for CLP’s core.
Docs
The docs for this release are available here.
Bug fixes
- clp-json: Upgrade Spider to
0.1.0-rc.2so thatcompression-coordinatorcan re-attach to already-started jobs after a restart. (#2557)
View the full changelog for more details.
Thanks to @LinZhihao-723 for their contributions.
- v0.14.02026-10-01 · 2026-10-01 15:38 UTC
查看更新说明
A release that introduces a new coordinator for compression, support for running CLP on ARM machines, and several bug fixes and improvements.
compression-coordinatoris a new component that leverages Spider to manage compression jobs. Together, they provide several benefits including improved failure handling, fairness, and horizontal scalability (see the docs for more details).[!NOTE]
compression-coordinatoris only usable with clp-json.compression-coordinatorhas not yet reached feature-parity withcompression-scheduler(see the docs for details). Until then, the two are meant to run side-by-side, withcompression-schedulerhandling any jobs thatcompression-coordinatordoesn't yet support.
[!IMPORTANT]
- This release includes some changes that are incompatible with previous releases. If this affects you, reach out and we may be able to help with version migration. These changes are marked with "Breaking".
- Docker Compose 5.3.0 and 5.3.1 aren't supported due to an upstream regression in Docker Compose affecting disabled services.
This release includes two tars for CLP as a distributed system:
- clp-json for compressing and searching JSON logs
- clp-text for compressing and searching unstructured text logs
This release also includes installable packages for CLP’s core.
Docs
The docs for this release are available here.
New features
- clp-json: Add the
compression-coordinatorcomponent to manage compression jobs with the new Spider Huntsman (written in Rust); Purge the integration of the legacy Spider Wolf (written in C++). (#2401, #2402, #2403, #2404, #2405, #2406, #2408, #2411, #2415, #2416, #2417, #2418, #2420, #2421, #2434, #2435, #2436, #2438, #2419, #2452, #2455, #2456, #2457, #2460, #2462, #2479, #2481, #2492, #2493, #2494, #2495, #2501, #2507, #2535)- Breaking:
- We now require users to set
nameOverrideandfullnameOverrideglobally so that they also apply to the Spider subchart. E.g., a user now needs to runhelm install --set global.nameOverriderather thanhelm install --set nameOverride(likewise forfullnameOverride). - The C++-based Spider integration has been removed, so users can no longer use
compression-schedulerwith Spider. - The following settings have been removed from CLP's configuration file (
etc/clp-config.yaml):database.names.spidercompression_scheduler.typespider_scheduler
- The following settings have been removed from CLP's credentials file (
etc/clp-credentials.yaml):spider_passwordspider_username
- We now require users to set
- Breaking:
- clp-json/clp-text: Add support for running CLP on ARM64 (aarch64) machines. (#2357, #2426, #2515, #2518, #2527)
- clp-json: Add support for parsing RFC 2822/822 timestamp strings. (#2363)
- webui: Route queries from the WebUI through the API server, eliminating duplicated job submission and results retrieval work that they both used to do. (#2483, #2484)
- Breaking:
- The API server is now required for the WebUI to run.
- The WebUI's
/api/search/*routes have been removed. Users should now use the API server directly. - For CLP’s native query engine, support for explicitly clearing a query's search results has been removed. Users can rely on CLP's [retention periods](https://docs.yscope.com/clp/v0.14.0/user-docs/guides-retention
- Breaking:
- v0.13.02026-07-22 · 2026-07-22 23:35 UTC
查看更新说明
A release that adds OpenTelemetry metrics, compression and search performance improvements, compression and search throughput and responsiveness improvements, additional configuration knobs, and even more features and improvements.
[!NOTE] This release includes some changes that are incompatible with previous releases. If this affects you, reach out and we may be able to help with version migration. These changes are marked with "Breaking".
This release includes two tars for CLP as a distributed system:
- clp-json for compressing and searching JSON logs
- clp-text for compressing and searching unstructured text logs
This release also includes installable packages for CLP’s core.
[!WARNING] Docker Compose 5.3.0 and 5.3.1 aren't supported due to an upstream regression in Docker Compose affecting disabled services.
Docs
The docs for this release are available here.
New features
- clp-json/clp-text: Add configurable collection of anonymized operational metrics and support for exporting metrics via OpenTelemetry. (#2267, #2278, #2286, #2288, #2309, #2335, #2351)
- Breaking:
- Anonymized telemetry is enabled by default.
- On first start, when run interactively, users will be prompted for consent; non-interactive starts use the enabled default.
- To disable telemetry, see the docs.
- Instance IDs for new package instances now use a full UUIDv4 in
var/log/instance-idinstead of a four-character hexadecimal ID.- Existing instance IDs are retained, but tooling that assumes a four-character ID must be updated to accept UUIDv4 values.
- Anonymized telemetry is enabled by default.
- Breaking:
- clp-json: Add support for ingesting general-purpose compressed files. (#2295)
- webui: Make the search result limit configurable, and warn when results from Presto are truncated. (#2289, #2350)
- clp-json: Add support for exporting Presto search results from the UI (resolves #2320). (#2331)
- clp-s: Add support for outputting count and count-by-time aggregation results to the command line and results-cache. (#2326, #2342)
Bug fixes & improvements
clp-json/clp-text
- clp-json: Improve query performance through column-based filtering for a subset of query shapes. (#2281, #2315)
- clp-json: Improve decompression performance by leveraging simdjson for JSON string-escaping where possible. (#2216)
- clp-json: Improve compression performance for unstructured logs by re-using the same
log_surgeon::BufferParserto convert each file. (#2284) - clp-json: Add support for running the Presto and native query engines simultaneously in the same Docker Compose deployment. (#2349)
- Breaking: The
package.query_engineconfiguration key has been replaced with thewebui.query_enginekey.
- Breaking: The
- clp-json/clp-text; Improve the throughput, responsiveness, and performance of the query-scheduler via caching and eliminating concurrency bottlenecks. (#2140, #2215, #2336)
- clp-json/clp-text: Add defensive timeouts to prevent scheduler hangs (fixes #2252). (#2271)
- Breaking:
- Compression and search tasks will now be terminated after the configured timeout.
- In Docker Compose deployments, the default compression and query tasks default to a soft and hard limits of 600s and 1,200s respectively, and can be configured via
task_soft_time_limitandtask_time_limit. - In Helm deployments, both limits are
0(disabled).
- In Docker Compose deployments, the default compression and query tasks default to a soft and hard limits of 600s and 1,200s respectively, and can be configured via
- Compression and search tasks will now be terminated after the configured timeout.
- Breaking:
- clp-json: Improve timestamp-filter query translation in the UI to give Presto more query optimization opportunities. (#2328)
- log-in
- v0.12.02026-04-22 · 2026-04-22 12:51 UTC
查看更新说明
A release that includes several bug fixes and improvements like improved query throughput.
[!NOTE] This release includes some changes that are incompatible with previous releases. If this affects you, reach out and we may be able to help with version migration. These changes are marked with "Breaking".
This release includes two tars for CLP as a distributed system:
- clp-json for compressing and searching JSON logs
- clp-text for compressing and searching unstructured text logs
This release also includes installable packages for CLP’s core.
Docs
The docs for this release are available here.
New features
- api-server: Add an endpoint for retrieving usage statistics for compression jobs. (#2197)
- webui: Add export and copy buttons for search results. (#2185)
Bug fixes & improvements
- clp-json: Update timezone regex to only accept spaces when followed by an actual timezone (fixes #2187). (#2192)
- clp-json/clp-text: Dispatch batches of search tasks in parallel to improve query scheduler throughput. (#2184)
- Breaking: By default, the query scheduler will now start a process pool with 4 processes, which can increase resource usage. To revert to the previous behavior, reduce
query_scheduler.scheduler_concurrencyto1in CLP’s config file.
- Breaking: By default, the query scheduler will now start a process pool with 4 processes, which can increase resource usage. To revert to the previous behavior, reduce
- clp-json: Add support for compressing unstructured log events as large as 512MiB (fixes #2176). (#2193)
- api-server: Enforce
max_num_resultsacross all result output paths (fixes #1858). (#2180) - clp-json/clp-text: Clean up temporary files on compression failure. (#2210)
- clp-json: Add retries with exponential backoff for transient S3 read failures before any data is read. (#2203)
- clp-json/clp-text: Increase database column sizes for compression & query job configs; Handle corrupted job configs gracefully (fixes #2151). (#2178)
- Breaking: The maximum column size for some columns in the compression jobs, compression tasks, and query jobs metadata tables has been changed.
View the full changelog for more details.
Thanks to @gibber9809, @goynam, @jackluo923, @jonathan-imanu, and @junhaoliao for their contributions.
- v0.11.02026-04-14 · 2026-04-14 18:29 UTC
查看更新说明
A release that includes several convenience features, bug fixes, and improvements like additional support for AWS authentication methods and minor improvements to query performance.
[!NOTE] This release includes some changes that are incompatible with previous releases. If this affects you, reach out and we may be able to help with version migration. These changes are marked with "Breaking".
This release includes two tars for CLP as a distributed system:
- clp-json for compressing and searching JSON logs
- clp-text for compressing and searching unstructured text logs
This release also includes installable packages for CLP’s core.
Docs
The docs for this release are available here.
New features
- log-ingestor/helm: Add support for automatically retrieving AWS credentials via the default credentials provider chain. (#1962)
- Breaking:
- In CLP’s configuration file,
aws_authentication.type: "ec2"has been renamed to"default", broadening its scope from EC2 instance metadata to the full AWS SDK default credential provider chain. - The Helm chart renames the
<clp-deployment-name>-job-watcherto<clp-deployment-name>-service-account. - The Helm chart now uses the ServiceAccount (
<clp-deployment-name>-service-account) and exposes OIDC annotations invalues.yamlfor S3 access.
- In CLP’s configuration file,
- Breaking:
- log-ingestor: Switch buffer submission from soft timeout to hard timeout; Move buffer config from package config to job config. (#2150)
- Breaking:
buffer_flush_timeout,buffer_flush_threshold, andchannel_capacityhave been removed from the package-level config (and Helm values). They are now per-job settings specified via the ingestion API'sbuffer_configfield.- The buffer flush timer now uses a hard timeout (starts when the first entry is buffered and is not reset by subsequent entries), replacing the previous soft timeout (which reset on every new entry).
- Breaking:
- helm: Add support for deploying Presto in CLP's Helm chart. (#2004)
- Breaking:
- The
query_engineconfig has moved fromclpConfig.package.query_enginetoclpConfig.webui.query_engine. - The query-scheduler, query-worker, and reducer components are now conditionally deployed; they are skipped when their respective config sections are set to
null.
- The
- Breaking:
- packaging: Add support for building deb, rpm, and apk packages containing CLP's core binaries. (#1996)
Bug fixes & improvements
- clp-json: Accept empty files as valid inputs (fixes #1993, #2063). (#2138)
- clp-json: Make timezone offset optional in timezone regex, allowing bare "UTC" and trailing "Z" formats (fixes #1952). (#2134)
- presto-clp: Fix AWS S3 endpoint URL format so that Presto queries for archives on S3 no longer return zero rows (fixes #2107, fixes #2108). (#2109)
- clp-json/clp-text: Improve performance for S3 ingestion jobs submitted through
log-ingestorby eliminating redundant queries for S3 object metadata. (#2082, #2087) - clp-json: Improve query performance when using the API server by not uploading empty query result files to S3. (#2135)
- deployment: Improve robustness of webui health checks by switching from TCP to HTTP to detect failures like trashing (fixes #2172). (#2186)
- helm!: Rename mcp-server port from "mcp" to "mcp-server" for consistency (fixes #2021). (#2022)
- Breaking: Any name-based references (e.g.,
kubectlport-forward, Ingress or Gateway) tomcpwill need to be updated tomcp-server. Usage of the port number is unaffected.
- Breaking: Any name-based references (e.g.,
- clp-package: Only create a new dataset after paths to compress are validated in a compression job (fixes #2091). (#2092)
- deployment: Pin Presto container image
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
YScope's Compressed Log Processor (CLP) compresses your logs, and allows you to search the compressed logs without decompression. CLP supports both JSON logs and unstructured (i.e., free text) logs. It also supports real-time log compression within several logging libraries. CLP also includes purpose-built web interfaces for searching and viewing the compressed logs. To learn more about it, read our 2021 paper about handling unstructured logs and our 2024 paper on extending it to JSON logs.
Benchmarks

The figures above show CLP's compression and search performance compared to other tools. We separate the experiments between JSON and unstructured logs because (1) some tools can only handle one type of logs, and (2) tools that can handle both types often have different designs for each type (such as CLP).
Compression ratio is measured as the average across a variety of log datasets. Some of these datasets can be found here. Search performance is measured using queries on the MongoDB logs (for JSON) and the Hadoop logs (for unstructured logs). Note that CLP uses an index-less design, so for a fair comparison, we disabled MongoDB and PostgreSQL's indexes; If we left them enabled, MongoDB and PostgreSQL's compression ratio would be worse. We didn't disable indexing for Elasticsearch or Splunk since these tools are fundamentally index-based (i.e., logs cannot be searched without indexes). More details about our experimental methodology can be found in the 2021 paper and the 2024 paper.
System Overview

CLP provides an end-to-end log management pipeline consisting of compression, search, analytics, and viewing. The figure above shows the CLP ecosystem architecture. It consists of the following features:
-
Compression and Search: CLP compresses logs into archives, which can be searched and analyzed in a web UI. The input can either be raw logs or CLP's compressed IR (intermediate representation) produced by CLP's logging libraries.
-
Real-time Compression with CLP Logging Libraries: CLP provides logging libraries for Python and Java (Log4j1, Log4j2 and Logback). The logging libraries compress logs in real-time, so only compressed logs are written to disk or transmitted over the network. The compressed logs use CLP's intermediate representation (IR) format which achieves a higher compression ratio than general purpose compressors like Zstandard. Compressing IR into archives can further double the compression ratio and enable global search, but this requires more memory usage as it needs to buffer enough logs. More details on IR versus archives can be found in this Uber Engineering Blog.
-
Log Viewer: the compressed IR can be viewed in a web-based log viewer. Compared to viewing the logs in an editor, CLP's log viewer supports advanced features like filtering logs based on log level verbosity (e.g., only displaying logs with log level equal or higher than ERROR). These features are possible because CLP's logging libraries parse the logs before compressing them into IR.
-
IR Analytics Libraries: we also provide a Python library and a Go library that can analyze compressed IR.
Getting Started
You can download a release package which includes support for distributed compression and search. Or, to quickly try CLP's core compression and search, you can use a prebuilt container.
We also have guides for building the package and CLP core from source.
For some logs you can use to test CLP, check out our open-source datasets.
Docs
You can find our docs online or view the source in docs/src.
Providing Feedback
You can use GitHub issues to report a bug or request a feature.
Community
Need help? Join us on one of our community servers:
Next Steps
This is our open-source release which we will be constantly updating with bug fixes, features, etc. If you would like a feature or want to report a bug, please file an issue and we'll be happy to engage.