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 仪表盘, 全文搜索, 前端可视化, 单页应用, 后端开发, 多图表, 多模态安全, 实时流, 审计日志, 数据可视化, 文件上传, 日志审计, 日志管道, 时区处理, 时间线, 时间范围过滤, 服务端渲染, 权限提升检测, 柱状图, 树洞配置, 正则解析, 特权账号监控, 登录审计, 阈值告警, 静态文件服务, 饼图