diff --git a/service/api/api_v1/system/A_ENTER.go b/service/api/api_v1/system/A_ENTER.go index f1b8636..490e69e 100644 --- a/service/api/api_v1/system/A_ENTER.go +++ b/service/api/api_v1/system/A_ENTER.go @@ -9,4 +9,5 @@ type ApiSystem struct { RegisterApi RegisterApi NoticeApi NoticeApi ModuleConfigApi ModuleConfigApi + MonitorApi MonitorApi } diff --git a/service/api/api_v1/system/monitor.go b/service/api/api_v1/system/monitor.go new file mode 100644 index 0000000..e47308f --- /dev/null +++ b/service/api/api_v1/system/monitor.go @@ -0,0 +1,18 @@ +package system + +import ( + "sun-panel/api/api_v1/common/apiReturn" + "sun-panel/global" + + "github.com/gin-gonic/gin" +) + +type MonitorApi struct{} + +func (a *MonitorApi) GetAll(c *gin.Context) { + if value, ok := global.SystemMonitor.Get("value"); ok { + apiReturn.SuccessData(c, value) + return + } + apiReturn.Error(c, "failed") +} diff --git a/service/global/monitoer.go b/service/global/monitor.go similarity index 83% rename from service/global/monitoer.go rename to service/global/monitor.go index d35e431..a1f03f4 100644 --- a/service/global/monitoer.go +++ b/service/global/monitor.go @@ -7,6 +7,4 @@ type ModelSystemMonitor struct { DiskInfo []monitor.DiskInfo NetIOCountersInfo []monitor.NetIOCountersInfo MemoryInfo monitor.MemoryInfo - // NetIOCountersInfo monitor.NetIOCountersInfo - } diff --git a/service/initialize/systemMonitor/systemMonitor.go b/service/initialize/systemMonitor/systemMonitor.go index 43843fe..1b155f1 100644 --- a/service/initialize/systemMonitor/systemMonitor.go +++ b/service/initialize/systemMonitor/systemMonitor.go @@ -17,7 +17,10 @@ func Start(cacher cache.Cacher[global.ModelSystemMonitor], interval time.Duratio select { case <-ticker.C: go func() { - GetInfo() + monitorInfo := GetInfo() + // jsonByte, _ := json.Marshal(monitorInfo) + // fmt.Println("系统监控:", string(jsonByte)) + cacher.SetDefault("value", monitorInfo) }() } } diff --git a/service/lib/monitor/monitor.go b/service/lib/monitor/monitor.go index b7dff6f..7ab8419 100644 --- a/service/lib/monitor/monitor.go +++ b/service/lib/monitor/monitor.go @@ -10,29 +10,29 @@ import ( ) type CPUInfo struct { - CoreCount int32 - CPUNum int - Model string - Usages []float64 + CoreCount int32 `json:"coreCount"` + CPUNum int `json:"cpuNum"` + Model string `json:"model"` + Usages []float64 `json:"usages"` } type DiskInfo struct { - Mountpoint string - Total uint64 - Used uint64 - Free uint64 - UsedPercent float64 + Mountpoint string `json:"mountpoint"` + Total uint64 `json:"total"` + Used uint64 `json:"used"` + Free uint64 `json:"free"` + UsedPercent float64 `json:"usedPercent"` } type NetIOCountersInfo struct { - BytesSent uint64 - BytesRecv uint64 - Name string + BytesSent uint64 `json:"bytesSent"` + BytesRecv uint64 `json:"bytesRecv"` + Name string `json:"name"` } type MemoryInfo struct { - Total uint64 - Free uint64 + Total uint64 `json:"total"` + Free uint64 `json:"free"` } // 获取CPU信息 @@ -57,10 +57,10 @@ func GetMemoryInfo() (MemoryInfo, error) { // 获取内存信息 memInfo, err := mem.VirtualMemory() if err == nil { - return memoryInfo, err + memoryInfo.Free = memInfo.Free + memoryInfo.Total = memInfo.Total } - memoryInfo.Free = memInfo.Free - memoryInfo.Total = memInfo.Total + return memoryInfo, err } diff --git a/service/router/system/A_ENTER.go b/service/router/system/A_ENTER.go index 62e8b7c..c65dedf 100644 --- a/service/router/system/A_ENTER.go +++ b/service/router/system/A_ENTER.go @@ -11,4 +11,5 @@ func Init(routerGroup *gin.RouterGroup) { InitRegister(routerGroup) InitNoticeRouter(routerGroup) InitModuleConfigRouter(routerGroup) + InitMonitorRouter(routerGroup) } diff --git a/service/router/system/monitor.go b/service/router/system/monitor.go new file mode 100644 index 0000000..ced3291 --- /dev/null +++ b/service/router/system/monitor.go @@ -0,0 +1,19 @@ +package system + +import ( + "sun-panel/api/api_v1" + "sun-panel/api/api_v1/middleware" + + "github.com/gin-gonic/gin" +) + +func InitMonitorRouter(router *gin.RouterGroup) { + api := api_v1.ApiGroupApp.ApiSystem.MonitorApi + // r := router.Group("", middleware.LoginInterceptor) + + // 公开模式 + rPublic := router.Group("", middleware.PublicModeInterceptor) + { + rPublic.POST("/system/monitor/getAll", api.GetAll) + } +}