배경

Admin 시스템에서 JVM Hang이 매주 터졌습니다. 원인을 찾으려면 수백만 줄의 로그를 직접 읽어야 했는데, 1시간 넘게 걸려도 뚜렷한 원인을 못 잡는 경우가 많았습니다. 결국 서버를 재기동하고, 다음 주에 또 같은 일이 반복되는 구조였습니다.

배경: AS-IS vs TO-BE 비교

해결 방법

“JVM이 죽기 직전 ±15분에 무슨 일이 있었는가?” — 이 질문 하나를 중심으로, 컨텍스트 압축 전략 기반의 AI 실시간 로그 모니터링 시스템을 만들었습니다.

핵심 아이디어: 컨텍스트 압축 전략

시스템 아키텍처

EventBridge가 5분 주기로 Lambda를 트리거하고, Grafana/Loki에서 로그를 수집한 뒤 Bedrock AI로 심층 분석하여 Slack으로 결과를 전송합니다.

시스템 아키텍처

핵심 메커니즘

데이터 전처리와 AI 분석을 2단계로 나누어 처리합니다. 24시간 전체 로그를 ±15분으로 압축(99% 노이즈 감소)한 뒤, Bedrock AI가 장애 원인을 분석하고 Slack으로 리포팅합니다.

핵심 메커니즘: 데이터 전처리 → AI 분석

실제 해결 사례

시스템 도입 후 Localization key 반복 조회로 인한 JVM 지연을 5분 만에 자동 탐지하고, AI가 정확한 원인을 분석하여 Slack으로 즉시 알림을 전송한 사례입니다.

실제 해결 사례 및 실시간 알림

지속적 개선

AI 분석을 통해 식별한 고질적인 핵심 원인 3건을 우선 해결했습니다.

  • DateUtils 날짜 포맷 에러 로그 개선: invalid 로그 80회 반복 제거
  • Admin 콘솔 Localization 부하 제거: 무효한 Key 조회 400회+ 해소
  • 매출 상세 CSV 다운로드 메모리 최적화: Chunk 분할 처리로 리팩토링

지속적 개선: 주요 이슈 3건 우선 해결

효과

단번에 모든 장애 요소가 사라지지는 않겠지만, 이 시스템을 통해 그동안 발생했던 에러 패턴들을 식별하고 불안정 요소를 단계적으로 걸어내는 중입니다.

도입 결과 및 향후 계획

눈여겨볼 점

  • 24시간 로그를 ±15분으로 좁히고, Python 전처리로 99% 노이즈를 제거한 뒤 AI에 넘깁니다. "AI에 무엇을 먹일 것인가"를 정확히 이해한 설계입니다.
  • 실제로 3건의 고질 이슈를 잡았습니다. DateUtils null-check(invalid 로그 80→0), Localization key 부하 제거(무효 조회 400건+ 해소), CSV 다운로드 메모리 최적화(Chunk 분할로 주간 JVM Hang 제거)까지 — 단순 알림이 아니라 장애를 실제로 근절하는 도구로 동작하고 있습니다.
  • 월 $8-9로 운영됩니다. EventBridge + Lambda + Bedrock 서버리스 조합이라 인프라 부담 없이 5분 주기 상시 모니터링이 가능합니다. 분석 결과도 로그 요약이 아니라 화면별 장애 분석, 재현 시나리오, 코드 수정 가이드까지 포함해서 바로 액션을 취할 수 있는 수준입니다.