2024년 어느 새벽, 저는 Slack 알림에 눈을 떴습니다. 우리 팀의 챗봇 서비스가 새벽 3시부터 5시간 동안 GPT-4.1 호출에서 ConnectionError: HTTPSConnectionPool(host='api.openai.com', port=443): Read timed out. 오류를 반복하고 있었습니다. 문제는 우리 서비스가 시간당 평균 $42의 API 비용을 소모하고 있다는 것이었습니다 — 새벽 3시에도 트래픽이 없어야 할 시간에. 로그가 없다는 것은 곧 보이지 않는 비용이 발생한다는 뜻이었고, 이를 해결하기 위해 ELK 스택 기반의 완전한 로그 수집·분석 인프라를 구축하게 되었습니다.
이 글에서는 HolySheep AI를 단일 게이트웨이로 사용하여 모든 모델 호출을 통합 로깅하고, Logstash로 수집하여 Elasticsearch에 적재한 뒤 Kibana에서 시각화하는 전체 파이프라인을 단계별로 공유합니다. 지금 가입하면 무료 크레딧으로 즉시 검증할 수 있습니다.
왜 AI API 호출 로그 수집이 필수인가
AI API는 일반적인 HTTP API와 다르게 비용·지연·토큰 사용량이 호출마다 달라집니다. 다음은 제가 직접 겪었던 시나리오입니다:
- 비용 폭탄: 한 모델의 평균 latency가 갑자기 2배로 늘어나면서 timeout 재시도가 폭증해 일일 비용이 380% 증가
- 오류 침묵: 401 Unauthorized 오류가 코드 try/except에서 삼켜져 사용자에게는 "답변 없음"으로만 노출
- 토큰 누수: 시스템 프롬프트가 길어지면서 출력 토큰이 평균 1,200 → 3,800으로 증가했으나 발견하지 못함
ELK 스택은 이 모든 문제를 단일 대시보드에서 가시화합니다. Elasticsearch는 검색·집계 엔진, Logstash는 입력·파싱·출력 파이프라인, Kibana는 시각화 도구입니다. 세 가지의 결합만으로 페타바이트 규모 로그를 실시간 분석할 수 있습니다.
아키텍처 개요
+------------------+ +-----------+ +-----------------+ +-----------+
| Application | -----> | Filebeat | -----> | Logstash | -----> | Elastic |
| (Python/Node) | | (optional)| | (parse/enrich) | | search |
+------------------+ +-----------+ +-----------------+ +-----------+
| |
| structured JSON logs (NDJSON) v
+----------------------------------------------------> +-----------------------------+
| Kibana Visualizations |
| - Cost per model per day |
| - P95 latency heatmap |
| - Error rate per endpoint |
| - Token usage trend |
+-----------------------------+
애플리케이션은 모든 AI 호출을 NDJSON(Newline-Delimited JSON) 형식으로 파일에 기록하고, Filebeat가 이를 읽어 Logstash로 전달합니다. Logstash는 json 파서로 필드를 분리하고 모델명·비용·지연 등 enrichment를 수행한 뒤 Elasticsearch에 인덱싱합니다.
1단계: Python 로거 구현 (HolySheep 게이트웨이 통합)
아래 코드는 단일 API 키로 GPT-4.1, Claude Sonnet 4.5, Gemini 2.5 Flash, DeepSeek V3.2를 모두 호출하면서 각 요청의 메타데이터를 NDJSON으로 기록합니다. base_url은 반드시 https://api.holysheep.ai/v1을 사용하며, 이를 통해 모든 호출이 단일 진입점으로 통합됩니다.
# ai_logger.py