func NewPromMetrics()

in pkg/metrics/prometheus.go [47:84]


func NewPromMetrics(reg prometheus.Registerer, name, prefix string) *promMetrics {

	requestDurationHist := prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Name:    prefix + "_request_duration_seconds",
		Help:    "Duration of requests in seconds.",
		Buckets: prometheus.LinearBuckets(0.005, 0.025, 200),
	}, []string{"self", "method", "handler"})
	reg.MustRegister(requestDurationHist)

	peerDiscoveryDurationHist := prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Name:    prefix + "_peer_discovery_duration_seconds",
		Help:    "Duration of peer discovery in seconds.",
		Buckets: prometheus.LinearBuckets(0.001, 0.002, 200),
	}, []string{"self", "ip"})
	reg.MustRegister(peerDiscoveryDurationHist)

	peerResponseDurationHist := prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Name:    prefix + "_peer_response_speed_mib_per_second",
		Help:    "Speed of peer response in Mib per second.",
		Buckets: prometheus.LinearBuckets(1, 15, 200),
	}, []string{"self", "ip", "op"})
	reg.MustRegister(peerResponseDurationHist)

	upstreamResponseDurationHist := prometheus.NewHistogramVec(prometheus.HistogramOpts{
		Name:    prefix + "_upstream_response_speed_mib_per_second",
		Help:    "Speed of upstream response in Mib per second.",
		Buckets: prometheus.LinearBuckets(1, 15, 200),
	}, []string{"self", "hostname", "op"})
	reg.MustRegister(upstreamResponseDurationHist)

	return &promMetrics{
		name:                  name,
		requestDuration:       requestDurationHist,
		peerDiscoveryDuration: peerDiscoveryDurationHist,
		peerResponseSpeed:     peerResponseDurationHist,
		upstreamResponseSpeed: upstreamResponseDurationHist,
	}
}