andry968/log_analyzer_V2

GitHub: andry968/log_analyzer_V2

一个基于 Go 的 Web 仪表盘日志分析器,解决服务器认证日志的实时监控与可视化分析问题。

Stars: 0 | Forks: 0

# SSH Auth Log Analyzer — Web UI 一个用于 `analyzer.go` + `log_feeder.sh` 管道的 Web 仪表盘。 ## 项目结构 ``` analyzer/ ├── analyzer.go # (existing) core log parser & alert engine ├── log_feeder.sh # (existing) log feeder with TZ/time-range filter ├── server.go # NEW — Go HTTP server + API └── static/ └── index.html # NEW — web dashboard ``` ## 快速开始 ``` # 1. 构建服务器 go build -o server server.go # 2. 运行它 sudo ./server # → http://localhost:8080 # 可选:更改端口 PORT=9090 sudo ./server ``` ## 工作原理 ### 静态模式 1. 在浏览器中打开 http://localhost:8080 2. 切换到 **静态文件**(默认) 3. 拖放或上传任意 `auth.log` 文件 4. 服务器通过 `log_feeder.sh`(如果设置了时区/时间范围)进行管道传输, 使用 `analyzer.go` 中的相同正则表达式解析,并返回 JSON 5. 仪表盘即时渲染 — 时间线、饼图、暴力破解进度条、完整表格 ### 实时流模式 1. 切换到右上角的 **实时流** 2. 服务器通过 SSE 在 `/var/log/auth.log` 上运行 `log_feeder.sh -lv` 3. 事件实时流入仪表盘 4. 所有图表在每条新事件时更新 ## API 端点 | 方法 | 路径 | 描述 | |--------|------|-------------| | POST | `/api/upload` | 上传日志文件,返回 `AnalysisResult` JSON | | GET | `/api/live` | 实时日志事件的 SSE 流 | ### 上传请求 ``` POST /api/upload Content-Type: multipart/form-data X-Threshold: 5 (optional, default 5) Fields: logfile — the log file tz — timezone e.g. UTC+7 (optional) tr — time range e.g. 08:00-17:00 (optional) ``` ### 实时流参数 ``` GET /api/live?threshold=5&tz=UTC+7&tr=08:00-17:00 ``` ### 响应 JSON 结构 ``` { "events": [ { "ts": "2026-04-01 08:12:05", "type": "ssh_failed", "user": "root", "ip": "192.168.1.45", "extra": "" } ], "summary": { "ssh_failed": 42, "ssh_success": 3, "invalid_user": 11, "su_success": 1, "su_failed": 0, "sudo_success": 2, "sudo_failed": 0, "brute_alerts": 2, "unique_ips": 7 }, "hourly": { "failed": [0,0,...], "success": [0,0,...], "invalid": [0,0,...] }, "top_ips": [ { "ip": "192.168.1.45", "count": 18, "is_alert": true } ], "brute_ips": [...] } ``` ## 仪表盘功能 - **模式切换** — 右上角:静态文件 / 实时流 - **时间线条形图** — 每小时堆叠的 SSH 活动(失败 / 成功 / 无效) - **环形图** — 所有事件类型的概览及百分比 - **暴力破解进度条** — 顶部攻击 IP 列表带进度条;红色 = 超过阈值 - **暴力破解阈值滑块** — 可调范围 2 到 30,更新图表即时生效 - **时区选择器** — UTC、UTC+7、UTC+8、UTC+9、UTC±其他 - **时间范围过滤器** — HH:MM-HH:MM,支持午夜循环(例如 22:00-02:00) - **完整日志表格** — 所有解析事件,带事件类型标签,可滚动 - **拖放** — 可将日志文件直接拖到上传区域 ## 无服务器回退方案 如果 Go 服务器未运行,浏览器会自动回退到 客户端解析 — 直接打开 `static/index.html` 并上传文件。 所有图表仍可使用,但会跳过通过 `log_feeder.sh` 的时区转换。 ## 要求 - Go 1.18+ - `bash` + 与二进制文件同目录下的 `log_feeder.sh` - 对实时模式读取 `/var/log/auth.log` 的权限(可能需要 `sudo`)
标签:Go 后端, HTTP API, SEO: Web 安全仪表盘, SEO: 日志分析工具, SSE, SSH 登录检测, Web 仪表盘, 全文搜索, 前端可视化, 单页应用, 后端开发, 多图表, 多模态安全, 实时流, 审计日志, 数据可视化, 文件上传, 日志审计, 日志管道, 时区处理, 时间线, 时间范围过滤, 服务端渲染, 权限提升检测, 柱状图, 树洞配置, 正则解析, 特权账号监控, 登录审计, 阈值告警, 静态文件服务, 饼图