- 멀티 클라우드 환경과 MSA 도입으로 애플리케이션이 여러 인프라에 분산됨에 따라 로그 데이터의 양이 급증했고, 이를 체계적으로 수집하고 신속히 분석할 수 있는 역량이 중요해졌다.
- 이러한 환경에서, 다양한 소스에서 생성되는 로그를 일관되게 처리하고 실시간으로 분석할 수 있는 능력은 시스템 운영의 핵심 요소가 되었다.
- 그러나 기존의 규칙 기반 탐지 방식은 고정된 패턴이나 조건에 의존하기 때문에, 새로운 문제나 예상치 못한 비정상적인 동작을 감지하는 데 한계가 있다.
- 이에, LLM 기반 로그 분석 시스템을 도입하여, 로그 데이터를 자동으로 요약하고, 비정상적인 패턴을 탐지함으로써 관리자가 핵심 정보를 빠르게 파악하고 대응할 수 있게 한다.
- 목표는 멀티 클라우드 환경에서 발생하는 대규모 로그 데이터를 효율적으로 수집하고, LLM 을 활용해 이를 요약하고 분석하는 시스템을 구축하는 것이다.
- 실시간 로그 모니터링을 통해 주요 이벤트를 포착하고, 이상 패턴을 신속히 탐지하여, 관리자가 로그 데이터를 일일이 분석하지 않고도 핵심 정보를 파악할 수 있게 돕는다
- 특히, 로그 데이터를 계층적으로 요약하고 중요도에 따라 정보를 선별적으로 제공함으로써, 관리자가 핵심 정보에 집중하여 시스템을 보다 효율적으로 모니터링하고 파악할 수 있게 한다. 또한, 구체적인 대응 방안을 관리자에게 제시하여, 비정상적인 시스템 동작에 신속히 대응할 수 있도록 지원한다.
- 이 시스템을 통해 관리자는 대규모 로그 데이터 분석에 수반되는 부담을 덜고, 실시간으로 발생하는 문제를 보다 신속하고 효율적으로 해결할 수 있다.
- 광범위한 데이터 학습으로 범용성을 갖춘 LLM을 활용하여 로그 요약과 이상 패턴 탐지 기능을 구현함으로써, 특정 서비스에 종속되지 않고도 다양한 애플리케이션의 로그 데이터를 일관되게 분석할 수 있다. 또한, 범용성을 유지하면서도 로그 데이터를 세밀하게 분석할 수 있도록 정교한 프롬프팅을 적용했다.
- 다양한 로그 형식을 일관되게 처리하기 위해 Filebeat 와 Logstash 를 사용해 로그 데이터를 통합한 뒤, 공통된 구조로 변환하여 Elasticsearch 에 저장한다. 이를 통해 개별 서비스의 형식에 구애받지 않고, 통일된 구조로 로그 데이터를 일관되게 분석할 수 있다.
- 모든 로그 데이터를 그대로 저장하고 처리하는 대신, 각 클라우드 인스턴스에서 수집된 로그를 시간대별로 분류하고 요약하여, 해당 시간대의 주요 이벤트를 단계적으로 축적하는 방식으로 저장한다.
- 모든 로그 데이터를 LLM에 입력하는 것은 비효율적이므로, 시간대별로 요약된 데이터를 기반으로 일일 요약을 생성하고, 이를 종합해 주간 요약을 생성하는 다단계 분석 방식을 구현했다.
- 제한된 토큰 수 내에서 대규모 로그 데이터를 효율적으로 처리하고 대화의 연속성을 보장하기 위해, 시스템이 대화가 일정량 누적될 때마다 이전 대화를 요약해 시스템 프롬프트에 자동으로 포함시키는 방식을 도입했다.
- 관리자가 실시간 성능 지표를 모니터링하고, SSH를 통해 원격 서버를 제어할 수 있게 하여, 문제 발생 시 신속하게 대응할 수 있는 환경을 마련했다.
- 다양한 기기에서 일관된 사용자 경험을 제공하기 위해 반응형로 구현된 웹 인터페이스를 제공한다.
- 각 클라우드 인스턴스는 도커 컨테이너로 애플리케이션을 구동하며, 컨테이너에서 생성된 로그는 Filebeat가 수집해 Logstash로 전송 후 전처리.
- 전처리된 로그는 ElasticSearch에 저장되고, Spring Boot를 통해 로드한 후 최종적으로 .txt 파일 형식으로 로컬에 저장.
- 로그 데이터 분석과 요약에는 LangChain과 OpenAI API를 활용하고, 분석 결과는 웹 클라이언트를 통해 관리자에게 제공.
- Apache MINA SSHD를 통해 관리자는 클라우드 인스턴스에 원격으로 접속해 명령을 실행.
- 사용자 정보, 알림, 요약 결과, 성능 지표 등 주요 데이터는 MySQL에 저장되고, Redis는 캐시 및 메시지 브로커 역할을 하며 실시간 소켓 통신을 지원.
- 모든 로그 데이터를 그대로 저장하는 대신, 시간대별로 요약하여 주요 이벤트만 축적하는 방식으로 관리.
- 시간대별 요약 데이터를 바탕으로 '일일 요약'을 생성하고, 이를 다시 종합해 '주간 요약'을 생성하는 다단계 분석 방식 채택.
- 대화가 일정량 이상 누적될 때마다 시스템이 이전 대화를 요약하여 프롬프트에 포함.
- 요약된 대화는 새로운 질문과 함께 시스템 프롬프트에 추가되어, LLM이 이전 대화 맥락을 유지한 상태에서 답변할 수 있도록 지원.
번호 | 구분 | 버젼 |
---|---|---|
1 | Filebeat | 8.5 |
2 | ElasticSearch | 8.15 |
3 | Logstash | 8.15 |
4 | Docker | 24.0.5 |
5 | Redis | 7.24 |
6 | MySQL | 8.0.33 |
7 | Java JDK | 17.0.9 |
8 | Spring Boot | 3.2.0 |
9 | JWT | 4.3.0 |
10 | Junit5 | 5.10.2 |
11 | FastAPI | 0.110.3 |
12 | Gradle | 8.5 |
13 | React | 18 |
14 | TypeScript | 5.6 |
15 | NextJS | 14.2.13 |
16 | Tailwind CSS | 3.4.1 |
17 | Apache MINA SSHD | 2.93 |
18 | Figma | UI3 |
Requirements: Docker, Docker Compose
git clone https://github.com/pnucse-capstone-2024/Capstone-2024-team-44.git
cd Capstone-2024-team-44/elk
docker compose up -d
Requirements: Docker, Docker Compose, OpenAI Key
(OpenAI 키가 있어야 정상적으로 서비스를 이용할 수 있습니다)
git clone https://github.com/pnucse-capstone-2024/Capstone-2024-team-44.git
cd Capstone-2024-team-44
docker compose up -d
로그인 | 회원가입(3단계 중 2단계, 클라우드 등록) |
---|---|
대시보드 | 검색 |
---|---|
프로젝트 목록 | 프로젝트 상세조회 |
---|---|
로그 조회 | 로그 요약 |
---|---|
질문하기 | 원격 SSH 명령 |
---|---|
인사이트(성능요약, 일일요약) | 인사이트(주간 요약, 추천) |
---|---|
- 회원가입 (정보 입력 => 모니터링 할 클라우드의 SSH 정보 검증 및 추가 => OpenAI 키 검증 및 추가)
default.mp4
- 로그인 => 로그 요약, 인사이트 => 검색
default.mp4
- ** 클라우드에 SSH 원격으로 명령 내리기
SSH.mp4
- ** 특정 로그에 대해 챗봇에 질문하기
default.mp4
이름 | 이메일 | 역할 |
---|---|---|
이한홍 | [email protected] |
|
이종일 | [email protected] |
|
박재홍 | [email protected] |
|