diff --git a/backend.log b/backend.log new file mode 100644 index 0000000..c5ff168 --- /dev/null +++ b/backend.log @@ -0,0 +1,9 @@ +2025/04/02 06:06:40 {90 90 90} +2025/04/02 06:06:40 Starting backend server on port 8080... +2025/04/02 06:06:41 Alerts enabled: true +2025/04/02 06:06:43 Alerts enabled: false +2025/04/02 06:07:00 Updated limits - CPU: 5, Memory: 100, Disk: 100 +2025/04/02 06:07:01 Alerts enabled: true +2025/04/02 06:07:16 Received shutdown request +2025/04/02 06:07:16 Shutting down the server... +2025/04/02 06:07:16 Server stopped. diff --git a/backend/monitor b/backend/image similarity index 100% rename from backend/monitor rename to backend/image diff --git a/backend/monitor/monitor.go b/backend/monitor/monitor.go new file mode 100644 index 0000000..d50ef86 --- /dev/null +++ b/backend/monitor/monitor.go @@ -0,0 +1,58 @@ +package monitor + +import ( + "fmt" + "log" + "resource-monitor/backend/types" + "resource-monitor/backend/utils" + "sync" + "time" + + "github.com/gen2brain/beeep" +) + +var ( + AlertEnabled bool + Mu sync.Mutex + DefaultLimit = types.SetLimit{CPUThreshold: 90, MemoryThreshold: 90, DiskThreshold: 90} +) + +func sendAlert(resource string, usage float64) { + Mu.Lock() + defer Mu.Unlock() + + if !AlertEnabled { + return + } + + var threshold float64 + switch resource { + case "CPU": + threshold = DefaultLimit.CPUThreshold + case "Memory": + threshold = DefaultLimit.MemoryThreshold + case "Disk": + threshold = DefaultLimit.DiskThreshold + } + + if usage > threshold { + err := beeep.Alert(fmt.Sprintf("%s Alert", resource), fmt.Sprintf("%s usage is at %.2f%%!", resource, usage), "") + if err != nil { + log.Println("Error sending macOS notification:", err) + } + } +} + +func MonitorResources() { + for { + cpuUsage := utils.GetCPUUsage() + memUsage := utils.GetMemoryUsage() + diskUsage := utils.GetDiskUsage() + + sendAlert("CPU", cpuUsage) + sendAlert("Memory", memUsage) + sendAlert("Disk", diskUsage) + + time.Sleep(5 * time.Second) + } +} diff --git a/frontend/monitor b/frontend/image similarity index 100% rename from frontend/monitor rename to frontend/image diff --git a/frontend/output b/frontend/output deleted file mode 100755 index 4848ec5..0000000 Binary files a/frontend/output and /dev/null differ diff --git a/makefile b/makefile index 9d647eb..ea4daed 100644 --- a/makefile +++ b/makefile @@ -1,4 +1,4 @@ -BINARY_NAME = monitor +BINARY_NAME = image GO = go GOFMT = gofmt