# 监控系统全面升级实施方案 > **For Hermes:** Execute phase by phase, each phase is independently deployable. **Goal:** 构建 4 大监控模块:主机监控、中间件监控、SNMP 设备监控、站点拨测 **架构:** Agent 扩展采集器 → Backend 新增路由/处理器 → 前端新建监控面板 **Tech Stack:** Go (Agent/Backend), React+TypeScript (Frontend), MySQL+Redis (Storage), gosnmp (SNMP library) --- ## Phase 1: Agent 指标扩展 + 主机监控仪表盘 🖥️ ### Task 1.1: Agent 新增采集器 - 网络指标 **Files:** - Create: `agent/collector/network.go` - Modify: `agent/model/model.go` - Modify: `agent/main.go` **网络指标采集:** - 并发连接数 (ESTABLISHED via /proc/net/sockstat) - TIME_WAIT 连接数 - 网卡 rx_bytes/s, tx_bytes/s(两次采集差值 / 间隔) - 网卡名列表和速率 ### Task 1.2: Agent 新增采集器 - 磁盘 IO **Files:** - Create: `agent/collector/diskio.go` - Modify: `agent/model/model.go` **磁盘 IO 指标:** - 读取 BPS (bytes/s) - 写入 BPS (bytes/s) - 读取 IOPS (count/s) - 写入 IOPS (count/s) ### Task 1.3: Agent 新增采集器 - 进程监控 **Files:** - Create: `agent/collector/process.go` - Modify: `agent/model/model.go` **进程监控:** - Top N 进程 CPU/内存使用 - 进程总数 - 僵尸进程数 ### Task 1.4: Agent 新增采集器 - 系统信息(启动时一次) **Files:** - Create: `agent/collector/system.go` - Modify: `agent/model/model.go` **系统信息:** - OS 版本 (cat /etc/os-release) - 内核版本 (uname -r) - 运行时间 (uptime) - ulimit -n (nofile 上限) - ulimit -u (nproc 上限) ### Task 1.5: Backend - 扩展 AgentReport 模型 **Files:** - Modify: `backend/internal/models/agent.go` - Modify: `backend/internal/api/handlers/agent.go` (ReceiveReport) **扩展字段:** - NetworkInfo JSON (net_connections, net_rx_bps, net_tx_bps, nic_name) - DiskIOInfo JSON (read_bps, write_bps, read_iops, write_iops) - ProcessInfo JSON (top_processes, total_proc, zombie_count) - SystemInfo JSON (os_version, kernel, uptime, ulimit_nofile, ulimit_nproc) ### Task 1.6: Backend - 主机监控 API **Files:** - Create: `backend/internal/api/handlers/host_monitor.go` - Modify: `backend/internal/api/routes/routes.go` **API 端点:** - `GET /api/v1/monitor/host/:hostname/overview` - 主机概览 - `GET /api/v1/monitor/host/:hostname/metrics?metric=cpu&from=&to=` - 历史指标 - `GET /api/v1/monitor/host/:hostname/processes` - 进程列表 - `GET /api/v1/monitor/host/:hostname/network` - 网络指标 ### Task 1.7: Frontend - 主机监控面板 **Files:** - Create: `frontend/src/pages/HostMonitor.tsx` - Create: `frontend/src/components/monitor/HostCard.tsx` - Create: `frontend/src/components/monitor/MetricChart.tsx` - Modify: `frontend/src/App.tsx` (add route /monitor/host) **展示内容:** - 主机卡片:CPU/内存/磁盘使用率仪表盘 - 趋势图:CPU/内存/磁盘 5m/1h/6h/24h - 网络:并发连接数、网卡带宽趋势 - 进程 TOP 10 表格 --- ## Phase 2: 中间件监控 🔌 ### Task 2.1: Agent 新增采集器 - Redis **Files:** - Create: `agent/collector/redis.go` - Modify: `agent/model/model.go` **Redis 指标(需要配置 host:port:password):** - 连接数 (connected_clients) - 内存使用 (used_memory) - 命中率 (keyspace_hits / (hits + misses)) - Key 数量 - 慢查询数 - QPS (instantaneous_ops_per_sec) ### Task 2.2: Agent 新增采集器 - MySQL **Files:** - Create: `agent/collector/mysql.go` **MySQL 指标:** - 当前连接数 / 最大连接数 - QPS (Questions 差值) - 慢查询数 - Buffer Pool 命中率 - 复制延迟(如有) ### Task 2.3: Backend - 中间件监控 API + 配置管理 **Files:** - Create: `backend/internal/api/handlers/middleware_monitor.go` - Create: `backend/internal/models/middleware_config.go` (RedisConfig, MySQLConfig) - Modify: `backend/internal/api/routes/routes.go` **API:** - `POST /api/v1/monitor/middleware/config` - 配置中间件认证 - `GET /api/v1/monitor/middleware/redis/:hostname` - Redis 指标 - `GET /api/v1/monitor/middleware/mysql/:hostname` - MySQL 指标 ### Task 2.4: Frontend - 中间件监控面板 **Files:** - Create: `frontend/src/pages/MiddlewareMonitor.tsx` --- ## Phase 3: SNMP 设备监控 📡 ### Task 3.1: Backend - SNMP 采集引擎 + OID 模板系统 **Files:** - Create: `backend/internal/api/handlers/snmp_monitor.go` - Create: `backend/internal/models/snmp_template.go` - Create: `backend/pkg/snmp/collector.go` (uses gosnmp) - Add dep: `github.com/gosnmp/gosnmp` **SNMP 模板系统:** - 模板包含一组 OID → 指标名映射 - 预置模板:Cisco 交换机、H3C 交换机、华为交换机、服务器 iLO/iDRAC - 用户可自定义 OID 模板 ### Task 3.2: Backend - SNMP 定时采集任务 **Files:** - Create: `backend/internal/scheduler/snmp_scheduler.go` **定时采集:** - 每 5 分钟对配置的 SNMP 设备执行采集 - 存储到 agent_reports 表(type=snmp) ### Task 3.3: Frontend - SNMP 设备管理 + 监控面板 **Files:** - Create: `frontend/src/pages/SNMPMonitor.tsx` - Create: `frontend/src/components/monitor/SNMPDeviceCard.tsx` --- ## Phase 4: 站点拨测 🌐 ### Task 4.1: Backend - 拨测引擎 **Files:** - Create: `backend/internal/api/handlers/site_monitor.go` - Create: `backend/internal/models/site_task.go` - Create: `backend/pkg/probe/` (HTTP, PING, WebSocket, DNS, TCP, UDP, SMTP, POP3, FTP probes) **8 种拨测类型实现:** - HTTP(S): GET/POST,检查状态码 + 响应时间 + 正则匹配 body - PING: ICMP echo - WebSocket: 连接 + 心跳 - DNS: 解析时间 + 结果验证 - TCP: 端口连通性 - UDP: 端口连通性 - SMTP: 连接 + STARTTLS - POP3: 连接 + 认证 - FTP: 连接 + 登录 ### Task 4.2: Backend - 拨测定时任务 **Files:** - Modify: `backend/internal/scheduler/` (add probe scheduler) ### Task 4.3: Frontend - 站点拨测管理面板 **Files:** - Create: `frontend/src/pages/SiteMonitor.tsx` - Create: `frontend/src/components/monitor/ProbeTaskForm.tsx` - Create: `frontend/src/components/monitor/ProbeResultChart.tsx` **展示内容:** - 拨测任务列表(类型、URL、频率、状态) - 响应时间趋势图 - 可用率统计 - 告警配置 --- ## Phase 5: 导航重构 🧭 ### Task 5.1: 导航结构重组 **Files:** - Modify: `frontend/src/components/layout/MainLayout.tsx` 或 Sidebar **新导航结构:** ``` 📊 监控告警 ├── 🖥️ 主机监控 /monitor/host ├── 🔌 中间件监控 /monitor/middleware ├── 📡 SNMP 监控 /monitor/snmp ├── 🌐 站点拨测 /monitor/site ├── 📈 Agent 监控 /agent-monitor (已有) ├── 🚨 告警中心 /alert-center (已有) └── 📜 告警规则 /agent-alerts (已有) ``` --- ## 执行顺序 1. **Phase 1**(最优先,用户当前最需要) → Agent 扩展网络/磁盘IO/进程/系统信息 → 前端主机监控面板 2. **Phase 2** → 中间件监控 3. **Phase 3** → SNMP 设备监控(较复杂,需 gosnmp 依赖) 4. **Phase 4** → 站点拨测 5. **Phase 5** → 导航重构(收尾)