From 9bcc0f9edbc0c001fd2f9fd8f67abea5b70b151c Mon Sep 17 00:00:00 2001 From: Dean Coakley <dean.s.coakley@gmail.com> Date: Fri, 18 Oct 2019 16:55:19 +0100 Subject: [PATCH 1/2] Hide VS/VSR metrics when CRDs disabled --- cmd/nginx-ingress/main.go | 2 +- internal/metrics/collectors/controller.go | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/cmd/nginx-ingress/main.go b/cmd/nginx-ingress/main.go index e7e4661a6b..a2b31467e1 100644 --- a/cmd/nginx-ingress/main.go +++ b/cmd/nginx-ingress/main.go @@ -239,7 +239,7 @@ func main() { if *enablePrometheusMetrics { registry = prometheus.NewRegistry() managerCollector = collectors.NewLocalManagerMetricsCollector() - controllerCollector = collectors.NewControllerMetricsCollector() + controllerCollector = collectors.NewControllerMetricsCollector(*enableCustomResources) err = managerCollector.Register(registry) if err != nil { diff --git a/internal/metrics/collectors/controller.go b/internal/metrics/collectors/controller.go index d94688be97..3ea14f2fbd 100644 --- a/internal/metrics/collectors/controller.go +++ b/internal/metrics/collectors/controller.go @@ -14,13 +14,14 @@ type ControllerCollector interface { // ControllerMetricsCollector implements the ControllerCollector interface and prometheus.Collector interface type ControllerMetricsCollector struct { + crdsEnabled bool ingressesTotal *prometheus.GaugeVec virtualServersTotal prometheus.Gauge virtualServerRoutesTotal prometheus.Gauge } // NewControllerMetricsCollector creates a new ControllerMetricsCollector -func NewControllerMetricsCollector() *ControllerMetricsCollector { +func NewControllerMetricsCollector(areCrdsEnabled bool) *ControllerMetricsCollector { ingResTotal := prometheus.NewGaugeVec( prometheus.GaugeOpts{ Name: "ingress_resources_total", @@ -30,6 +31,10 @@ func NewControllerMetricsCollector() *ControllerMetricsCollector { labelNamesController, ) + if !areCrdsEnabled { + return &ControllerMetricsCollector{ingressesTotal: ingResTotal} + } + vsResTotal := prometheus.NewGauge( prometheus.GaugeOpts{ Name: "virtualserver_resources_total", @@ -47,6 +52,7 @@ func NewControllerMetricsCollector() *ControllerMetricsCollector { ) return &ControllerMetricsCollector{ + crdsEnabled: true, ingressesTotal: ingResTotal, virtualServersTotal: vsResTotal, virtualServerRoutesTotal: vsrResTotal, @@ -71,15 +77,19 @@ func (cc *ControllerMetricsCollector) SetVirtualServerRoutes(count int) { // Describe implements prometheus.Collector interface Describe method func (cc *ControllerMetricsCollector) Describe(ch chan<- *prometheus.Desc) { cc.ingressesTotal.Describe(ch) - cc.virtualServersTotal.Describe(ch) - cc.virtualServerRoutesTotal.Describe(ch) + if cc.crdsEnabled { + cc.virtualServersTotal.Describe(ch) + cc.virtualServerRoutesTotal.Describe(ch) + } } // Collect implements the prometheus.Collector interface Collect method func (cc *ControllerMetricsCollector) Collect(ch chan<- prometheus.Metric) { cc.ingressesTotal.Collect(ch) - cc.virtualServersTotal.Collect(ch) - cc.virtualServerRoutesTotal.Collect(ch) + if cc.crdsEnabled { + cc.virtualServersTotal.Collect(ch) + cc.virtualServerRoutesTotal.Collect(ch) + } } // Register registers all the metrics of the collector From a26ad1dd598a5a64ae001567f1aa868feeaff7df Mon Sep 17 00:00:00 2001 From: Dean Coakley <dean.s.coakley@gmail.com> Date: Mon, 21 Oct 2019 11:18:20 +0100 Subject: [PATCH 2/2] Rename crdEnable func argument --- internal/metrics/collectors/controller.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/metrics/collectors/controller.go b/internal/metrics/collectors/controller.go index 3ea14f2fbd..06b854eccd 100644 --- a/internal/metrics/collectors/controller.go +++ b/internal/metrics/collectors/controller.go @@ -21,7 +21,7 @@ type ControllerMetricsCollector struct { } // NewControllerMetricsCollector creates a new ControllerMetricsCollector -func NewControllerMetricsCollector(areCrdsEnabled bool) *ControllerMetricsCollector { +func NewControllerMetricsCollector(crdsEnabled bool) *ControllerMetricsCollector { ingResTotal := prometheus.NewGaugeVec( prometheus.GaugeOpts{ Name: "ingress_resources_total", @@ -31,7 +31,7 @@ func NewControllerMetricsCollector(areCrdsEnabled bool) *ControllerMetricsCollec labelNamesController, ) - if !areCrdsEnabled { + if !crdsEnabled { return &ControllerMetricsCollector{ingressesTotal: ingResTotal} }