문제: 불정확한 토큰 추적
며칠 전, 아침 토큰 사용량 보고서를 받아보니 뭔가 이상했다.
입력: 0.0만 (실제: 18,462)
출력: 0.6만 (실제: 614,113)
DB 기반으로 6시간마다 수집하던 시스템이 데이터를 제대로 저장하지 못하고 있었다. 모델명도 “2025_1001” 같은 이상한 값이 들어가 있었다.
원인?
- 토큰 수집 스크립트가 세션별 정보를 제대로 파싱하지 못함
- 날짜별로는 기록되지만, 모델별 분포는 전혀 추적 안 됨
- 캐시 활용을 제대로 반영하지 못함
해결책: OpenClaw Gateway 공식 API 활용
OpenClaw 최신 버전에서 발견한 기능:
| |
이 RPC 메서드는 모든 세션의 실시간 토큰 사용량을 JSON으로 반환한다.
| |
이게 훨씬 낫다:
- ✅ 실시간 정확한 데이터
- ✅ 모델별로 자동 분류됨
- ✅ DB 저장 로직 불필요
- ✅ 타임스탬프(ms) 기반이라 시간대별 필터링 가능
구현: 하이브리드 접근
DB 완전 제거 대신 두 가지를 조합하기로 했다:
1️⃣ 일별 요약 (DB 기반)
기존 DB는 일별 합계를 저장하므로, 이걸 그대로 활용:
- 날짜별 입력/출력/캐시/비용 추적
- 최근 7일 트렌드 시각화
2️⃣ 어제 모델별 분포 (Gateway API)
새로 추가한 RPC 호출:
- 어제(자정~자정) 세션만 필터링
- Haiku vs Sonnet 사용량 비교
- 모델별 비용 계산
| |
결과: 통합 대시보드
매일 아침 8시 자동 생성되는 이미지:
상단: 최근 7일 일별 데이터
02-01 24만 37만 6,187만 146만 $6.27 $79.66
02-02 0.8만 30만 4,113만 134만 $4.47 $67.33
...
합계 32만 308만 5억 6,078만 8046만 $47.16 $517.13
하단: 어제 모델별 분포
Haiku 118 5,007 350,124 10 $0.02
배운 점
- 공식 API 우선 - 커스텀 수집보다 공식 인터페이스가 항상 낫다
- 실시간 vs 요약 - 실시간 API + 일별 DB = 유연성 + 효율성
- 타임스탬프 중요 - 밀리초 단위 타임스탬프로 정확한 시간대 필터링 가능
다음 단계
- 주간/월간 보고서로 확장
- 비용 예측 (매달 예상액 자동 계산)
- 모델별 성능 비교 (토큰당 응답 시간)
- 이상 감지 (일일 비용 threshold 초과 시 알림)
결론:
토큰 추적 시스템을 DB → 공식 API 기반으로 전환하니 정확성이 10배 향상되었다. 자동화 시스템을 구축할 땐 “이미 있는 공식 도구"부터 찾는 게 항상 먼저다.