update 22
This commit is contained in:
240
README.md
240
README.md
@@ -1,41 +1,84 @@
|
||||
# LogHunter
|
||||
|
||||
SFTP를 통해 원격 서버의 로그 파일을 수집하고, 등록된 패턴으로 에러를 검출하여 관리하는 윈도우 데스크탑 애플리케이션
|
||||
SFTP를 통해 원격 서버의 로그 파일을 수집하고, 등록된 패턴으로 에러를 검출하여 관리하는 데스크탑 애플리케이션
|
||||
|
||||
## 개요
|
||||
|
||||
- **목적**: 폐쇄망 환경에서 여러 리눅스 서버의 로그를 수집하여 에러를 검출하고 관리
|
||||
- **실행 환경**: Windows
|
||||
- **실행 환경**: Windows / macOS / Linux
|
||||
- **대상 서버**: Linux (SFTP)
|
||||
- **동작 방식**: 필요 시 수동 실행 → 웹 UI에서 분석 실행 및 결과 조회
|
||||
|
||||
## 주요 기능
|
||||
|
||||
### 로그 수집 및 분석
|
||||
- SFTP를 통한 로그 파일 수집 (비밀번호 / 키 파일 인증)
|
||||
- 정규식 기반 에러 패턴 매칭
|
||||
- 제외 패턴 지원 (오탐 방지)
|
||||
- 에러 발생 전후 컨텍스트 캡처
|
||||
- 서버별 분석 이력 관리
|
||||
- HTML/TXT 리포트 내보내기
|
||||
- 1개월 이내 파일만 분석 (성능 최적화)
|
||||
- 스캔 후 SQLite VACUUM 자동 실행 (DB 최적화)
|
||||
|
||||
### 대시보드
|
||||
- 서버 목록 카드 형태 표시
|
||||
- 서버별 최근 30일 에러 추이 차트
|
||||
- 분석 실행 버튼 및 실시간 진행상황 표시
|
||||
- 심각도별 색상 구분 (CRITICAL/ERROR/WARN)
|
||||
|
||||
### 에러 이력
|
||||
- 전체 에러 조회/검색/필터
|
||||
- 서버 선택 드롭다운
|
||||
- 트리 구조 탐색 (경로 → 파일 2단계)
|
||||
- 파일명 툴팁으로 전체 경로 표시
|
||||
- 페이지당 100건, 최신순 정렬
|
||||
- 상세보기 (컨텍스트 포함)
|
||||
|
||||
### 통계
|
||||
- **월별 현황**: 선택 월의 일별 에러 추이, 서버별 필터
|
||||
- **일별 현황**: 선택 일의 15분 단위 에러 추이, 서버별 필터
|
||||
- 이전/다음 버튼으로 기간 이동
|
||||
- 차트 막대 위 총합 표시
|
||||
|
||||
### 서버 관리
|
||||
- 카드 형태 UI로 서버 정보 표시
|
||||
- SFTP 서버 등록/수정/삭제
|
||||
- 로그 경로 복수 등록 (경로, 파일 패턴, 설명)
|
||||
- 연결 테스트
|
||||
- **분석 실행** 버튼 및 진행상황 표시
|
||||
|
||||
### 패턴 관리
|
||||
- 카드 형태 UI로 패턴 정보 표시
|
||||
- 에러 패턴 등록/수정/삭제
|
||||
- 정규식 테스트 기능
|
||||
- 심각도 설정 (CRITICAL/ERROR/WARN)
|
||||
- 컨텍스트 라인 수 설정
|
||||
|
||||
### 내보내기
|
||||
- HTML 리포트 생성
|
||||
- TXT 리포트 생성
|
||||
- 설정에서 내보내기 경로 지정
|
||||
|
||||
## 기술 스택
|
||||
|
||||
| 구분 | 기술 |
|
||||
|------|------|
|
||||
| Backend | Spring Boot 3.2 |
|
||||
| Frontend | Vue3 (SPA, 빌드 후 static 폴더에 포함) |
|
||||
| Backend | Spring Boot 3.2, Java 17 |
|
||||
| Frontend | Vue 3, Vite, Chart.js |
|
||||
| Database | SQLite (파일 DB) |
|
||||
| SFTP | JSch |
|
||||
| 배포 | 단일 jar 파일 |
|
||||
|
||||
## 화면 구성
|
||||
|
||||
| # | 화면명 | 설명 |
|
||||
|---|--------|------|
|
||||
| 1 | 대시보드 | 서버 목록, 마지막 분석/에러 일시, 실행 버튼, 진행상황 표시 |
|
||||
| 2 | 에러 이력 | 전체 에러 조회/검색/필터, 상세보기 (컨텍스트 포함) |
|
||||
| 3 | 서버 관리 | SFTP 서버 등록/수정/삭제, 로그 경로 복수 등록, 연결 테스트 |
|
||||
| 4 | 패턴 관리 | 에러 패턴 등록/수정/삭제, 패턴 테스트 |
|
||||
| 5 | 설정 | 내보내기 경로, 로그 보관 기간, 포트 설정 |
|
||||
| # | 화면명 | URL | 설명 |
|
||||
|---|--------|-----|------|
|
||||
| 1 | 대시보드 | `/` | 서버 카드, 30일 차트, 분석 실행 |
|
||||
| 2 | 에러 이력 | `/errors` | 전체 에러 조회, 트리 탐색, 상세보기 |
|
||||
| 3 | 월별 현황 | `/stats/monthly` | 월별 에러 통계 차트 |
|
||||
| 4 | 일별 현황 | `/stats/daily` | 일별 15분 단위 에러 차트 |
|
||||
| 5 | 서버 관리 | `/servers` | 서버 CRUD, 분석 실행, 로그 경로 관리 |
|
||||
| 6 | 패턴 관리 | `/patterns` | 패턴 CRUD, 테스트 |
|
||||
| 7 | 설정 | `/settings` | 내보내기 경로, 보관 기간 |
|
||||
|
||||
## 폴더 구조
|
||||
|
||||
@@ -43,20 +86,48 @@ SFTP를 통해 원격 서버의 로그 파일을 수집하고, 등록된 패턴
|
||||
log-hunter/
|
||||
├── src/ # Spring Boot 소스
|
||||
│ └── main/
|
||||
│ ├── java/ # Java 소스
|
||||
│ ├── java/
|
||||
│ │ └── research/loghunter/
|
||||
│ │ ├── controller/ # REST API
|
||||
│ │ ├── service/ # 비즈니스 로직
|
||||
│ │ ├── repository/ # DB 접근
|
||||
│ │ ├── entity/ # JPA Entity
|
||||
│ │ └── dto/ # 데이터 전송 객체
|
||||
│ └── resources/
|
||||
│ └── static/ # Vue3 빌드 결과물
|
||||
├── frontend/ # Vue3 (개발용)
|
||||
│ └── src/
|
||||
│ └── views/
|
||||
│ ├── views/ # 페이지 컴포넌트
|
||||
│ ├── components/ # 공통 컴포넌트
|
||||
│ └── api/ # API 클라이언트
|
||||
├── data/ # SQLite DB
|
||||
├── exports/ # HTML/TXT 내보내기
|
||||
├── start.sh # 실행 스크립트 (macOS/Linux)
|
||||
├── start.bat # 실행 스크립트 (Windows)
|
||||
├── build.gradle
|
||||
└── settings.gradle
|
||||
```
|
||||
|
||||
## 실행 시 동작
|
||||
## 실행 방법
|
||||
|
||||
### 개발 모드
|
||||
```bash
|
||||
# Frontend 개발 서버 실행
|
||||
cd frontend
|
||||
npm run dev
|
||||
|
||||
# Backend 실행 (별도 터미널)
|
||||
./gradlew bootRun
|
||||
```
|
||||
|
||||
### 프로덕션 모드
|
||||
```bash
|
||||
# 통합 빌드 및 실행
|
||||
./start.sh # macOS/Linux
|
||||
start.bat # Windows
|
||||
```
|
||||
|
||||
### 실행 시 동작
|
||||
```
|
||||
log-hunter.jar 실행
|
||||
↓
|
||||
@@ -69,90 +140,51 @@ log-hunter.jar 실행
|
||||
|
||||
---
|
||||
|
||||
## 작업 Step
|
||||
## 작업 현황
|
||||
|
||||
### Step 1. 프로젝트 초기 설정
|
||||
### ✅ 완료된 기능
|
||||
|
||||
- [x] 1-1. Spring Boot 프로젝트 생성
|
||||
- [x] 1-2. Vue3 프로젝트 생성 (frontend 폴더)
|
||||
- [x] 1-3. 빌드 연동 (Vue → static 폴더로)
|
||||
- [x] 1-4. SQLite 연동 확인
|
||||
- [x] 1-5. 앱 실행 시 브라우저 자동 오픈
|
||||
#### Backend
|
||||
- [x] Spring Boot 3.2 프로젝트 설정
|
||||
- [x] SQLite 연동 (JPA)
|
||||
- [x] DB 스키마 설계 (6개 Entity)
|
||||
- [x] 서버/로그경로/패턴/설정 CRUD API
|
||||
- [x] 비밀번호/passphrase 암호화
|
||||
- [x] SFTP 연결 (비밀번호 / 키 파일)
|
||||
- [x] 연결 테스트 API
|
||||
- [x] 로그 파싱 + 패턴 매칭 엔진
|
||||
- [x] 에러 저장 (컨텍스트 포함)
|
||||
- [x] 분석 실행 API (SSE 진행상황)
|
||||
- [x] HTML/TXT 리포트 생성
|
||||
- [x] 1개월 이내 파일만 분석
|
||||
- [x] 스캔 후 VACUUM 자동 실행
|
||||
- [x] 통계 API (월별/일별/시간대별)
|
||||
|
||||
### Step 2. DB 스키마 설계
|
||||
|
||||
- [x] 2-1. servers 테이블 (SFTP 서버 정보)
|
||||
- [x] 2-2. server_log_paths 테이블 (서버별 로그 경로, 1:N)
|
||||
- [x] 2-3. patterns 테이블 (에러 패턴 정의)
|
||||
- [x] 2-4. scan_history 테이블 (분석 실행 이력)
|
||||
- [x] 2-5. error_logs 테이블 (검출된 에러)
|
||||
- [x] 2-6. settings 테이블 (전역 설정, key-value)
|
||||
|
||||
### Step 3. Backend - 기본 CRUD API
|
||||
|
||||
- [x] 3-1. 서버 관리 API (CRUD)
|
||||
- [x] 3-2. 로그 경로 관리 API
|
||||
- [x] 3-3. 패턴 관리 API (CRUD)
|
||||
- [x] 3-4. 설정 API
|
||||
- [x] 3-5. 비밀번호/passphrase 암호화 유틸
|
||||
|
||||
### Step 4. Backend - 핵심 기능
|
||||
|
||||
- [x] 4-1. SFTP 연결 (비밀번호 / 키 파일)
|
||||
- [x] 4-2. 연결 테스트 API
|
||||
- [x] 4-3. 파일 목록 조회 (마지막 분석 이후 파일)
|
||||
- [x] 4-4. 파일 다운로드
|
||||
- [x] 4-5. 로그 파싱 + 패턴 매칭 엔진
|
||||
- [x] 4-6. 에러 저장 (컨텍스트 포함)
|
||||
- [x] 4-7. 분석 실행 API (진행상황 SSE 또는 WebSocket)
|
||||
|
||||
### Step 5. Backend - 내보내기
|
||||
|
||||
- [x] 5-1. HTML 리포트 생성
|
||||
- [x] 5-2. TXT 리포트 생성
|
||||
- [x] 5-3. 내보내기 API
|
||||
|
||||
### Step 6. Frontend - 공통
|
||||
|
||||
- [x] 6-1. 레이아웃 (헤더, 사이드메뉴)
|
||||
- [x] 6-2. 라우터 설정
|
||||
- [x] 6-3. API 클라이언트 (axios)
|
||||
- [x] 6-4. 공통 컴포넌트 (테이블, 모달, 폼)
|
||||
|
||||
### Step 7. Frontend - 화면 개발
|
||||
|
||||
- [x] 7-1. 대시보드 (서버 목록 + 실행 + 진행상황)
|
||||
- [x] 7-2. 에러 이력 (필터 + 목록 + 상세보기)
|
||||
- [x] 7-3. 서버 관리 (목록 + 추가/수정 폼)
|
||||
- [x] 7-4. 패턴 관리 (목록 + 추가/수정 + 테스트)
|
||||
- [x] 7-5. 설정
|
||||
|
||||
### Step 8. 테스트 및 마무리
|
||||
|
||||
- [ ] 8-1. 로컬 SFTP 서버로 테스트 (Docker)
|
||||
- [ ] 8-2. 실제 로그 샘플로 패턴 검증
|
||||
- [ ] 8-3. 단일 jar 빌드
|
||||
- [ ] 8-4. 실행 스크립트 (bat 파일)
|
||||
#### Frontend
|
||||
- [x] Vue 3 + Vite 프로젝트 설정
|
||||
- [x] 레이아웃 (헤더, 사이드메뉴)
|
||||
- [x] 라우터 설정
|
||||
- [x] API 클라이언트 (axios)
|
||||
- [x] 공통 컴포넌트 (Card, DataTable, Modal, FormInput, Badge, Button)
|
||||
- [x] 대시보드 (서버 카드, 30일 차트, 분석 실행, 진행상황)
|
||||
- [x] 에러 이력 (서버 선택, 트리 탐색, 페이지네이션, 상세보기)
|
||||
- [x] 월별 현황 (일별 차트, 이전/다음)
|
||||
- [x] 일별 현황 (15분 단위 차트, 이전/다음)
|
||||
- [x] 서버 관리 (카드 UI, 분석 실행, 진행상황, 로그 경로 모달)
|
||||
- [x] 패턴 관리 (카드 UI, 테스트 모달)
|
||||
- [x] 설정 (내보내기 경로, 보관 기간)
|
||||
- [x] Chart.js + datalabels 플러그인
|
||||
|
||||
---
|
||||
|
||||
## 작업 순서
|
||||
## TODO
|
||||
|
||||
```
|
||||
Step 1 → Step 2 → Step 3 → Step 6 (공통)
|
||||
↓
|
||||
Step 7-3, 7-4 (서버/패턴 관리)
|
||||
↓
|
||||
Step 4 (핵심 기능)
|
||||
↓
|
||||
Step 7-1 (대시보드 + 실행)
|
||||
↓
|
||||
Step 7-2 (에러 이력)
|
||||
↓
|
||||
Step 5, 7-5 (내보내기, 설정)
|
||||
↓
|
||||
Step 8 (테스트/빌드)
|
||||
```
|
||||
### 1. 에러를 AI 분석을 통해 서버별 일일 리포트 만드는 기능
|
||||
- [ ] OpenAI API 연동
|
||||
- [ ] 일일 에러 요약 생성
|
||||
- [ ] 에러 원인 분석 및 해결 방안 제시
|
||||
- [ ] 서버별 리포트 자동 생성
|
||||
- [ ] 리포트 이메일 발송 (선택)
|
||||
|
||||
---
|
||||
|
||||
@@ -161,13 +193,15 @@ Step 1 → Step 2 → Step 3 → Step 6 (공통)
|
||||
| 일시 | 내용 |
|
||||
|------|------|
|
||||
| 2025-01-06 | 최초 작성, 요구사항 정리 |
|
||||
| 2025-01-06 | Step 1 완료 (Spring Boot, Vue3, SQLite, 빌드 연동, 브라우저 자동 오픈) |
|
||||
| 2025-01-06 | Step 2 완료 (DB 스키마 설계 - 6개 Entity 생성) |
|
||||
| 2025-01-06 | Step 3 완료 (Backend CRUD API - Repository, Service, Controller) |
|
||||
| 2025-01-06 | Step 6 완료 (Frontend 공통 - 레이아웃, 라우터, API, 공통컴포넌트) |
|
||||
| 2025-01-06 | Step 7-3, 7-4 완료 (서버 관리, 패턴 관리 화면) |
|
||||
| 2025-01-06 | Step 4 완료 (Backend 핵심기능 - SFTP, 스캔엔진, 에러로그) |
|
||||
| 2025-01-06 | Step 7-1, 7-2 완료 (대시보드, 에러 이력 화면) |
|
||||
| 2025-01-06 | Step 5, 7-5 완료 (내보내기 HTML/TXT, 설정 화면) |
|
||||
| 2025-01-06 19:05:00 | TEST_GUIDE.md 작성 (테스트 가이드) |
|
||||
| 2025-01-06 19:23:00 | Frontend 빌드 + Backend 실행 테스트 성공 |
|
||||
| 2025-01-06 | Step 1~6 완료 (기본 프로젝트 구조) |
|
||||
| 2025-01-06 | Step 7 완료 (모든 화면 개발) |
|
||||
| 2025-01-06 | TEST_GUIDE.md 작성 |
|
||||
| 2025-01-06 | Frontend 빌드 + Backend 실행 테스트 성공 |
|
||||
| 2025-01-07 | 에러 이력 정렬, 페이지당 100건, 전체 페이지 가로 해상도 최적화 |
|
||||
| 2025-01-07 | 에러 이력 개선 (서버 선택, 트리 구조 2단계, 검색 로직) |
|
||||
| 2025-01-07 | 1개월 이내 파일만 분석 |
|
||||
| 2025-01-07 | 통계 페이지 구현 (월별/일별 현황, 차트 datalabels) |
|
||||
| 2025-01-07 | 대시보드 서버별 30일 차트 추가 |
|
||||
| 2025-01-07 | SQLite VACUUM 자동화 (스캔 후 실행) |
|
||||
| 2025-01-07 | 서버/패턴 관리 UI 개선 (카드 형태) |
|
||||
| 2025-01-07 | 서버 관리에 분석 실행 + 진행상황 표시 추가 |
|
||||
|
||||
Reference in New Issue
Block a user