ShaikSohel1/smart-log-analyzer-java

GitHub: ShaikSohel1/smart-log-analyzer-java

基于 Java 和 Spring Boot 的企业级日志安全分析平台,通过解析系统日志自动检测认证暴力破解等安全威胁并提供可视化风险报告。

Stars: 0 | Forks: 0

# 🛡️ 智能日志分析器(企业版) [![Java 17](https://img.shields.io/badge/Java-17-orange.svg)](https://www.oracle.com/java/) [![Spring Boot 3.4](https://img.shields.io/badge/Spring%20Boot-3.4.2-brightgreen.svg)](https://spring.io/projects/spring-boot) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE) [![Build Status](https://img.shields.io/badge/Build-Passing-success.svg)](#) 一款生产级的企业安全与运维日志监控应用,使用 **Java 17**、**Spring Boot 3.4**、**Spring Security**、**Spring Data JPA**、**H2 In-Memory DB**、**SLF4J/Logback**、**Swagger/OpenAPI 3**、**Docker** 以及现代化的 **Glassmorphic 响应式仪表盘**构建。 ## 🌟 执行摘要与功能 **智能日志分析器** 可解析系统日志文件,评估安全威胁(如 SSH/身份验证暴力破解尝试),计算 IP 地址的风险等级,跟踪运维错误,并持久化存储分析报告,以供审计和历史趋势报告使用。 ### 核心能力 - **多格式日志解析器**:高效解析日志文件(`.log`、`.txt`、`.out`),使用模式匹配 (`IpUtils`) 统计总日志数、错误数和密码验证失败条目。 - **动态威胁风险引擎**:将可疑 IP 划分为 **CRITICAL**、**HIGH**、**MEDIUM** 和 **LOW** 风险等级,并基于失败尝试阈值提供自动缓解建议。 - **企业级分层架构**:严格遵守 SOLID 设计原则,实现清晰的关注点分离和依赖注入。 - **全局异常处理**:在所有 endpoint 和异常场景中返回标准化的 JSON API 响应包装 (`ApiResponse`)。 - **结构化 SLF4J / Logback 日志记录**:配置了彩色控制台日志输出和按天滚动的文件 appender (`logs/loganalyzer.log`)。 - **交互式现代仪表盘**:具备响应式的暗黑/明亮玻璃拟态 UI,支持拖拽上传文件、实时 KPI 指标、交互式 Chart.js 可视化图表、可搜索的威胁表格、示例日志一键启动以及 JSON 报告导出。 - **OpenAPI 3 / Swagger 文档**:内嵌 Swagger UI(路径为 `/swagger-ui.html`),便于交互式探索 API。 - **Docker & Compose 就绪**:提供多阶段轻量级 Docker 镜像构建和 `docker-compose` 部署配置。 - **自动化 CI/CD**:通过 GitHub Actions 工作流实现 Maven 自动化测试与构建产物 (artifact) 打包。 ## 🏗️ 架构与包设计 应用程序遵循清晰的四层企业级架构: ``` com.sohel.loganalyzer ├── LoganalyzerApplication.java # Application Entry Point ├── config # OpenAPI Swagger Documentation Configuration ├── controller # REST API Layer with OpenAPI Annotations ├── dto # Data Transfer Objects & Standard ApiResponse Envelopes ├── exception # Custom Exceptions & @RestControllerAdvice Global Exception Handler ├── model # JPA Entities (LogReport) & Domain Result Objects ├── repository # Spring Data JPA Repository Interfaces ├── security # Spring Security Filter Chain & CORS Configuration ├── service # Service Interfaces & Implementations │ └── impl # StandardLogParser, IpRiskEvaluator, LogAnalyzerService ├── util # IP Regex Utilities, File Helpers (ByteArrayMultipartFile) └── validation # Multipart File Validator Component ``` ### 组件与数据流图 ``` graph TD Client[Web Browser / API Client] -->|HTTP Multipart POST| Controller[LogAnalyzerController] Controller -->|Validate File| Validator[LogFileValidator] Controller -->|Process File| Service[LogAnalyzerService] Service -->|Parse Log Stream| Parser[StandardLogParserServiceImpl] Parser -->|Extract IPs| IpUtil[IpUtils] Service -->|Evaluate Risk| Evaluator[IpRiskEvaluatorServiceImpl] Service -->|Save Analysis| Repo[LogReportRepository] Repo -->|Persist| H2[(H2 In-Memory DB)] Service -->|Return Response DTO| Controller Controller -->|ApiResponse wrapper| Client ``` ## 🚀 快速入门指南 ### 前置条件 - **Java JDK 17+** - **Maven 3.8+**(或使用项目自带的 `./mvnw`) - **Docker & Docker Compose**(可选,用于容器化执行) ### 使用 Maven 在本地运行 1. **克隆代码仓库:** git clone https://github.com/ShaikSohel1/smart-log-analyzer-java.git cd smart-log-analyzer-java 2. **运行单元测试与集成测试:** ./mvnw clean test 3. **启动应用程序:** ./mvnw spring-boot:run 4. **访问应用程序:** - 🌐 **仪表盘 UI**:`http://localhost:8080` - 📖 **Swagger UI 文档**:`http://localhost:8080/swagger-ui.html` - 🗄️ **H2 数据库控制台**:`http://localhost:8080/h2-console` ### 使用 Docker & Docker Compose 运行 在轻量级的容器化环境中构建并启动应用程序: ``` docker-compose up --build -d ``` 查看容器日志: ``` docker-compose logs -f ``` 停止容器: ``` docker-compose down ``` ## 📡 REST API 参考 所有 API 响应均遵循标准的 `ApiResponse` 包装 schema: ``` { "success": true, "message": "Log file analyzed successfully.", "status": 200, "timestamp": "2026-08-01T11:27:28.000", "data": { ... } } ``` ### Endpoints 概览 | Method | Endpoint | 描述 | | :--- | :--- | :--- | | `POST` | `/api/logs/analyze` | 上传日志文件 (`.log`, `.txt`) 进行分析与威胁评分 | | `GET` | `/api/logs/sample` | 立即分析内置的示例日志文件 | | `GET` | `/api/logs/history` | 获取最近 10 份分析报告的摘要 | | `GET` | `/api/logs/history/{id}`| 根据报告 ID 获取详细的报告内容 | ### 请求与响应示例 (`POST /api/logs/analyze`) **cURL 请求:** ``` curl -X POST "http://localhost:8080/api/logs/analyze" \ -H "accept: application/json" \ -H "Content-Type: multipart/form-data" \ -F "file=@sample.log" ``` **JSON 响应 Payload:** ``` { "success": true, "message": "Log file analyzed successfully.", "status": 200, "timestamp": "2026-08-01T11:27:28.019", "data": { "id": 1, "fileName": "sample.log", "fileSize": 345, "totalLogs": 12, "errorCount": 2, "failedLogins": 7, "suspiciousIpCount": 1, "overallStatus": "ELEVATED_RISK", "ipActivities": [ { "ipAddress": "192.168.1.10", "attemptCount": 6, "riskLevel": "MEDIUM", "recommendation": "Flag for security monitoring and enforce CAPTCHA / Rate limiting." } ], "processedAt": "2026-08-01T11:27:28.019" } } ``` ## 🧪 测试与代码质量 本项目包含 **17 个自动化单元测试和集成测试**,覆盖所有层级: - **单元测试**:`IpUtilsTest`、`LogFileValidatorTest`、`IpRiskEvaluatorServiceTest`、`StandardLogParserServiceTest` - **集成测试**:`LogAnalyzerControllerTest` (MockMvc)、`LoganalyzerApplicationTests` 通过命令行运行所有测试: ``` ./mvnw clean test ``` ## 💻 技术栈总结 - **核心**:Java 17, Spring Boot 3.4.2 - **安全**:Spring Security 6 (CORS, CSRF 规则, Headers) - **数据库**:H2 In-Memory Database, Spring Data JPA, Hibernate 6 - **校验**:Spring Boot Validation (Hibernate Validator) - **文档**:SpringDoc OpenAPI 3.0 (Swagger UI) - **日志**:SLF4J, Logback (彩色控制台输出 & 按天滚动的文件 Appender) - **前端**:HTML5, CSS3 Glassmorphism System, ES6+ JavaScript, Chart.js, FontAwesome - **DevOps**:Docker, Docker Compose, GitHub Actions CI
标签:AMSI绕过, Spring Boot, 域名枚举, 威胁检测, 无摄像头检测, 请求拦截, 运维监控