package metrics import "github.com/prometheus/client_golang/prometheus" const innerRingSubsystem = "ir" // InnerRingServiceMetrics contains metrics collected by inner ring. type InnerRingServiceMetrics struct { epoch prometheus.Gauge health prometheus.Gauge } // NewInnerRingMetrics returns new instance of metrics collectors for inner ring. func NewInnerRingMetrics() InnerRingServiceMetrics { var ( epoch = prometheus.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: innerRingSubsystem, Name: "epoch", Help: "Current epoch as seen by inner-ring node.", }) health = prometheus.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: innerRingSubsystem, Name: "health", Help: "Current inner-ring node state.", }) ) prometheus.MustRegister(epoch) prometheus.MustRegister(health) return InnerRingServiceMetrics{ epoch: epoch, health: health, } } // SetEpoch updates epoch metrics. func (m InnerRingServiceMetrics) SetEpoch(epoch uint64) { m.epoch.Set(float64(epoch)) } // SetHealth updates health metrics. func (m InnerRingServiceMetrics) SetHealth(s int32) { m.health.Set(float64(s)) }