func()

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
}