From 244385bf0d5ed9be2554619005fb1e469980632c Mon Sep 17 00:00:00 2001 From: Kevin Liu Date: Wed, 8 Mar 2023 01:04:02 -0800 Subject: [PATCH] Fix binding metrics to ipv6 (#4286) * Fix binding metrics to ipv6 * Update weed/stats/metrics.go --------- Co-authored-by: Chris Lu --- weed/stats/metrics.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 {