From c6566a558c4bcfa6c35d0a2ac4975921b44e195b Mon Sep 17 00:00:00 2001 From: Fredrik Enestad Date: Sun, 26 Sep 2021 20:02:22 +0200 Subject: [PATCH] add a metric with build info (#7660) --- .../ingress/metric/collectors/controller.go | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/internal/ingress/metric/collectors/controller.go b/internal/ingress/metric/collectors/controller.go index af746b4ba..135e74b9b 100644 --- a/internal/ingress/metric/collectors/controller.go +++ b/internal/ingress/metric/collectors/controller.go @@ -23,6 +23,7 @@ import ( "github.com/prometheus/client_golang/prometheus" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/ingress-nginx/internal/ingress" + "k8s.io/ingress-nginx/version" "k8s.io/klog/v2" ) @@ -50,6 +51,8 @@ type Controller struct { labels prometheus.Labels leaderElection *prometheus.GaugeVec + + buildInfo prometheus.Collector } // NewController creates a new prometheus collector for the @@ -69,6 +72,23 @@ func NewController(pod, namespace, class string) *Controller { "class": class, }, + buildInfo: prometheus.NewGaugeFunc( + prometheus.GaugeOpts{ + Namespace: PrometheusNamespace, + Name: "build_info", + Help: "A metric with a constant '1' labeled with information about the build.", + ConstLabels: prometheus.Labels{ + "controller_namespace": namespace, + "controller_class": class, + "controller_pod": pod, + "release": version.RELEASE, + "build": version.COMMIT, + "repository": version.REPO, + }, + }, + func() float64 { return 1 }, + ), + configHash: prometheus.NewGauge( prometheus.GaugeOpts{ Namespace: PrometheusNamespace, @@ -210,6 +230,7 @@ func (cm Controller) Describe(ch chan<- *prometheus.Desc) { cm.checkIngressOperationErrors.Describe(ch) cm.sslExpireTime.Describe(ch) cm.leaderElection.Describe(ch) + cm.buildInfo.Describe(ch) } // Collect implements the prometheus.Collector interface. @@ -223,6 +244,7 @@ func (cm Controller) Collect(ch chan<- prometheus.Metric) { cm.checkIngressOperationErrors.Collect(ch) cm.sslExpireTime.Collect(ch) cm.leaderElection.Collect(ch) + cm.buildInfo.Collect(ch) } // SetSSLExpireTime sets the expiration time of SSL Certificates