ctrlb-decompose: LLM을 위한 로그 압축 및 패턴 추출

ctrlb-decompose: LLM을 위한 로그 압축 및 패턴 추출

LLM 분석을 위한 로그 압축

ctrlb-decompose는 원시 로그에서 노이즈를 제거하여 수백만 줄을 몇 가지 실행 가능한 구조적 패턴으로 변환하도록 설계된 고성능 도구입니다. 이 과정은 Large Language Models (LLMs)에 로그를 공급할 때 토큰 소비와 노이즈를 줄여, 모델이 개별적인 반복 줄이 아닌 로그의 구조적 본질에 대해 추론할 수 있게 합니다.

두 단계 정규화 및 클러스터링 파이프라인

ctrlb-decompose는 최소한의 메모리 사용량으로 두 단계 파이프라인을 사용하여 단일 스트리밍 패스로 로그를 처리합니다:

1단계: CLP 인코딩

이 도구는 변수 토큰을 타입이 지정된 플레이스홀더로 정규화하기 위해 Compressed Log Processor (CLP) 인코딩을 사용합니다.これにより 구조적으로 동일한 줄은 특정 값에 관계없이 동일한 'logtype'을 생성합니다. 예를 들어, Request from 10.0.1.15 completed in 45ms status=200와 같은 줄은 Request from <dict> completed in <float>ms status=<int>로 정규화됩니다.

2단계: Drain3 클러스터링

인코딩 후, Drain3 알고리즘은 로그타입에 대한 접두사 트리를 구축하여 토큰 유사도(기본 임계값 0.4)에 따라 그룹화합니다. 토큰이 diverge(분기)될 때, 도구는 <*> 와일드카드를 삽입하여 템플릿을 만듭니다. 이 과정은 증분적이며, 즉 각 라인은 두 번째 패스 없이 한 번만 처리됨을 의미합니다.

변수 분류 및 의미적 타이핑

추출된 변수는 풍부한 분석과 통계를 제공하기 위해 의미적 유형으로 분류됩니다. 도구는 다음 유형을 감지합니다:

Type Example 감지 방법
IPv4 / IPv6 10.0.1.15 CIDR 패턴 매치
UUID 550e8400-e29b-... 8-4-4-4-12 헥스 포맷
Duration 45ms, 3.2s 숫자 + 시간 단위 접미사
HexID 0x1a2b3c 4+ 헥스 숫자
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: reservoir sampling을 사용하여 각 패턴당 예시 라인의 제한된 버퍼를 유지합니다.

출력 형식 및 통합

ctrlb-decompose는 다양한 워크플로에 맞게 세 가지 주요 출력 형식을 지원합니다:

  1. Human (--human): 기본 출력으로, 터미널 조사용 ANSI 색상과 시각적 막대를 제공합니다.
  2. LLM (--llm): LLM 소비를 위해 특별히 설계된 컴팩트하고 토큰 효율적인 Markdown 형식입니다.
  3. JSON (--json): 프로그래밍 방식 소비를 위한 구조화된 형식입니다.

Claude Code 플러그인

이 도구는 플러그인을 통해 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