func()

in inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-golang/dataproxy/metrics.go [86:202]


func (m *metrics) init() error {
	m.errorCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
		Name: "data_proxy_error_count",
		Help: "Counter of error events",
	}, []string{"name", "code"})
	err := m.registry.Register(m.errorCounter)
	if err != nil {
		var are prometheus.AlreadyRegisteredError
		ok := errors.As(err, &are)
		if !ok {
			return err
		}
		m.errorCounter = are.ExistingCollector.(*prometheus.CounterVec)
	}

	m.retryCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
		Name: "data_proxy_retry_count",
		Help: "Counter of retry batches",
	}, []string{"name", "worker"})
	err = m.registry.Register(m.retryCounter)
	if err != nil {
		var are prometheus.AlreadyRegisteredError
		ok := errors.As(err, &are)
		if !ok {
			return err
		}
		m.retryCounter = are.ExistingCollector.(*prometheus.CounterVec)
	}

	m.timeoutCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
		Name: "data_proxy_timeout_count",
		Help: "Counter of timeout batches",
	}, []string{"name", "worker"})
	err = m.registry.Register(m.timeoutCounter)
	if err != nil {
		var are prometheus.AlreadyRegisteredError
		ok := errors.As(err, &are)
		if !ok {
			return err
		}
		m.timeoutCounter = are.ExistingCollector.(*prometheus.CounterVec)
	}

	m.messageCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
		Name: "data_proxy_msg_count",
		Help: "Counter of message",
	}, []string{"name", "code"})
	err = m.registry.Register(m.messageCounter)
	if err != nil {
		var are prometheus.AlreadyRegisteredError
		ok := errors.As(err, &are)
		if !ok {
			return err
		}
		m.messageCounter = are.ExistingCollector.(*prometheus.CounterVec)
	}

	m.updateConnCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
		Name: "data_proxy_update_conn_count",
		Help: "Counter of update connection events",
	}, []string{"name", "code"})
	err = m.registry.Register(m.updateConnCounter)
	if err != nil {
		var are prometheus.AlreadyRegisteredError
		ok := errors.As(err, &are)
		if !ok {
			return err
		}
		m.updateConnCounter = are.ExistingCollector.(*prometheus.CounterVec)
	}

	m.pendingMessageGauge = prometheus.NewGaugeVec(prometheus.GaugeOpts{
		Name: "data_proxy_pending_msg_gauge",
		Help: "Gauge of pending message",
	}, []string{"name", "worker"})
	err = m.registry.Register(m.pendingMessageGauge)
	if err != nil {
		var are prometheus.AlreadyRegisteredError
		ok := errors.As(err, &are)
		if !ok {
			return err
		}
		m.pendingMessageGauge = are.ExistingCollector.(*prometheus.GaugeVec)
	}

	m.batchSizeHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Name:    "data_proxy_batch_size",
		Help:    "Histogram of batch size",
		Buckets: []float64{1024, 2 * 1024, 4 * 1024, 8 * 1024, 16 * 1024, 32 * 1024, 64 * 1024, 128 * 1024, 256 * 1024},
	}, []string{"name", "code"})
	err = m.registry.Register(m.batchSizeHistogram)
	if err != nil {
		var are prometheus.AlreadyRegisteredError
		ok := errors.As(err, &are)
		if !ok {
			return err
		}
		m.batchSizeHistogram = are.ExistingCollector.(*prometheus.HistogramVec)
	}

	m.batchTimeHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Name:    "data_proxy_batch_time",
		Help:    "Histogram of batch time in milliseconds",
		Buckets: []float64{5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000},
	}, []string{"name", "code"})
	err = m.registry.Register(m.batchTimeHistogram)
	if err != nil {
		var are prometheus.AlreadyRegisteredError
		ok := errors.As(err, &are)
		if !ok {
			return err
		}
		m.batchTimeHistogram = are.ExistingCollector.(*prometheus.HistogramVec)
	}

	return nil
}