feat(api): expose all known Alertmanager clusters

This commit is contained in:
Łukasz Mierzwa
2018-11-30 18:57:52 +00:00
parent fd2e852050
commit 764f89e1d8
2 changed files with 17 additions and 1 deletions

View File

@@ -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
}

View File

@@ -47,4 +47,5 @@ type AlertmanagerAPICounters struct {
type AlertmanagerAPISummary struct {
Counters AlertmanagerAPICounters `json:"counters"`
Instances []AlertmanagerAPIStatus `json:"instances"`
Clusters [][]string `json:"clusters"`
}