in plugin/metrics/prometheus/metrics.go [104:138]
func (p *Metrics) registerNewCollector(name string, collectorType int) prometheus.Collector {
p.lock.Lock()
defer p.lock.Unlock()
if collector := p.getCollectorByNameAndType(name, collectorType); collector != nil {
return collector
}
var collector prometheus.Collector
switch collectorType {
case counter:
collector = prometheus.NewCounterVec(
prometheus.CounterOpts{
Namespace: nameSpace,
Subsystem: subSystem,
Name: name,
}, []string{"label"},
)
p.counters[name] = collector
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
default:
panic("prometheus metrics plugin register collector error, illegal collector type")
}
prometheus.MustRegister(collector)
return collector
}