# SwitchMonitor **Repository Path**: you1217/SwitchMonitor ## Basic Information - **Project Name**: SwitchMonitor - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 3 - **Created**: 2026-08-20 - **Last Updated**: 2026-08-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SwitchMonitor 交换机监控系统 > 轻量级、高可用的企业级交换机监控与 NetDevOps 自动化运维平台,跑通"数据采集 → 时序存储 → 阈值告警 → 可视化展示 → 自动化巡检与安全审计"完整闭环。 > 支持多协议(SNMP + CLI + ICMP + Trap + Syslog)、PoE 以太网供电控制、配置合规审计、24/48口拟真前面板矩阵、NOC 驾驶舱大屏。 当前版本:**v2.1** ## 文档导航 - [说明文档.md](./说明文档.md) — 项目全生命周期管理载体 - [docs/v2.1/RELEASE_NOTES_v2.1.md](./docs/v2.1/RELEASE_NOTES_v2.1.md) — **v2.1 发布说明与核心特性** - [docs/v2.1/TASK_v2.1.md](./docs/v2.1/TASK_v2.1.md) — **v2.1 任务执行与交付跟踪** - [docs/v1.0/](./docs/v1.0/) - [ALIGNMENT_v1.0.md](./docs/v1.0/ALIGNMENT_v1.0.md) — 需求与边界对齐 - [CONSENSUS_v1.0.md](./docs/v1.0/CONSENSUS_v1.0.md) — 共识文档 - [DESIGN_v1.0.md](./docs/v1.0/DESIGN_v1.0.md) — 系统架构与模块设计 - [TASK_v1.0.md](./docs/v1.0/TASK_v1.0.md) — 任务拆分 ## 技术栈 - **后端**:Go 1.25 / Gin / GORM(v2) / gosnmp / influxdb-client-go / pro-bing - **前端**:React 18 / Vite 5 / TypeScript / ECharts / reactflow / @xterm/xterm - **存储**:SQLite(开发)/ PostgreSQL(生产) + InfluxDB 2.x(时序) - **告警**:钉钉 / 飞书 / 企业微信 / 邮件 - **部署**:Docker / docker-compose ## 核心功能 - **全协议网络监控**: - **SNMP 状态采集**: 端口流量/错包、CPU、内存、温度、风扇、电源、传感器;基于 `sysObjectID` 的 OID 自动画像 + 自愈回写,无需改代码适配 Cisco / Huawei / H3C / Ruijie / ZTE 等设备; - **ICMP / Ping 存活与抖动**: 15s 高频 Ping 探测引擎,计算网络时延、丢包率与 Jitter 抖动时序; - **SNMP Trap (UDP 162)**: 实时捕获 LinkUp / LinkDown / ColdStart / WarmStart 事件并广播; - **Syslog (UDP 514)**: RFC 3164/5424 日志集中收集检索与告警级别映射; - **PoE 以太网供电监控与控制**: 端口供电功率与负荷采集,支持远程硬断电重启与开关供电; - **NetDevOps 自动化运维**: - **批量 CLI 执行与巡检**: 预设 4 套巡检模板、自动适配多厂商语法、一键导出 HTML 自动化巡检报告; - **安全基线合规审计**: 扫描弱口令、默认团体名、明文 Telnet 与 Syslog 配置,量化 0~100 分安全得分; - **配置备份与分时调度**: 支持单设备独立开启/关闭自动备份、专属执行时刻设定(分时巡检)、SSH/Telnet 自动/手动备份、gzip 压缩、双列差异对比与一键回滚; - **配置变更精细化告警**: 配置变更纳入告警规则引擎,支持按设备开关、自定义告警级别与指定通知推送渠道; - **工业级拟真可视化**: - **24/48 口物理前面板矩阵**: 19 英寸机架金属拟真面板,四重多模式 LED(Link/Speed/PoE/Traffic); - **网络拓扑与流量热力**: LLDP 自动拓扑、机房区域分组背景框、全网链路流量热力着色与流速粒子流动; - **NOC 大屏驾驶舱**: 专为运维中心设计的高清全屏大屏监控视图; - **安全与可观测性**: - **安全加固**: JWT 双令牌、登录失败限流锁定、图形验证码、敏感凭证 AES-256-GCM 加密; - **生命周期清理**: 每 24 小时自动清理过期告警、Trap/Syslog、审计日志与无效 Token; - **性能极致调优**: Vite Manual Chunks 细粒度分包,首屏体积缩减超 54%。 ## 目录结构 ``` switch-monitor/ ├── cmd/ │ ├── server/ # 主服务入口(main.go / seed.go) │ └── tools/ # 运维辅助工具集(23 个子命令,见下) ├── internal/ │ ├── alert/ # 告警引擎(阈值/聚合降噪/维护静默) │ ├── auth/ # 认证鉴权(JWT 双令牌/验证码/限流) │ ├── cli/ # CLI 采集(光模块 DDM 等 SNMP 拿不到的数据) │ ├── common/ # 通用工具 │ ├── config/ # 配置加载(.env + config.yaml) │ ├── configbackup/ # 配置备份/差异/回滚(多厂商) │ ├── crypto/ # 敏感字段 AES-256-GCM 加密 │ ├── database/ # GORM 连接与数据模型(SQLite/PostgreSQL) │ ├── discovery/ # 网络发现扫描器 │ ├── influx/ # InfluxDB 时序写入(支持热切换) │ ├── maintenance/ # 计划维护窗口(静默告警) │ ├── metrics/ # Prometheus exporter + 指标预测/基线 │ ├── mib/ # MIB 库解析(OID 匹配) │ ├── notify/ # 通知渠道(钉钉/飞书/企微/邮件) │ ├── report/ # 报表生成(Excel / PDF) │ ├── scheduler/ # 采集调度器(周期采集/拓扑/基线/报表) │ ├── server/ # Gin HTTP 路由装配与静态资源托管 │ ├── snmp/ # SNMP 采集客户端与解析(多厂商) │ ├── ssh/ # SSH/Telnet 客户端 │ ├── terminal/ # Web 终端会话管理 │ └── ws/ # WebSocket hub(实时告警推送) ├── web/ # 前端(React + Vite) ├── configs/ # 配置示例 ├── scripts/ # 部署/运维脚本 ├── docs/v1.0/ # 6A 工作流文档 ├── Dockerfile / docker-compose.yml ├── go.mod └── README.md ``` ## 快速开始 ### 方式一:本地运行 ```bash # 1. 准备环境变量 cp .env.example .env # 编辑 .env,填入你的配置(InfluxDB/PostgreSQL/Webhook 等) # 2. 下载依赖 go mod tidy # 3. 编译 go build -o bin/switch-monitor ./cmd/server # 4. 运行(首次启动会 seed 演示数据、默认 admin 用户) ./bin/switch-monitor # 5. 验证 curl http://localhost:8080/healthz ``` 前端(`web/`)单独以 Vite 开发服务器运行,或随 Docker 一起构建。 ### 方式二:Docker 部署 ```bash # 启动后端(8080) + 前端(80) docker compose up -d ``` > 注:`docker-compose.yml` 编排 backend 与 frontend 两个服务;InfluxDB / PostgreSQL 作为外部依赖需另行提供。 ### 服务子命令 ```bash ./bin/switch-monitor # 启动主服务(采集 + 告警 + HTTP API) ./bin/switch-monitor version # 输出版本信息 ./bin/switch-monitor help # 帮助 ./bin/switch-monitor default-config # 生成最小化 config.yaml 到 stdout ``` ### 运维工具(`cmd/tools`) 提供 23 个独立子命令,涵盖设备/厂商探测、MIB 工具、光模块查询、数据库运维、诊断等,例如: - 厂商探测:`probe-huawei` / `probe-h3c` / `probe-ruijie` / `probe-optical` 等 - MIB 工具:`mibdump` / `mibverify` - 数据库运维:`sqlite-exec` / `sqlite-query` / `fix-communities` / `reset-channels` - 诊断:`diag-profile` / `stage4-check` / `stage4-overview` ## 前端页面 - 仪表盘 `/dashboard`、NOC 大屏 `/dashboard/noc` - 设备管理 `/devices`(列表/新增/导入/发现/详情/端口/终端) - 拓扑图 `/topology` - MIB 库 `/mib-library` - 告警规则 `/alert-rules`、告警事件 `/alert-events` - 报表 `/reports`、维护窗口 `/maintenance-windows` - 通知渠道 `/notify-channels`、系统设置 `/settings` - 登录 `/login`(受 ProtectedRoute 保护) ## 当前进度 **阶段二:采集与告警闭环(已实现)** - [x] T1 项目骨架 - [x] T2 配置加载 - [x] T3 数据库连接(SQLite / PostgreSQL) - [x] T4 数据模型 - [x] T5 启动空服务 - [x] T6 SNMP 采集器(端口/CPU/内存/硬件/光模块/拓扑) - [x] T7 InfluxDB 写入 - [x] T8 采集调度器 - [x] 告警引擎 + 4 通道通知 - [x] 认证鉴权(JWT 双令牌) - [x] Web 前端(仪表盘/设备/拓扑/告警/报表等) - [x] 配置备份 / Web 终端 / 网络发现 - [x] Docker 部署 详细进度见 [说明文档.md](./说明文档.md)。