YScope の圧縮ログ プロセッサ (CLP) はログを圧縮し、解凍せずに圧縮ログを検索できるようにします。 CLP は、JSON ログと非構造化 (つまりフリー テキスト) ログの両方をサポートします。また、いくつかのログ ライブラリ内でのリアルタイム ログ圧縮もサポートしています。 CLP には、圧縮ログを検索および表示するための専用の Web インターフェイスも含まれています。詳細については、非構造化ログの処理に関する 2021 年の論文と、JSON ログへの拡張に関する 2024 年の論文をご覧ください。
上の図は、他のツールと比較した CLP の圧縮および検索パフォーマンスを示しています。 (1) 一部のツールは 1 つのタイプのログのみを処理でき、(2) 両方のタイプを処理できるツールは、タイプごとに異なる設計になっていることが多いため (CLP など)、JSON ログと非構造化ログの間で実験を分離します。
圧縮率は、さまざまなログ データセットの平均として測定されます。これらのデータセットの一部はここで見つけることができます。検索パフォーマンスは、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 をアーカイブに圧縮すると、圧縮率がさらに 2 倍になり、グローバル検索が可能になりますが、十分なログをバッファする必要があるため、より多くのメモリ使用量が必要になります。 IR とアーカイブの詳細については、この Uber Engineering ブログをご覧ください。
ログ ビューア: 圧縮された IR は Web ベースのログ ビューアで表示できます。エディターでのログの表示と比較して、CLP のログ ビューアは、ログ レベルの冗長性に基づいてログをフィルタリングする (たとえば、ログ レベルが ERROR 以上のログのみを表示する) などの高度な機能をサポートします。これらの機能が可能になるのは、CLP のログ ライブラリがログを IR に圧縮する前に解析するためです。
IR 分析ライブラリ: 圧縮された IR を分析できる Python ライブラリと Go ライブラリも提供します。
ログ パーサー: CLP には、RE2 などの最先端の正規表現エンジンより 3 倍高速なカスタム プッシュダウン オートマトン ベースのログ パーサーも含まれています。ログ パーサーは、他のアプリケーションで使用できるライブラリとして利用できます。
分散圧縮と検索のサポートを含むリリース パッケージをダウンロードできます。または、CLP のコア圧縮と検索をすぐに試したい場合は、事前に構築されたコンテナーを使用できます。
ソースからパッケージと CLP コアをビルドするためのガイドもあります。
CLP のテストに使用できるログの一部については、オープンソース データセットをチェックしてください。
オンラインでドキュメントを検索したり、 docs/src
でソースを表示したりできます。
GitHub の問題を使用して、バグを報告したり、機能をリクエストしたりできます。
Zulip に参加して、開発者や他のコミュニティ メンバーとチャットしてください。
これはオープンソース リリースであり、バグ修正や機能などを継続的に更新していきます。機能が必要な場合、またはバグを報告したい場合は、問題を提出してください。喜んで対応させていただきます。