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..06b854eccd 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(crdsEnabled bool) *ControllerMetricsCollector { ingResTotal := prometheus.NewGaugeVec( prometheus.GaugeOpts{ Name: "ingress_resources_total", @@ -30,6 +31,10 @@ func NewControllerMetricsCollector() *ControllerMetricsCollector { labelNamesController, ) + if !crdsEnabled { + 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