feat(cluster): add region affinity, Nodes TUI tab, and probe metrics
Phase 3 of distributed probing: - Add regions column to sites table for per-monitor probe affinity - Region-filtered probe assignments (empty regions = all probes) - New Nodes TUI tab showing connected probes with status/region/last-seen - Regions input field in site form for configuring probe affinity - Config-as-code support for regions (export/import/diff) - Prometheus upkeep_probe_up metric with per-node labels - Reindex TUI tabs: Sites, Alerts, Logs, Nodes, Users
This commit is contained in:
@@ -239,6 +239,7 @@ func monitorToSite(m Monitor, alertID, parentID int) models.Site {
|
||||
DNSServer: m.DNSServer,
|
||||
IgnoreTLS: m.IgnoreTLS,
|
||||
Paused: m.Paused,
|
||||
Regions: m.Regions,
|
||||
}
|
||||
|
||||
s.ExpiryThreshold = m.ExpiryThreshold
|
||||
@@ -346,6 +347,9 @@ func diffSite(existing, desired models.Site) string {
|
||||
if existing.Paused != desired.Paused {
|
||||
diffs = append(diffs, fmt.Sprintf("paused: %v -> %v", existing.Paused, desired.Paused))
|
||||
}
|
||||
if existing.Regions != desired.Regions {
|
||||
diffs = append(diffs, fmt.Sprintf("regions: %s -> %s", existing.Regions, desired.Regions))
|
||||
}
|
||||
return strings.Join(diffs, ", ")
|
||||
}
|
||||
|
||||
|
||||
@@ -126,6 +126,10 @@ func siteToMonitor(s models.Site, alertIDToName map[int]string) Monitor {
|
||||
m.IgnoreTLS = s.IgnoreTLS
|
||||
m.Paused = s.Paused
|
||||
|
||||
if s.Regions != "" {
|
||||
m.Regions = s.Regions
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
|
||||
@@ -30,5 +30,6 @@ type Monitor struct {
|
||||
DNSServer string `yaml:"dns_server,omitempty"`
|
||||
IgnoreTLS bool `yaml:"ignore_tls,omitempty"`
|
||||
Paused bool `yaml:"paused,omitempty"`
|
||||
Regions string `yaml:"regions,omitempty"`
|
||||
Monitors []Monitor `yaml:"monitors,omitempty"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user