ctrlb-decompose: LLMのためのログ圧縮とパターン抽出

ctrlb-decompose: LLMのためのログ圧縮とパターン抽出

LLM分析のためのログ圧縮

ctrlb-decomposeは、生のログからノイズを取り除き、数百万行のデータを実行可能な少数の構造的パターンに変換するために設計された高性能ツールです。このプロセスにより、ログを大規模言語モデル(LLM)に入力する際のトークン消費量とノイズが削減され、モデルは個々の反復的な行ではなく、ログの構造的な本質に基づいて推論できるようになります。

2段階の正規化およびクラスタリングパイプライン

ctrlb-decomposeは、2段階のパイプラインを使用して、最小限のメモリフットプリントで単一のストリーミングパスでログを処理します。

ステージ 1: CLP Encoding

このツールは、Compressed Log Processor (CLP) encodingを使用して、可変トークンを型付きのプレースホルダーに正規化します。これにより、特定の値に関係なく、構造的に同一の行が同じ「logtype」を生成することが保証されます。例えば、Request from 10.0.1.15 completed in 45ms status=200 という行は、Request from <dict> completed in <float>ms status=<int> に正規化されます。

ステージ 2: Drain3 Clustering

エンコーディングに続いて、Drain3アルゴリズムがlogtypesに対して接頭辞ツリー(prefix tree)を構築し、トークンの類似度(デフォルトの閾値は0.4)に基づいてグループ化します。トークンが分岐する箇所では、ツールは<*>ワイルドカードを挿入してテンプレートを作成します。このプロセスはインクリメンタル(増分型)であり、各行は2回目のパスを必要とせずに一度だけ処理されます。

変数分類とセマンティック・タイピング

抽出された変数は、より豊かな分析と統計を提供するために、セマンティックな型に分類されます。ツールは以下の型を検出します:

検出方法
IPv4 / IPv6 10.0.1.15 CIDRパターンマッチ
UUID 550e8400-e29b-... 8-4-4-4-12 hex形式
Duration 45ms, 3.2s 数値 + 時間単位の接尾辞
HexID 0x1a2b3c 4桁以上の16進数
Integer 200 i64としてパース
Float 3.14 . を含む、f64としてパース
Enum ERROR 低カーディナリティ (ユニーク数が20以下、かつ上位3つが80%以上)
Timestamp 2024-01-15T14:22:01Z RFC 3339パターン
String その他のすべての値 フォールバック

メモリ効率と統計的蓄積

低いメモリフットプリントを維持するために、ctrlb-decomposeはいくつかの確率的データ構造を利用しています:

  • Drain3 Clusters: O(k)の計算量とLRUエビクション(最大10k)で管理されます。
  • Quantiles: DDSketchを使用して、生データを保存することなく、数値スロットあたり約200バイトの固定サイズを維持します。
  • Cardinality: 高カーディナリティの変数のためにHyperLogLog++を採用しています(変数あたり約200バイト)。
  • Examples: リザーバサンプリングを使用して、パターンごとの例行の制限付きバッファを維持します。

出力形式と統合

ctrlb-decomposeは、異なるワークフローに適応するために3つの主要な出力形式をサポートしています:

  1. Human (--human): デフォルトの出力で、ターミナルでの調査用にANSIカラーと視覚的なバーを備えています。
  2. LLM (--llm): LLMでの利用に特化して設計された、コンパクトでトークン効率の高いMarkdown形式です。
  3. JSON (--json): プログラムによる利用のための構造化された形式です。

Claude Code Plugin

このツールは、プラグインを介してClaude Codeと統合されています。ユーザーは /plugin marketplace add ctrlb-hq/ctrlb-decompose を使用してインストールし、「Analyze the errors in /var/log/app.log」のような自然言語コマンドを使用してログを分析できます。

コミュニティの洞察

Hacker Newsのユーザーは、完全なエコシステムの採用を必要とせず、単一の分解ステップに焦点を当てているこのツールのUnix哲学への準拠を強調しました。一部のユーザーは、パターンをメトリクス、ログ、またはトレースに変換してデータ転送コストを削減するために、OpenTelemetryと統合してツールの機能を拡張することを提案しました。

「ついに、エコシステム全体を採用することを強いることなく、この問題に取り組むツールが現れた。分解ステップだけに集中し、それを完璧にこなすという、Unix哲学に寄り添った姿勢を高く評価する。」

インストール

ctrlb-decomposeは、macOS用のHomebrew (brew install ctrlb-decompose)、Debian/Ubuntu用の .deb パッケージ、またはCargoを使用してソースからビルドして利用できます。

Sources