github.com/safing/portbase@v0.19.5/metrics/metric_histogram.go (about) 1 package metrics 2 3 import ( 4 vm "github.com/VictoriaMetrics/metrics" 5 ) 6 7 // Histogram is a histogram metric. 8 type Histogram struct { 9 *metricBase 10 *vm.Histogram 11 } 12 13 // NewHistogram registers a new histogram metric. 14 func NewHistogram(id string, labels map[string]string, opts *Options) (*Histogram, error) { 15 // Ensure that there are options. 16 if opts == nil { 17 opts = &Options{} 18 } 19 20 // Make base. 21 base, err := newMetricBase(id, labels, *opts) 22 if err != nil { 23 return nil, err 24 } 25 26 // Create metric struct. 27 m := &Histogram{ 28 metricBase: base, 29 } 30 31 // Create metric in set 32 m.Histogram = m.set.NewHistogram(m.LabeledID()) 33 34 // Register metric. 35 err = register(m) 36 if err != nil { 37 return nil, err 38 } 39 40 return m, nil 41 }