From 27c3bc1b88c7cc28d6b26ac20fe8f1afc2da45f9 Mon Sep 17 00:00:00 2001 From: "song.chen" Date: Thu, 21 Mar 2019 19:56:03 +0800 Subject: [PATCH 1/2] Fix issue:[#178](https://github.com/DirectXMan12/k8s-prometheus-adapter/issues/178) Fix namespaced bug of node resource, node resource should be a non-namespaced resource as the resource namespace. By doing this fix, node resouce can be accessed as expected, as the issue explains. Closes issue:[#178](https://github.com/DirectXMan12/k8s-prometheus-adapter/issues/178) --- pkg/custom-provider/metric_namer.go | 1 + pkg/custom-provider/series_registry.go | 2 +- pkg/naming/resource_converter.go | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/custom-provider/metric_namer.go b/pkg/custom-provider/metric_namer.go index 2c00037e..dd811e43 100644 --- a/pkg/custom-provider/metric_namer.go +++ b/pkg/custom-provider/metric_namer.go @@ -14,6 +14,7 @@ import ( ) var nsGroupResource = schema.GroupResource{Resource: "namespaces"} +var nodeGroupResource = schema.GroupResource{Resource: "nodes"} var groupNameSanitizer = strings.NewReplacer(".", "_", "-", "_") // MetricNamer knows how to convert Prometheus series names and label names to diff --git a/pkg/custom-provider/series_registry.go b/pkg/custom-provider/series_registry.go index a4701cf4..86f28f7d 100644 --- a/pkg/custom-provider/series_registry.go +++ b/pkg/custom-provider/series_registry.go @@ -99,7 +99,7 @@ func (r *basicSeriesRegistry) SetSeries(newSeriesSlices [][]prom.Series, namers } // namespace metrics aren't counted as namespaced - if resource == nsGroupResource { + if resource == nsGroupResource || resource == nodeGroupResource { info.Namespaced = false } diff --git a/pkg/naming/resource_converter.go b/pkg/naming/resource_converter.go index 43a14c51..db63b763 100644 --- a/pkg/naming/resource_converter.go +++ b/pkg/naming/resource_converter.go @@ -177,7 +177,7 @@ func (r *resourceConverter) ResourcesForSeries(series prom.Series) ([]schema.Gro } } - if groupRes == nsGroupResource { + if groupRes != nsGroupResource { namespaced = true } } From 918954bd5e1b0aec0ce94ea338e2c5ac2337b53b Mon Sep 17 00:00:00 2001 From: "song.chen" Date: Fri, 22 Mar 2019 10:13:33 +0800 Subject: [PATCH 2/2] Amend for PR:[#179], relevant issue:[#178] Fix namespaced bug of node resource && pv resource By doing this fix, the CI can pass --- pkg/custom-provider/metric_namer.go | 9 ++++++--- pkg/custom-provider/series_registry.go | 2 +- pkg/naming/resource_converter.go | 4 +++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/pkg/custom-provider/metric_namer.go b/pkg/custom-provider/metric_namer.go index dd811e43..3369e34a 100644 --- a/pkg/custom-provider/metric_namer.go +++ b/pkg/custom-provider/metric_namer.go @@ -13,9 +13,12 @@ import ( "github.com/directxman12/k8s-prometheus-adapter/pkg/naming" ) -var nsGroupResource = schema.GroupResource{Resource: "namespaces"} -var nodeGroupResource = schema.GroupResource{Resource: "nodes"} -var groupNameSanitizer = strings.NewReplacer(".", "_", "-", "_") +var ( + nsGroupResource = schema.GroupResource{Resource: "namespaces"} + nodeGroupResource = schema.GroupResource{Resource: "nodes"} + pvGroupResource = schema.GroupResource{Resource: "persistentvolumes"} + groupNameSanitizer = strings.NewReplacer(".", "_", "-", "_") +) // MetricNamer knows how to convert Prometheus series names and label names to // metrics API resources, and vice-versa. MetricNamers should be safe to access diff --git a/pkg/custom-provider/series_registry.go b/pkg/custom-provider/series_registry.go index 86f28f7d..d6856b34 100644 --- a/pkg/custom-provider/series_registry.go +++ b/pkg/custom-provider/series_registry.go @@ -99,7 +99,7 @@ func (r *basicSeriesRegistry) SetSeries(newSeriesSlices [][]prom.Series, namers } // namespace metrics aren't counted as namespaced - if resource == nsGroupResource || resource == nodeGroupResource { + if resource == nsGroupResource || resource == nodeGroupResource || resource == pvGroupResource { info.Namespaced = false } diff --git a/pkg/naming/resource_converter.go b/pkg/naming/resource_converter.go index db63b763..5d38e0ef 100644 --- a/pkg/naming/resource_converter.go +++ b/pkg/naming/resource_converter.go @@ -20,6 +20,8 @@ import ( var ( groupNameSanitizer = strings.NewReplacer(".", "_", "-", "_") nsGroupResource = schema.GroupResource{Resource: "namespaces"} + nodeGroupResource = schema.GroupResource{Resource: "nodes"} + pvGroupResource = schema.GroupResource{Resource: "persistentvolumes"} ) // ResourceConverter knows the relationship between Kubernetes group-resources and Prometheus labels, @@ -177,7 +179,7 @@ func (r *resourceConverter) ResourcesForSeries(series prom.Series) ([]schema.Gro } } - if groupRes != nsGroupResource { + if groupRes != nsGroupResource && groupRes != nodeGroupResource && groupRes != pvGroupResource { namespaced = true } }