Also bringing: . golang.org/x/net 5561cd9b4330353950f399814f427425c0a26fd2 . github.com/docker/distribution 83389a148052d74ac602f5f1d62f86ff2f3c4aa5 . github.com/docker/swarmkit bd69f6e8e301645afd344913fa1ede53a0a111fb . github.com/docker/go-metrics d466d4f6fd960e01820085bd7e1a24426ee7ef18 . github.com/prometheus/client_golang 52437c81da6b127a9925d17eb3a382a2e5fd395e . github.com/beorn7/perks 4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9 . github.com/prometheus/client_model fa8ad6fec33561be4280a8f0514318c79d7f6cb6 . github.com/prometheus/common ebdfc6da46522d58825777cf1f90490a5b1ef1d8 . github.com/prometheus/procfs abf152e5f3e97f2fafac028d2cc06c1feb87ffa5 . github.com/matttproud/golang_protobuf_extensions v1.0.0 Signed-off-by: Mathieu Champlon <mathieu.champlon@docker.com>
73 lines
1.3 KiB
Go
73 lines
1.3 KiB
Go
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)
|
|
}
|