diff --git a/weed/stats/metrics.go b/weed/stats/metrics.go index a9a24ce31..454b35d7a 100644 --- a/weed/stats/metrics.go +++ b/weed/stats/metrics.go @@ -1,7 +1,6 @@ package stats import ( - "fmt" "log" "net" "net/http" @@ -282,12 +281,21 @@ func LoopPushingMetric(name, instance, addr string, intervalSeconds int) { } } +func JoinHostPort(host string, port int) string { + portStr := strconv.Itoa(port) + if strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]") { + return host + ":" + portStr + } + return net.JoinHostPort(host, portStr) +} + + func StartMetricsServer(ip string, port int) { if port == 0 { return } http.Handle("/metrics", promhttp.HandlerFor(Gather, promhttp.HandlerOpts{})) - log.Fatal(http.ListenAndServe(fmt.Sprintf("%s:%d", ip, port), nil)) + log.Fatal(http.ListenAndServe(JoinHostPort(ip, port), nil)) } func SourceName(port uint32) string {