mirror of
https://github.com/TwiN/gatus.git
synced 2025-02-16 10:20:00 +01:00
use the new store in the watchdog
This commit is contained in:
parent
c3bc375ff1
commit
f8e1fc25a4
@ -10,13 +10,11 @@ import (
|
|||||||
"github.com/TwinProduction/gatus/config"
|
"github.com/TwinProduction/gatus/config"
|
||||||
"github.com/TwinProduction/gatus/core"
|
"github.com/TwinProduction/gatus/core"
|
||||||
"github.com/TwinProduction/gatus/metric"
|
"github.com/TwinProduction/gatus/metric"
|
||||||
|
"github.com/TwinProduction/gatus/storage"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
serviceStatuses = make(map[string]*core.ServiceStatus)
|
store = storage.NewInMemoryStore()
|
||||||
|
|
||||||
// serviceStatusesMutex is used to prevent concurrent map access
|
|
||||||
serviceStatusesMutex sync.RWMutex
|
|
||||||
|
|
||||||
// monitoringMutex is used to prevent multiple services from being evaluated at the same time.
|
// monitoringMutex is used to prevent multiple services from being evaluated at the same time.
|
||||||
// Without this, conditions using response time may become inaccurate.
|
// Without this, conditions using response time may become inaccurate.
|
||||||
@ -26,18 +24,16 @@ var (
|
|||||||
// GetJSONEncodedServiceStatuses returns a list of core.ServiceStatus for each services encoded using json.Marshal.
|
// GetJSONEncodedServiceStatuses returns a list of core.ServiceStatus for each services encoded using json.Marshal.
|
||||||
// The reason why the encoding is done here is because we use a mutex to prevent concurrent map access.
|
// The reason why the encoding is done here is because we use a mutex to prevent concurrent map access.
|
||||||
func GetJSONEncodedServiceStatuses() ([]byte, error) {
|
func GetJSONEncodedServiceStatuses() ([]byte, error) {
|
||||||
serviceStatusesMutex.RLock()
|
serviceStatuses := store.GetAll()
|
||||||
data, err := json.Marshal(serviceStatuses)
|
data, err := json.Marshal(serviceStatuses)
|
||||||
serviceStatusesMutex.RUnlock()
|
|
||||||
return data, err
|
return data, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetUptimeByServiceGroupAndName returns the uptime of a service based on its group and name
|
// GetUptimeByServiceGroupAndName returns the uptime of a service based on its group and name
|
||||||
func GetUptimeByServiceGroupAndName(group, name string) *core.Uptime {
|
func GetUptimeByServiceGroupAndName(group, name string) *core.Uptime {
|
||||||
key := fmt.Sprintf("%s_%s", group, name)
|
key := fmt.Sprintf("%s_%s", group, name)
|
||||||
serviceStatusesMutex.RLock()
|
serviceStatuses := store.GetAll()
|
||||||
serviceStatus, exists := serviceStatuses[key]
|
serviceStatus, exists := serviceStatuses[key]
|
||||||
serviceStatusesMutex.RUnlock()
|
|
||||||
if !exists {
|
if !exists {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -93,13 +89,5 @@ func monitor(service *core.Service) {
|
|||||||
|
|
||||||
// UpdateServiceStatuses updates the slice of service statuses
|
// UpdateServiceStatuses updates the slice of service statuses
|
||||||
func UpdateServiceStatuses(service *core.Service, result *core.Result) {
|
func UpdateServiceStatuses(service *core.Service, result *core.Result) {
|
||||||
key := fmt.Sprintf("%s_%s", service.Group, service.Name)
|
store.Insert(service, result)
|
||||||
serviceStatusesMutex.Lock()
|
|
||||||
serviceStatus, exists := serviceStatuses[key]
|
|
||||||
if !exists {
|
|
||||||
serviceStatus = core.NewServiceStatus(service)
|
|
||||||
serviceStatuses[key] = serviceStatus
|
|
||||||
}
|
|
||||||
serviceStatus.AddResult(result)
|
|
||||||
serviceStatusesMutex.Unlock()
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user