mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-25 07:40:19 +00:00
9c8de9471e
update kubernetes and its dependencies to v1.26.1 Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
package metrics
|
|
|
|
import (
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
"k8s.io/client-go/tools/leaderelection"
|
|
)
|
|
|
|
// This file is copied and adapted from k8s.io/component-base/metrics/prometheus/clientgo/leaderelection
|
|
// which registers metrics to the k8s legacy Registry. We require very
|
|
// similar functionality, but must register metrics to a different Registry.
|
|
|
|
var (
|
|
leaderGauge = prometheus.NewGaugeVec(prometheus.GaugeOpts{
|
|
Name: "leader_election_master_status",
|
|
Help: "Gauge of if the reporting system is master of the relevant lease, 0 indicates backup, 1 indicates master. 'name' is the string used to identify the lease. Please make sure to group by name.",
|
|
}, []string{"name"})
|
|
)
|
|
|
|
func init() {
|
|
Registry.MustRegister(leaderGauge)
|
|
leaderelection.SetProvider(leaderelectionMetricsProvider{})
|
|
}
|
|
|
|
type leaderelectionMetricsProvider struct{}
|
|
|
|
func (leaderelectionMetricsProvider) NewLeaderMetric() leaderelection.SwitchMetric {
|
|
return &switchAdapter{gauge: leaderGauge}
|
|
}
|
|
|
|
type switchAdapter struct {
|
|
gauge *prometheus.GaugeVec
|
|
}
|
|
|
|
func (s *switchAdapter) On(name string) {
|
|
s.gauge.WithLabelValues(name).Set(1.0)
|
|
}
|
|
|
|
func (s *switchAdapter) Off(name string) {
|
|
s.gauge.WithLabelValues(name).Set(0.0)
|
|
}
|