clp is a free, open source monitoring & observability project written in C++ and released under Apache-2.0. It has 1,088 GitHub stars, 92 forks and 493 open issues, and was last pushed 36 hours ago. On this registry it ranks #218 of 271 tracked projects in Monitoring & Observability, with 5 head-to-head comparisons available.

What is clp?

CLP (Compressed Log Processor) is YScope's free, Apache-2.0 licensed log management tool, written in C++, that compresses JSON and unstructured logs and allows those compressed logs to be searched without decompression, aimed at engineers and operators who store and query large volumes of logs.

What it is

YScope's Compressed Log Processor is a log management system built around a single idea: logs should be compressed as early as possible and searched in their compressed form. It provides an end-to-end pipeline covering compression, search, analytics, and viewing, and it accepts two kinds of input — raw logs, or CLP's compressed intermediate representation (IR) produced by CLP's own logging libraries. Logs are compressed into archives, which can then be searched and analyzed through a purpose-built web UI.

The concrete problem it solves is the cost of index-based log storage. Searching logs conventionally means building and maintaining an index before any query can run, which consumes storage and compute whether or not anyone queries the data. CLP uses an index-less design, so logs are compressed and searched directly. In the project's benchmarks, this design is measured against Elasticsearch and Splunk, which are fundamentally index-based and cannot be searched without indexes, and against MongoDB and PostgreSQL, whose indexes were disabled for a fair comparison because enabling them would have worsened their compression ratio. It also replaces general-purpose compression for log data: CLP's IR format achieves a higher compression ratio than general-purpose compressors such as Zstandard.

Key capabilities

  • Compresses logs into archives and searches those archives without decompressing them first.
  • Handles both JSON logs and unstructured, free-text logs.
  • Provides real-time compression through logging libraries for Python and Java (Log4j1, Log4j2, and Logback appenders), so only compressed logs are written to disk or transmitted over the network.
  • Writes compressed logs in CLP's intermediate representation (IR) format; re-compressing IR into archives can roughly double the compression ratio and enable global search, at the cost of buffering enough logs in memory.
  • Ships a web UI (components/webui) for searching and viewing compressed logs, plus a log viewer that filters by log level verbosity, for example showing only logs at ERROR or above.
  • Provides IR analytics libraries for Python (clp-ffi-py) and Go (clp-ffi-go).
  • Includes log-surgeon, a pushdown-automata-based log parser described as 3x faster.

Who uses it and how

  • Teams running JSON-emitting services, such as the MongoDB logs used for CLP's JSON benchmarks, who need compressed storage plus fast queries over that data.
  • Teams with unstructured or free-text logs, such as the Hadoop logs used for the unstructured benchmarks, where no fixed schema exists to index against.
  • Applications written in Python or Java that adopt CLP's logging libraries so that compressed logs alone are written to disk or sent across the network, rather than full-text logs that are compressed later.
  • Operators who prefer a web UI for searching and viewing logs over grepping files by hand, and who want log-level filtering to cut noise during debugging.
  • Environments where index maintenance is the bottleneck, since CLP's index-less design removes the need to build indexes before searching.

Getting started

The facts supplied do not include an install command, package name, Docker image, or compose file, so the entry points to work from are CLP's logging libraries for Python and Java, the web UI in components/webui, and the project's 2021 and 2024 papers. Installation and deployment specifics should be taken from the repository README rather than assumed.

How it compares

Among the tools named in CLP's own benchmarks, Elasticsearch and Splunk are index-based systems that cannot search logs without indexes, while MongoDB and PostgreSQL were compared with indexing disabled. CLP positions itself as the index-less alternative, accepting raw logs or its IR format and searching compressed archives directly. Against general-purpose compressors such as Zstandard, CLP's IR format is documented as achieving a higher compression ratio for logs.

When to use it — and when not to

A self-hoster takes on operating a compression and search pipeline, managing the trade-off between IR and archives, and provisioning enough memory to buffer logs when archive-level global search is required. CLP is a poor fit for anyone who wants a managed service with no operational surface, or who depends on a rich ecosystem of pre-built index-based plugins and integrations. Two weaknesses are visible in the facts: the repository carries 493 open issues against roughly 1,088 stars, and the README excerpt does not document installation, leaving setup discovery to the full repository.

project readme (upstream, from github) — read inline

Open bug reports Open feature requests Discord Slack CLP on Zulip

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

CLP Benchmark on JSON Logs CLP Benchmark on Unstructured Logs

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 systems 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.

  • Log parser: CLP also includes a custom pushdown-automata-based log parser that is 3x faster than state-of-the-art regular expression engines like RE2. The log parser is available as a library that can be used by other applications.

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:

  • Discord
  • Slack
  • CLP on Zulip

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.

Frequently asked questions

Is clp free to use?

clp is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does clp do?

Compressed Log Processor (CLP) is a free log management tool capable of compressing logs and searching the compressed logs without decompression.

What is clp written in?

clp is primarily written in C++. Its source is publicly available at https://github.com/y-scope/clp, and it has 1,088 GitHub stars.