OpenClaw OTel 모니터링 적용 방안
1. 현재 모니터링 갭
있는 것
- Bash 명령 감사 로그 (
command-audit.log) - 스킬 사용 기록 (
skill-usage.jsonl) - 에이전트 이벤트 DB (
ops_agent_events8,320건) - 에러 장부 (
error-ledger/ledger.json) - 시스템 다이제스트 (
system-digest/latest.json)
핵심 갭
| 빠진 메트릭 | 영향 |
|---|---|
| 토큰 사용량 (세션별/에이전트별) | 비용 폭증 감지 불가 |
| API 비용 (시간대별/작업별) | 월말에야 청구서로 확인 |
| 도구 실행 시간 | 병목 지점 모름 |
| 크론잡 실행 시간/성공률 | 127개 활성 크론 중 느린 것 모름 |
| 파이프라인 처리량 | 223개 스크립트 처리 시간 추적 없음 |
핵심: OTel 엔드포인트(localhost:4318)가 settings.json에 설정돼 있지만, 수신 컬렉터가 없어서 데이터가 버려지고 있음.
2. 추천 아키텍처
Claude Code (OTel export)
│
▼ OTLP/HTTP (:4318)
┌─────────────────────┐
│ OTel Collector Lite │ ← Python Flask 경량 수신기
│ (otel_collector_lite.py)
└──────┬──────────────┘
│
▼
SQLite (otel_metrics.db)
│
▼
기존 웹앱 (:3344) ops 블루프린트에 통합
3. 3단계 구현 방안
A. 즉시 (30분) — OTel Collector Lite
Flask 기반 경량 서버를 포트 4318에 띄워서 Claude Code가 내보내는 OTel 데이터를 SQLite에 저장.
otel_collector_lite.py→ OTLP/HTTP 수신 →otel_metrics.db에 저장- 테이블:
otel_metrics(시계열),otel_events(이벤트),cost_tracking(비용 집계) - LaunchAgent로 항상 실행 상태 유지
- 기존 설정 변경 없이 즉시 데이터 수집 시작
B. 단기 (1일) — 비용 추적 + 대시보드 + 알림
- 비용 집계 크론 (
otel_cost_aggregator.py) - 4시간마다 에이전트별 일별 비용 집계
- Anthropic 가격표 기반 비용 추정
- 일비용 $50 초과 → 텔레그램 CRITICAL
-
일비용 $30 초과 → 텔레그램 INFO
-
웹앱 대시보드 통합 (
otel_dashboard.py) /otel페이지 + 4개 API 엔드포인트- 일별 비용 추이 (에이전트별 누적 막대)
- 에이전트별 비용 파이 (도넛)
- 토큰 시계열 (라인)
-
최근 이벤트 피드 (테이블)
-
ops 페이지에 "오늘 비용" 위젯 삽입
C. 중기 (1주) — 완전한 관측성
- Prometheus + Grafana (Docker Compose)
- OTel Collector 공식판 → Prometheus exporter
- 파이프라인 계측 데코레이터 (
@trace_pipeline) - 훅 실행시간 계측
- 전체 223개 파이프라인 점진적 계측
4. 에이전트별 비용 추적
| 에이전트 | 식별 방법 |
|---|---|
| Claude Code (메인) | service.name = claude-code |
| Codex | agent = codex (bus_commands) |
| Cowork | agent = cowork (세션 메타) |
| 파이프라인 LLM | agent = pipeline (게이트웨이 로그) |
| Hermes | agent = hermes (별도 계측) |
5. 알림 규칙
| 조건 | 등급 | 목적지 |
|---|---|---|
| 일비용 > $50 | CRITICAL | 해리 DM |
| 일비용 > $30 | INFO | 알림센터 |
| 세션 비용 > $10 | CRITICAL | 해리 DM |
| 크론 실패율 > 20% | CRITICAL | 해리 DM |
| 파이프라인 지연 > 5분 | INFO | 알림센터 |
6. 구현 우선순위
| 순서 | 작업 | 소요 | 효과 |
|---|---|---|---|
| 1 | otel_collector_lite.py + LaunchAgent | 30분 | 버려지는 데이터 수거 |
| 2 | otel_cost_aggregator.py + 크론 | 2시간 | 비용 가시성 |
| 3 | otel_dashboard.py + 웹앱 등록 | 3시간 | 대시보드 확인 |
| 4 | otel_instrument.py + 주요 파이프라인 5개 | 2시간 | 병목 파악 |
| 5 | Prometheus + Grafana | 4시간 | 전문 대시보드 |
| 6 | 전체 파이프라인 계측 | 2~3일 | 완전한 관측성 |