123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package metrics
- import "github.com/prometheus/client_golang/prometheus"
- // Gauge is a metric that allows incrementing and decrementing a value
- type Gauge interface {
- Inc(...float64)
- Dec(...float64)
- // Add adds the provided value to the gauge's current value
- Add(float64)
- // Set replaces the gauge's current value with the provided value
- Set(float64)
- }
- // LabeledGauge describes a gauge the must have values populated before use.
- type LabeledGauge interface {
- WithValues(labels ...string) Gauge
- }
- type labeledGauge struct {
- pg *prometheus.GaugeVec
- }
- func (lg *labeledGauge) WithValues(labels ...string) Gauge {
- return &gauge{pg: lg.pg.WithLabelValues(labels...)}
- }
- func (lg *labeledGauge) Describe(c chan<- *prometheus.Desc) {
- lg.pg.Describe(c)
- }
- func (lg *labeledGauge) Collect(c chan<- prometheus.Metric) {
- lg.pg.Collect(c)
- }
- type gauge struct {
- pg prometheus.Gauge
- }
- func (g *gauge) Inc(vs ...float64) {
- if len(vs) == 0 {
- g.pg.Inc()
- }
- g.Add(sumFloat64(vs...))
- }
- func (g *gauge) Dec(vs ...float64) {
- if len(vs) == 0 {
- g.pg.Dec()
- }
- g.Add(-sumFloat64(vs...))
- }
- func (g *gauge) Add(v float64) {
- g.pg.Add(v)
- }
- func (g *gauge) Set(v float64) {
- g.pg.Set(v)
- }
- func (g *gauge) Describe(c chan<- *prometheus.Desc) {
- g.pg.Describe(c)
- }
- func (g *gauge) Collect(c chan<- prometheus.Metric) {
- g.pg.Collect(c)
- }
|