mirror of
https://github.com/prymitive/karma
synced 2026-05-09 03:36:44 +00:00
feat(api): expose all known Alertmanager clusters
This commit is contained in:
17
alerts.go
17
alerts.go
@@ -1,6 +1,9 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/prymitive/karma/internal/alertmanager"
|
||||
"github.com/prymitive/karma/internal/filters"
|
||||
"github.com/prymitive/karma/internal/models"
|
||||
@@ -33,15 +36,23 @@ func countLabel(countStore models.LabelsCountMap, key string, val string) {
|
||||
func getUpstreams() models.AlertmanagerAPISummary {
|
||||
summary := models.AlertmanagerAPISummary{}
|
||||
|
||||
clusters := map[string][]string{}
|
||||
upstreams := alertmanager.GetAlertmanagers()
|
||||
for _, upstream := range upstreams {
|
||||
members := upstream.ClusterMemberNames()
|
||||
sort.Strings(members)
|
||||
key := strings.Join(members[:], "\n")
|
||||
if _, found := clusters[key]; !found {
|
||||
clusters[key] = members
|
||||
}
|
||||
|
||||
u := models.AlertmanagerAPIStatus{
|
||||
Name: upstream.Name,
|
||||
URI: upstream.SanitizedURI(),
|
||||
PublicURI: upstream.PublicURI(),
|
||||
Error: upstream.Error(),
|
||||
Version: upstream.Version(),
|
||||
ClusterMembers: upstream.ClusterMemberNames(),
|
||||
ClusterMembers: members,
|
||||
}
|
||||
summary.Instances = append(summary.Instances, u)
|
||||
|
||||
@@ -53,5 +64,9 @@ func getUpstreams() models.AlertmanagerAPISummary {
|
||||
}
|
||||
}
|
||||
|
||||
for _, cluster := range clusters {
|
||||
summary.Clusters = append(summary.Clusters, cluster)
|
||||
}
|
||||
|
||||
return summary
|
||||
}
|
||||
|
||||
@@ -47,4 +47,5 @@ type AlertmanagerAPICounters struct {
|
||||
type AlertmanagerAPISummary struct {
|
||||
Counters AlertmanagerAPICounters `json:"counters"`
|
||||
Instances []AlertmanagerAPIStatus `json:"instances"`
|
||||
Clusters [][]string `json:"clusters"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user