safing-portbase/metrics/metric_gauge.go

46 lines
808 B
Go

package metrics
import (
vm "github.com/VictoriaMetrics/metrics"
)
// Gauge is a gauge metric.
type Gauge struct {
*metricBase
*vm.Gauge
}
// NewGauge registers a new gauge metric.
func NewGauge(id string, labels map[string]string, fn func() float64, opts *Options) (*Gauge, error) {
// Ensure that there are options.
if opts == nil {
opts = &Options{}
}
// Make base.
base, err := newMetricBase(id, labels, *opts)
if err != nil {
return nil, err
}
// Create metric struct.
m := &Gauge{
metricBase: base,
}
// Create metric in set
m.Gauge = m.set.NewGauge(m.LabeledID(), fn)
// Register metric.
err = register(m)
if err != nil {
return nil, err
}
return m, nil
}
// CurrentValue returns the current gauge value.
func (g *Gauge) CurrentValue() float64 {
return g.Get()
}