feat(monitor): M15 中间件监控 — Redis/MySQL 后端直连采集引擎

后端:
- 新增 controller/middleware_monitor.go (500+ 行) — CRUD + 测试连接 + 采集引擎
- 后台 goroutine 每 30s 自动连接 Redis/MySQL 采集指标
- Redis: go-redis v9 INFO+DBSIZE 命令采集 12 项指标
- MySQL: database/sql SHOW GLOBAL STATUS 采集 12 项指标
- 指标写入 MetricHistory 表,7 天自动清理
- 8 个 RESTful 路由注册到 routes.go

前端:
- MiddlewareMonitor.tsx 从只读卡片升级为完整管理页面
- 添加监控弹框(Redis/MySQL 类型选择+连接配置表单)
- 实例卡片操作栏(测试/编辑/删除) + 工具栏(立即采集/刷新)
- middlewareMonitorApi 8 个方法

验证: go build✅ npm build✅ 17/17 回归通过 Redis 12 指标✅ MySQL 12 指标✅
This commit is contained in:
attacker committed 2026-06-29 23:24:05 +08:00
1 parent 186ece6495
commit ed7a5c07a7
8 files changed
+1211 -132

No files matched your search

+15
View File
@@ -911,6 +911,21 @@ func Register(r *gin.Engine, db *gorm.DB, log *zap.Logger, cfg *config.Config, c
metricsGroup.GET("/top", metricsHandler.TopHosts)
}
// 中间件监控 — Redis/MySQL 后端直连采集 // Logan.Li
mwHandler := controller.NewMiddlewareMonitorHandler(db)
mwGroup := authorized.Group("/middleware-monitors")
{
mwGroup.GET("", mwHandler.ListMiddlewareTargets)
mwGroup.POST("", mwHandler.CreateMiddlewareTarget)
mwGroup.GET("/:id", mwHandler.GetMiddlewareTarget)
mwGroup.PUT("/:id", mwHandler.UpdateMiddlewareTarget)
mwGroup.DELETE("/:id", mwHandler.DeleteMiddlewareTarget)
mwGroup.POST("/:id/test", mwHandler.TestMiddlewareConnection)
mwGroup.POST("/collect", mwHandler.CollectNow)
mwGroup.GET("/:id/metrics", mwHandler.GetMiddlewareMetrics)
}
mwHandler.StartCollector(30) // 每 30s 采集一次
// SNMP 设备管理 — 网络设备/服务器硬件 // Logan.Li
snmpHandler := controller.NewSNMPHandler(db)
snmpGroup := authorized.Group("/snmp")