From d6e3aea34afaed73cb77a6046b2ba2c59a37065e Mon Sep 17 00:00:00 2001 From: Yexiang Zhang Date: Mon, 31 Jul 2023 14:29:37 +0800 Subject: [PATCH] tweak: allows prom addr with http path (#1563) --- pkg/apiserver/metrics/prom_resolve.go | 2 +- pkg/apiserver/metrics/prom_resolve_test.go | 24 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 pkg/apiserver/metrics/prom_resolve_test.go diff --git a/pkg/apiserver/metrics/prom_resolve.go b/pkg/apiserver/metrics/prom_resolve.go index bcbf2c31c1..e86a6ead84 100644 --- a/pkg/apiserver/metrics/prom_resolve.go +++ b/pkg/apiserver/metrics/prom_resolve.go @@ -43,7 +43,7 @@ func normalizeCustomizedPromAddress(addr string) (string, error) { return "", fmt.Errorf("invalid Prometheus address format") } // Normalize the address, remove unnecessary parts. - addr = fmt.Sprintf("%s://%s", u.Scheme, u.Host) + addr = fmt.Sprintf("%s://%s%s", u.Scheme, u.Host, strings.TrimSuffix(u.Path, "/")) return addr, nil } diff --git a/pkg/apiserver/metrics/prom_resolve_test.go b/pkg/apiserver/metrics/prom_resolve_test.go new file mode 100644 index 0000000000..4ebed43cf0 --- /dev/null +++ b/pkg/apiserver/metrics/prom_resolve_test.go @@ -0,0 +1,24 @@ +// Copyright 2023 PingCAP, Inc. Licensed under Apache-2.0. + +package metrics + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +// https://github.com/pingcap/tidb-dashboard/issues/1560 +func Test_normalizeCustomizedPromAddress(t *testing.T) { + addr, err := normalizeCustomizedPromAddress("http://infra-tidb-monitoring-shadow2-prod-0a01da41:9090") + require.NoError(t, err) + require.Equal(t, "http://infra-tidb-monitoring-shadow2-prod-0a01da41:9090", addr) + + addr, err = normalizeCustomizedPromAddress("http://infra-tidb-monitoring-shadow2-prod-0a01da41:9090/") + require.NoError(t, err) + require.Equal(t, "http://infra-tidb-monitoring-shadow2-prod-0a01da41:9090", addr) + + addr, err = normalizeCustomizedPromAddress("http://infra-tidb-monitoring-shadow2-prod-0a01da41:9090/_/tsdb/") + require.NoError(t, err) + require.Equal(t, "http://infra-tidb-monitoring-shadow2-prod-0a01da41:9090/_/tsdb", addr) +}