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 }