| 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) |
| } |