in internal/metrics/metrics.go [191:234]
func (p *Metrics) registerNewCollector(name string, collectorType int) (prometheus.Collector, error) {
p.lock.Lock()
defer p.lock.Unlock()
var (
collector prometheus.Collector
err error
)
collector, err = p.getCollectorByNameAndType(name, collectorType)
if err != nil {
return nil, err
}
if collector != nil {
return collector, nil
}
switch collectorType {
case histogram:
collector = prometheus.NewHistogramVec(
prometheus.HistogramOpts{
Namespace: nameSpace,
Subsystem: subSystem,
Name: name,
Buckets: prometheus.ExponentialBuckets(1, 2, 13),
}, []string{"label"},
)
p.histograms[name] = collector
case gauge:
collector = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: nameSpace,
Subsystem: subSystem,
Name: name,
}, []string{"label"},
)
p.gauges[name] = collector
default:
panic("prometheus metrics plugin register collector error, illegal collector type")
}
prometheus.MustRegister(collector)
return collector, nil
}