Get partition label from upstream metrics

This commit is contained in:
freddygv 2021-12-14 08:39:24 -07:00
parent a38be58eaa
commit 68424b318a
2 changed files with 28 additions and 20 deletions

View File

@ -403,22 +403,26 @@ func resourceTagSpecifiers(omitDeprecatedTags bool) ([]string, error) {
// Upstream listener metrics are prefixed by consul.upstream // Upstream listener metrics are prefixed by consul.upstream
// //
// Listener metric name format: // Listener metric name format:
// <tcp|http>.upstream.<service>.<namespace>.<datacenter> // <tcp|http>.upstream.<service>.<namespace>.<partition>.<datacenter>
// //
// Examples: // Examples:
// - tcp.upstream.db.dc1.downstream_cx_total: 0 // - tcp.upstream.db.dc1.downstream_cx_total: 0
// - http.upstream.web.default.dc1.downstream_cx_total: 0 // - http.upstream.web.frontend.west.dc1.downstream_cx_total: 0
{"consul.upstream.service", {"consul.upstream.service",
fmt.Sprintf(`^(?:tcp|http)\.upstream\.((%s)(?:\.%s)?\.%s\.)`, fmt.Sprintf(`^(?:tcp|http)\.upstream\.((%s)(?:\.%s)?(?:\.%s)?\.%s\.)`,
reSegment, reSegment, reSegment)}, reSegment, reSegment, reSegment, reSegment)},
{"consul.upstream.datacenter", {"consul.upstream.datacenter",
fmt.Sprintf(`^(?:tcp|http)\.upstream\.(%s(?:\.%s)?\.(%s)\.)`, fmt.Sprintf(`^(?:tcp|http)\.upstream\.(%s(?:\.%s)?(?:\.%s)?\.(%s)\.)`,
reSegment, reSegment, reSegment)}, reSegment, reSegment, reSegment, reSegment)},
{"consul.upstream.namespace", {"consul.upstream.namespace",
fmt.Sprintf(`^(?:tcp|http)\.upstream\.(%s(?:\.(%s))?\.%s\.)`, fmt.Sprintf(`^(?:tcp|http)\.upstream\.(%s(?:\.(%s))?(?:\.%s)?\.%s\.)`,
reSegment, reSegment, reSegment)}, reSegment, reSegment, reSegment, reSegment)},
{"consul.upstream.partition",
fmt.Sprintf(`^(?:tcp|http)\.upstream\.(%s(?:\.%s)?(?:\.(%s))?\.%s\.)`,
reSegment, reSegment, reSegment, reSegment)},
} }
// These tags were deprecated in Consul 1.9.0 // These tags were deprecated in Consul 1.9.0

View File

@ -1202,39 +1202,43 @@ func TestConsulTagSpecifiers(t *testing.T) {
}, },
}, },
{ {
name: "tcp listener no namespace", name: "tcp listener no namespace or partition (OSS)",
stat: "tcp.upstream.db.dc1.downstream_cx_total", stat: "tcp.upstream.db.dc1.downstream_cx_total",
expect: map[string][]string{ expect: map[string][]string{
"consul.upstream.datacenter": {"db.dc1.", "dc1"}, "consul.upstream.datacenter": {"db.dc1.", "dc1"},
"consul.upstream.namespace": {"db.dc1.", ""}, "consul.upstream.namespace": {"db.dc1.", ""},
"consul.upstream.partition": {"db.dc1.", ""},
"consul.upstream.service": {"db.dc1.", "db"}, "consul.upstream.service": {"db.dc1.", "db"},
}, },
}, },
{ {
name: "tcp listener with namespace", name: "tcp listener with namespace and partition",
stat: "tcp.upstream.db.default.dc1.downstream_cx_total", stat: "tcp.upstream.db.frontend.west.dc1.downstream_cx_total",
expect: map[string][]string{ expect: map[string][]string{
"consul.upstream.datacenter": {"db.default.dc1.", "dc1"}, "consul.upstream.datacenter": {"db.frontend.west.dc1.", "dc1"},
"consul.upstream.namespace": {"db.default.dc1.", "default"}, "consul.upstream.namespace": {"db.frontend.west.dc1.", "frontend"},
"consul.upstream.service": {"db.default.dc1.", "db"}, "consul.upstream.partition": {"db.frontend.west.dc1.", "west"},
"consul.upstream.service": {"db.frontend.west.dc1.", "db"},
}, },
}, },
{ {
name: "http listener no namespace", name: "http listener no namespace or partition (OSS)",
stat: "http.upstream.web.dc1.downstream_cx_total", stat: "http.upstream.web.dc1.downstream_cx_total",
expect: map[string][]string{ expect: map[string][]string{
"consul.upstream.datacenter": {"web.dc1.", "dc1"}, "consul.upstream.datacenter": {"web.dc1.", "dc1"},
"consul.upstream.namespace": {"web.dc1.", ""}, "consul.upstream.namespace": {"web.dc1.", ""},
"consul.upstream.partition": {"web.dc1.", ""},
"consul.upstream.service": {"web.dc1.", "web"}, "consul.upstream.service": {"web.dc1.", "web"},
}, },
}, },
{ {
name: "http listener with namespace", name: "http listener with namespace and partition",
stat: "http.upstream.web.default.dc1.downstream_cx_total", stat: "http.upstream.web.frontend.west.dc1.downstream_cx_total",
expect: map[string][]string{ expect: map[string][]string{
"consul.upstream.datacenter": {"web.default.dc1.", "dc1"}, "consul.upstream.datacenter": {"web.frontend.west.dc1.", "dc1"},
"consul.upstream.namespace": {"web.default.dc1.", "default"}, "consul.upstream.namespace": {"web.frontend.west.dc1.", "frontend"},
"consul.upstream.service": {"web.default.dc1.", "web"}, "consul.upstream.partition": {"web.frontend.west.dc1.", "west"},
"consul.upstream.service": {"web.frontend.west.dc1.", "web"},
}, },
}, },
} }