LogHunter
SFTP를 통해 원격 서버의 로그 파일을 수집하고, 등록된 패턴으로 에러를 검출하여 관리하는 데스크탑 애플리케이션
개요
- 목적: 폐쇄망 환경에서 여러 리눅스 서버의 로그를 수집하여 에러를 검출하고 관리
- 실행 환경: Windows / macOS / Linux
- 대상 서버: Linux (SFTP)
- 동작 방식: 필요 시 수동 실행 → 웹 UI에서 분석 실행 및 결과 조회
주요 기능
로그 수집 및 분석
- SFTP를 통한 로그 파일 수집 (비밀번호 / 키 파일 인증)
- 정규식 기반 에러 패턴 매칭
- 제외 패턴 지원 (오탐 방지)
- 에러 발생 전후 컨텍스트 캡처
- 1개월 이내 파일만 분석 (성능 최적화)
- 스캔 후 SQLite VACUUM 자동 실행 (DB 최적화)
대시보드
- 서버 목록 카드 형태 표시
- 서버별 최근 30일 에러 추이 차트
- 분석 실행 버튼 및 실시간 진행상황 표시
- 심각도별 색상 구분 (CRITICAL/ERROR/WARN)
에러 이력
- 전체 에러 조회/검색/필터
- 서버 선택 드롭다운
- 트리 구조 탐색 (경로 → 파일 2단계)
- 파일명 툴팁으로 전체 경로 표시
- 페이지당 100건, 최신순 정렬
- 상세보기 (컨텍스트 포함)
통계
- 월별 현황: 선택 월의 일별 에러 추이, 서버별 필터
- 일별 현황: 선택 일의 15분 단위 에러 추이, 서버별 필터
- 이전/다음 버튼으로 기간 이동
- 차트 막대 위 총합 표시
서버 관리
- 카드 형태 UI로 서버 정보 표시
- SFTP 서버 등록/수정/삭제
- 로그 경로 복수 등록 (경로, 파일 패턴, 설명)
- 연결 테스트
- 분석 실행 버튼 및 진행상황 표시
패턴 관리
- 카드 형태 UI로 패턴 정보 표시
- 에러 패턴 등록/수정/삭제
- 정규식 테스트 기능
- 심각도 설정 (CRITICAL/ERROR/WARN)
- 컨텍스트 라인 수 설정
내보내기
- HTML 리포트 생성
- TXT 리포트 생성
- 설정에서 내보내기 경로 지정
기술 스택
| 구분 |
기술 |
| Backend |
Spring Boot 3.2, Java 17 |
| Frontend |
Vue 3, Vite, Chart.js |
| Database |
SQLite (파일 DB) |
| SFTP |
JSch |
| 배포 |
단일 jar 파일 |
화면 구성
| # |
화면명 |
URL |
설명 |
| 1 |
대시보드 |
/ |
서버 카드, 30일 차트, 분석 실행 |
| 2 |
에러 이력 |
/errors |
전체 에러 조회, 트리 탐색, 상세보기 |
| 3 |
월별 현황 |
/stats/monthly |
월별 에러 통계 차트 |
| 4 |
일별 현황 |
/stats/daily |
일별 15분 단위 에러 차트 |
| 5 |
서버 관리 |
/servers |
서버 CRUD, 분석 실행, 로그 경로 관리 |
| 6 |
패턴 관리 |
/patterns |
패턴 CRUD, 테스트 |
| 7 |
설정 |
/settings |
내보내기 경로, 보관 기간 |
폴더 구조
실행 방법
개발 모드
프로덕션 모드
실행 시 동작
작업 현황
✅ 완료된 기능
Backend
Frontend
- Vue 3 + Vite 프로젝트 설정
- 레이아웃 (헤더, 사이드메뉴)
- 라우터 설정
- API 클라이언트 (axios)
- 공통 컴포넌트 (Card, DataTable, Modal, FormInput, Badge, Button)
- 대시보드 (서버 카드, 30일 차트, 분석 실행, 진행상황)
- 에러 이력 (서버 선택, 트리 탐색, 페이지네이션, 상세보기)
- 월별 현황 (일별 차트, 이전/다음)
- 일별 현황 (15분 단위 차트, 이전/다음)
- 서버 관리 (카드 UI, 분석 실행, 진행상황, 로그 경로 모달)
- 패턴 관리 (카드 UI, 테스트 모달)
- 설정 (내보내기 경로, 보관 기간)
- Chart.js + datalabels 플러그인
TODO
1. 에러를 AI 분석을 통해 서버별 일일 리포트 만드는 기능
변경 이력
| 일시 |
내용 |
| 2025-01-06 |
최초 작성, 요구사항 정리 |
| 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 |
서버 관리에 분석 실행 + 진행상황 표시 추가 |