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つの主要な出力形式をサポートしています:
- Human (
--human): デフォルトの出力で、ターミナルでの調査用にANSIカラーと視覚的なバーを備えています。 - LLM (
--llm): LLMでの利用に特化して設計された、コンパクトでトークン効率の高いMarkdown形式です。 - 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を使用してソースからビルドして利用できます。