canoe-nginx-watch Nginx 监控看板
基于 Go + Vue 的轻量级 Nginx 实时监控看板,支持日志解析、流量统计、状态告警。 采用双层密钥鉴权设计,确保事故处置通道始终可用。
★ 18 Go 监控 运维 Vue

📌 简介

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。