2026-01-07 01:48:31 +09:00
2026-01-07 01:41:17 +09:00
2026-01-07 01:14:51 +09:00
2026-01-07 01:41:17 +09:00
2026-01-07 01:41:17 +09:00
2026-01-06 21:44:36 +09:00
2026-01-07 01:41:17 +09:00
2026-01-07 01:42:27 +09:00
2026-01-07 01:14:51 +09:00
2026-01-06 21:44:36 +09:00
2026-01-06 21:44:36 +09:00
2026-01-06 21:44:36 +09:00
2026-01-07 01:48:31 +09:00
2026-01-06 21:44:36 +09:00
2026-01-07 01:14:51 +09:00
2026-01-06 21:44:36 +09:00

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 내보내기 경로, 보관 기간

폴더 구조

log-hunter/
├── src/                        # Spring Boot 소스
│   └── main/
│       ├── java/
│       │   └── research/loghunter/
│       │       ├── controller/ # REST API
│       │       ├── service/    # 비즈니스 로직
│       │       ├── repository/ # DB 접근
│       │       ├── entity/     # JPA Entity
│       │       └── dto/        # 데이터 전송 객체
│       └── resources/
│           └── static/         # Vue3 빌드 결과물
├── frontend/                   # Vue3 (개발용)
│   └── src/
│       ├── views/              # 페이지 컴포넌트
│       ├── components/         # 공통 컴포넌트
│       └── api/                # API 클라이언트
├── data/                       # SQLite DB
├── exports/                    # HTML/TXT 내보내기
├── start.sh                    # 실행 스크립트 (macOS/Linux)
├── start.bat                   # 실행 스크립트 (Windows)
├── build.gradle
└── settings.gradle

실행 방법

개발 모드

# Frontend 개발 서버 실행
cd frontend
npm run dev

# Backend 실행 (별도 터미널)
./gradlew bootRun

프로덕션 모드

# 통합 빌드 및 실행
./start.sh        # macOS/Linux
start.bat         # Windows

실행 시 동작

log-hunter.jar 실행
    ↓
내장 톰캣 (localhost:8080)
    ↓
자동으로 브라우저 열림
    ↓
웹 UI에서 서버별 분석 실행

작업 현황

완료된 기능

Backend

  • Spring Boot 3.2 프로젝트 설정
  • SQLite 연동 (JPA)
  • DB 스키마 설계 (6개 Entity)
  • 서버/로그경로/패턴/설정 CRUD API
  • 비밀번호/passphrase 암호화
  • SFTP 연결 (비밀번호 / 키 파일)
  • 연결 테스트 API
  • 로그 파싱 + 패턴 매칭 엔진
  • 에러 저장 (컨텍스트 포함)
  • 분석 실행 API (SSE 진행상황)
  • HTML/TXT 리포트 생성
  • 1개월 이내 파일만 분석
  • 스캔 후 VACUUM 자동 실행
  • 통계 API (월별/일별/시간대별)

Frontend

  • Vue 3 + Vite 프로젝트 설정
  • 레이아웃 (헤더, 사이드메뉴)
  • 라우터 설정
  • API 클라이언트 (axios)
  • 공통 컴포넌트 (Card, DataTable, Modal, FormInput, Badge, Button)
  • 대시보드 (서버 카드, 30일 차트, 분석 실행, 진행상황)
  • 에러 이력 (서버 선택, 트리 탐색, 페이지네이션, 상세보기)
  • 월별 현황 (일별 차트, 이전/다음)
  • 일별 현황 (15분 단위 차트, 이전/다음)
  • 서버 관리 (카드 UI, 분석 실행, 진행상황, 로그 경로 모달)
  • 패턴 관리 (카드 UI, 테스트 모달)
  • 설정 (내보내기 경로, 보관 기간)
  • Chart.js + datalabels 플러그인

TODO

1. 에러를 AI 분석을 통해 서버별 일일 리포트 만드는 기능

  • OpenAI API 연동
  • 일일 에러 요약 생성
  • 에러 원인 분석 및 해결 방안 제시
  • 서버별 리포트 자동 생성
  • 리포트 이메일 발송 (선택)

변경 이력

일시 내용
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 서버 관리에 분석 실행 + 진행상황 표시 추가
Description
No description provided
Readme 7 MiB
Languages
Java 54.1%
Vue 41.7%
JavaScript 2.9%
HTML 0.9%
Shell 0.4%