github.com/grafana/pyroscope@v1.18.0/pkg/distributor/writepath/router_metrics.go (about)

     1  package writepath
     2  
     3  import (
     4  	"strconv"
     5  	"time"
     6  
     7  	"github.com/prometheus/client_golang/prometheus"
     8  )
     9  
    10  type metrics struct {
    11  	durationHistogram *prometheus.HistogramVec
    12  }
    13  
    14  func newMetrics(reg prometheus.Registerer) *metrics {
    15  	m := &metrics{
    16  		durationHistogram: prometheus.NewHistogramVec(prometheus.HistogramOpts{
    17  			Name: "pyroscope_write_path_downstream_request_duration_seconds",
    18  			Help: "Duration of downstream requests made by the write path router.",
    19  
    20  			Buckets:                         prometheus.ExponentialBucketsRange(0.001, 10, 30),
    21  			NativeHistogramBucketFactor:     1.1,
    22  			NativeHistogramMaxBucketNumber:  32,
    23  			NativeHistogramMinResetDuration: time.Hour,
    24  		}, []string{"route", "primary", "status"}),
    25  	}
    26  	if reg != nil {
    27  		reg.MustRegister(m.durationHistogram)
    28  	}
    29  	return m
    30  }
    31  
    32  func newDurationHistogramDims(r *route, code int) []string {
    33  	dims := []string{string(r.path), "1", strconv.Itoa(code)}
    34  	if !r.primary {
    35  		dims[1] = "0"
    36  	}
    37  	return dims
    38  }