mirror of
				https://github.com/prometheus/prometheus.git
				synced 2025-11-04 10:21:02 +01:00 
			
		
		
		
	SD Managers take over responsibility for SD metrics registration --------- Signed-off-by: Paulin Todev <paulin.todev@gmail.com> Signed-off-by: Björn Rabenstein <github@rabenste.in> Co-authored-by: Björn Rabenstein <github@rabenste.in>
		
			
				
	
	
		
			102 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2016 The Prometheus Authors
 | 
						|
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
// you may not use this file except in compliance with the License.
 | 
						|
// You may obtain a copy of the License at
 | 
						|
//
 | 
						|
// http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
//
 | 
						|
// Unless required by applicable law or agreed to in writing, software
 | 
						|
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
// See the License for the specific language governing permissions and
 | 
						|
// limitations under the License.
 | 
						|
 | 
						|
package discovery
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
 | 
						|
	"github.com/prometheus/client_golang/prometheus"
 | 
						|
)
 | 
						|
 | 
						|
var (
 | 
						|
	clientGoRequestMetrics  = &clientGoRequestMetricAdapter{}
 | 
						|
	clientGoWorkloadMetrics = &clientGoWorkqueueMetricsProvider{}
 | 
						|
)
 | 
						|
 | 
						|
func init() {
 | 
						|
	clientGoRequestMetrics.RegisterWithK8sGoClient()
 | 
						|
	clientGoWorkloadMetrics.RegisterWithK8sGoClient()
 | 
						|
}
 | 
						|
 | 
						|
// Metrics to be used with a discovery manager.
 | 
						|
type Metrics struct {
 | 
						|
	FailedConfigs     prometheus.Gauge
 | 
						|
	DiscoveredTargets *prometheus.GaugeVec
 | 
						|
	ReceivedUpdates   prometheus.Counter
 | 
						|
	DelayedUpdates    prometheus.Counter
 | 
						|
	SentUpdates       prometheus.Counter
 | 
						|
}
 | 
						|
 | 
						|
func NewManagerMetrics(registerer prometheus.Registerer, sdManagerName string) (*Metrics, error) {
 | 
						|
	m := &Metrics{}
 | 
						|
 | 
						|
	m.FailedConfigs = prometheus.NewGauge(
 | 
						|
		prometheus.GaugeOpts{
 | 
						|
			Name:        "prometheus_sd_failed_configs",
 | 
						|
			Help:        "Current number of service discovery configurations that failed to load.",
 | 
						|
			ConstLabels: prometheus.Labels{"name": sdManagerName},
 | 
						|
		},
 | 
						|
	)
 | 
						|
 | 
						|
	m.DiscoveredTargets = prometheus.NewGaugeVec(
 | 
						|
		prometheus.GaugeOpts{
 | 
						|
			Name:        "prometheus_sd_discovered_targets",
 | 
						|
			Help:        "Current number of discovered targets.",
 | 
						|
			ConstLabels: prometheus.Labels{"name": sdManagerName},
 | 
						|
		},
 | 
						|
		[]string{"config"},
 | 
						|
	)
 | 
						|
 | 
						|
	m.ReceivedUpdates = prometheus.NewCounter(
 | 
						|
		prometheus.CounterOpts{
 | 
						|
			Name:        "prometheus_sd_received_updates_total",
 | 
						|
			Help:        "Total number of update events received from the SD providers.",
 | 
						|
			ConstLabels: prometheus.Labels{"name": sdManagerName},
 | 
						|
		},
 | 
						|
	)
 | 
						|
 | 
						|
	m.DelayedUpdates = prometheus.NewCounter(
 | 
						|
		prometheus.CounterOpts{
 | 
						|
			Name:        "prometheus_sd_updates_delayed_total",
 | 
						|
			Help:        "Total number of update events that couldn't be sent immediately.",
 | 
						|
			ConstLabels: prometheus.Labels{"name": sdManagerName},
 | 
						|
		},
 | 
						|
	)
 | 
						|
 | 
						|
	m.SentUpdates = prometheus.NewCounter(
 | 
						|
		prometheus.CounterOpts{
 | 
						|
			Name:        "prometheus_sd_updates_total",
 | 
						|
			Help:        "Total number of update events sent to the SD consumers.",
 | 
						|
			ConstLabels: prometheus.Labels{"name": sdManagerName},
 | 
						|
		},
 | 
						|
	)
 | 
						|
 | 
						|
	metrics := []prometheus.Collector{
 | 
						|
		m.FailedConfigs,
 | 
						|
		m.DiscoveredTargets,
 | 
						|
		m.ReceivedUpdates,
 | 
						|
		m.DelayedUpdates,
 | 
						|
		m.SentUpdates,
 | 
						|
	}
 | 
						|
 | 
						|
	for _, collector := range metrics {
 | 
						|
		err := registerer.Register(collector)
 | 
						|
		if err != nil {
 | 
						|
			return nil, fmt.Errorf("failed to register discovery manager metrics: %w", err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return m, nil
 | 
						|
}
 |