Refactor: Integrate regional agents in service-operation

Integrate distributed monitoring agents for HTTP, PING, TCP, and DNS checks
This commit is contained in:
Tola Leng
2025-06-21 17:48:55 +07:00
parent ea95490f13
commit 57a65106cb
16 changed files with 422 additions and 40 deletions
+21 -10
View File
@@ -1,4 +1,3 @@
package monitoring
import (
@@ -10,19 +9,21 @@ import (
)
type MonitoringService struct {
pbClient *pocketbase.PocketBaseClient
activeServices map[string]*ServiceMonitor
mu sync.RWMutex
stopChan chan bool
isRunning bool
pbClient *pocketbase.PocketBaseClient
activeServices map[string]*ServiceMonitor
regionalMonitor *RegionalMonitor
mu sync.RWMutex
stopChan chan bool
isRunning bool
}
func NewMonitoringService(pbClient *pocketbase.PocketBaseClient) *MonitoringService {
return &MonitoringService{
pbClient: pbClient,
activeServices: make(map[string]*ServiceMonitor),
stopChan: make(chan bool),
isRunning: false,
pbClient: pbClient,
activeServices: make(map[string]*ServiceMonitor),
regionalMonitor: NewRegionalMonitor(pbClient),
stopChan: make(chan bool),
isRunning: false,
}
}
@@ -38,6 +39,9 @@ func (ms *MonitoringService) Start() {
ms.isRunning = true
log.Println("Starting monitoring service...")
// Start regional monitoring
ms.regionalMonitor.Start()
// Start monitoring all services from PocketBase
go ms.monitoringLoop()
}
@@ -53,6 +57,9 @@ func (ms *MonitoringService) Stop() {
log.Println("Stopping monitoring service...")
ms.isRunning = false
// Stop regional monitoring
ms.regionalMonitor.Stop()
// Stop all active monitors
for serviceID, monitor := range ms.activeServices {
ms.stopMonitor(serviceID, monitor)
@@ -61,6 +68,10 @@ func (ms *MonitoringService) Stop() {
ms.stopChan <- true
}
func (ms *MonitoringService) GetRegionalInfo() (string, string) {
return ms.regionalMonitor.GetRegionalInfo()
}
func (ms *MonitoringService) monitoringLoop() {
ticker := time.NewTicker(30 * time.Second) // Check for new services every 30 seconds
defer ticker.Stop()