func()

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
}