canoe-nginx-watch
Nginx 监控看板
基于 Go + Vue 的轻量级 Nginx 实时监控看板,支持日志解析、流量统计、状态告警。
采用双层密钥鉴权设计,确保事故处置通道始终可用。
📌 简介
canoe-nginx-watch 是一个基于 Go 后端 + Vue 前端构建的轻量级 Nginx 实时监控看板。 它通过解析 Nginx 访问日志,实时呈现流量统计、请求分布、状态码分布等关键指标, 并在异常发生时通过邮件发送告警通知。
项目采用独特的双层密钥鉴权设计理念:
web_api_key 保护所有页面和 API 的只读访问;
management_key 专门保护"影响异常发现能力的配置项"(如取消邮件告警),
而非所有写入操作。凡是可能阻碍事故及时处置的行为,均列为高危操作,
由 management_key 独立保护。
✨ 特性
- 实时日志解析 — 监听 Nginx access log,秒级更新
- 流量统计 — 按时间维度统计请求量、带宽、IP 分布
- 状态码监控 — 4xx/5xx 异常预警,支持自定义阈值
- 邮件告警 — 异常状态自动触发邮件通知
- 双层密钥鉴权 — 只读/管理分离,保障事故处置通道
- 响应式看板 — Vue 前端,支持 PC 和移动端
🏗 架构
┌─────────────────┐ ┌───────────────────┐ ┌──────────┐
│ Nginx Server │────▶│ canoe-nginx-watch │────▶│ Browser │
│ (access log) │ │ (Go + Vue) │ │ (Vue) │
└─────────────────┘ └───────────────────┘ └──────────┘
│
▼
┌──────────────┐
│ SMTP Mail │
│ (告警通知) │
└──────────────┘
🚀 快速开始
前置条件
- Go 1.18+
- Node.js 16+
- Nginx(需开启 access log)
克隆与运行
git clone https://github.com/your/canoe-nginx-watch.git cd canoe-nginx-watch # 后端 cd server go mod tidy go run main.go # 前端 cd ../web npm install npm run dev
🔐 鉴权配置
项目使用双层密钥鉴权体系,在 config.yaml 中配置:
web_api_key: "your-readonly-key" # 保护所有只读访问 management_key: "your-admin-key" # 保护高危操作(如取消告警)
设计哲学:取消邮件告警等行为属于"影响异常发现能力"的高危操作,
即使是在已登录状态下也需 management_key 二次确认,
确保不会因误操作导致事故遗漏。
📄 许可证
本项目基于 MIT 许可证开源。欢迎提交 Issue 和 PR。