Gemini와 Slack으로 만든 자동 오류 분석 시스템 Solomon
Slack 로그를 Gemini가 자동 분석해 오류 원인과 위치를 바로 보여준다.
Solomon AI Assistant는 Heimdall과 OpenTelemetry(sigNoz) 로 수집되는 오류 로그를 바탕으로, Slack에서 바로 읽히는 형태의 자동 분석 시스템이다. 기존에는 긴 Stack Trace 때문에 메시지가 잘리거나 핵심 원인을 찾기 어려웠고, 이를 해결하기 위해 오류를 요약해 보여주는 흐름을 설계했다.
기본 구조는 Spring Boot 3.x (JDK 21), Gemini API, Slack Bolt for Java, Kubernetes 조합으로 구성했다. Heimdall에서 오류가 감지되면 Webhook으로 서버에 전달되고, 서버는 먼저 OK를 응답한 뒤 백그라운드에서 비동기 처리를 수행한다.
처리 순서는 다음과 같다.
- 수신한 오류를 Slack 채널에 전송
- 해당 메시지를 Gemini 에 전달해 원인과 해결 방향을 생성
- 생성된 답변을 원본 메시지의 thread 로 다시 게시
구현에서는 먼저 Gemini API 연동을 위한 Gradle 의존성과 application.yml 설정을 추가했고, StacktraceTrimmer 로직으로 불필요한 라인을 줄여 핵심 예외와 관련 프레임만 추출했다. Slack 전송은 chat.postMessage 기반으로 구성했고, Gemini 응답은 오류 메시지에 맞춘 프롬프트로 생성한 뒤 Slack 스타일에 맞게 정리했다.
중간 결과로는 전체 스택 트레이스가 길게 흘러가던 기존 메시지 대신, 요약된 오류 메시지 + 파일·라인 정보 + AI 답변 이 한 스레드에 정리되는 형태로 바뀌었다. 그 결과 개발자는 Slack 안에서 오류 원인과 대응 방향을 훨씬 빠르게 확인할 수 있게 됐다.
약 한 달간 운영한 뒤에는 추가 질문이 이어지지 않는 한계가 드러났다. 이를 보완하기 위해 Slack Event Subscription 과 Socket Mode 를 이용해 봇과 상호작용할 수 있게 했고, Caffeine 캐시 로 채팅 세션을 유지해 이전 대화 맥락을 이어가는 방향으로 개선했다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.