Skip to content

Commit 058b343

Browse files
abhoitesstarcher
authored andcommitted
Add support to get metrics from multiple tillers (#14)
Add support to get metrics from multiple tillers
1 parent f6881bb commit 058b343

File tree

1 file changed

+31
-26
lines changed

1 file changed

+31
-26
lines changed

main.go

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"log"
77
"net/http"
88
"strconv"
9+
"strings"
910

1011
"k8s.io/helm/pkg/helm"
1112
"k8s.io/helm/pkg/proto/hapi/release"
@@ -30,7 +31,7 @@ var (
3031
})
3132

3233
localTiller = "127.0.0.1:44134"
33-
tillerNamespace = flag.String("tiller-namespace", "kube-system", "namespace of Tiller (default \"kube-system\")")
34+
tillerNamespace = flag.String("tiller-namespaces", "kube-system", "namespaces of Tillers , separated list kube-system,dev")
3435

3536
statusCodes = []release.Status_Code{
3637
release.Status_UNKNOWN,
@@ -53,7 +54,6 @@ func newHelmClient(tillerEndpoint string) (*helm.Client, error) {
5354

5455
client := helm.NewClient(helm.Host(tillerEndpoint))
5556
err := client.PingTiller()
56-
5757
return client, err
5858
}
5959

@@ -82,26 +82,25 @@ func filterList(rels []*release.Release) []*release.Release {
8282
return uniq
8383
}
8484

85-
func newHelmStatsHandler(client *helm.Client) http.HandlerFunc {
85+
func newHelmStatsHandler(clients []*helm.Client) http.HandlerFunc {
8686
return func(w http.ResponseWriter, r *http.Request) {
87-
items, err := client.ListReleases(helm.ReleaseListStatuses(statusCodes))
88-
if err == nil {
89-
stats.Reset()
90-
for _, item := range filterList(items.GetReleases()) {
91-
metadata := item.GetChart().GetMetadata()
92-
93-
chart := metadata.GetName()
94-
status := item.GetInfo().GetStatus().GetCode()
95-
releaseName := item.GetName()
96-
version := metadata.GetVersion()
97-
appVersion := metadata.GetAppVersion()
98-
updated := strconv.FormatInt((item.GetInfo().GetLastDeployed().Seconds * 1000), 10)
99-
namespace := item.GetNamespace()
100-
if status == release.Status_FAILED {
101-
status = -1
87+
stats.Reset()
88+
for _, client := range clients {
89+
items, err := client.ListReleases(helm.ReleaseListStatuses(statusCodes))
90+
if err == nil {
91+
for _, item := range filterList(items.GetReleases()) {
92+
chart := item.GetChart().GetMetadata().GetName()
93+
status := item.GetInfo().GetStatus().GetCode()
94+
releaseName := item.GetName()
95+
version := item.GetChart().GetMetadata().GetVersion()
96+
appVersion := item.GetChart().GetMetadata().GetAppVersion()
97+
updated := strconv.FormatInt((item.GetInfo().GetLastDeployed().Seconds * 1000), 10)
98+
namespace := item.GetNamespace()
99+
if status == release.Status_FAILED {
100+
status = -1
101+
}
102+
stats.WithLabelValues(chart, releaseName, version, appVersion, updated, namespace).Set(float64(status))
102103
}
103-
104-
stats.WithLabelValues(chart, releaseName, version, appVersion, updated, namespace).Set(float64(status))
105104
}
106105
}
107106
prometheusHandler.ServeHTTP(w, r)
@@ -116,18 +115,24 @@ func main() {
116115
flagenv.Parse()
117116
flag.Parse()
118117

119-
client, err := newHelmClient(fmt.Sprintf("tiller-deploy.%s:44134", *tillerNamespace))
120-
if err != nil {
121-
log.Printf("Failed to connect: %v", err)
118+
var clients []*helm.Client
119+
tNamespaces := strings.Split(*tillerNamespace, ",")
122120

123-
client, err = newHelmClient(localTiller)
121+
for _, np := range tNamespaces {
122+
client, err := newHelmClient(fmt.Sprintf("tiller-deploy.%s:44134", np))
124123
if err != nil {
125124
log.Printf("Failed to connect: %v", err)
126-
log.Fatalln("Giving up.")
125+
126+
client, err = newHelmClient(localTiller)
127+
if err != nil {
128+
log.Printf("Failed to connect: %v", err)
129+
log.Fatalln("Giving up.")
130+
}
127131
}
132+
clients = append(clients, client)
128133
}
129134

130-
http.HandleFunc("/metrics", newHelmStatsHandler(client))
135+
http.HandleFunc("/metrics", newHelmStatsHandler(clients))
131136
http.HandleFunc("/healthz", healthz)
132137
http.ListenAndServe(":9571", nil)
133138
}

0 commit comments

Comments
 (0)