github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/tools/querytee/proxy_metrics.go (about)

     1  package querytee
     2  
     3  import (
     4  	"github.com/prometheus/client_golang/prometheus"
     5  	"github.com/prometheus/client_golang/prometheus/promauto"
     6  )
     7  
     8  const (
     9  	comparisonSuccess = "success"
    10  	comparisonFailed  = "fail"
    11  )
    12  
    13  type ProxyMetrics struct {
    14  	requestDuration        *prometheus.HistogramVec
    15  	responsesTotal         *prometheus.CounterVec
    16  	responsesComparedTotal *prometheus.CounterVec
    17  }
    18  
    19  func NewProxyMetrics(registerer prometheus.Registerer) *ProxyMetrics {
    20  	m := &ProxyMetrics{
    21  		requestDuration: promauto.With(registerer).NewHistogramVec(prometheus.HistogramOpts{
    22  			Namespace: "cortex_querytee",
    23  			Name:      "request_duration_seconds",
    24  			Help:      "Time (in seconds) spent serving HTTP requests.",
    25  			Buckets:   []float64{.005, .01, .025, .05, .1, .25, .5, 0.75, 1, 1.5, 2, 3, 4, 5, 10, 25, 50, 100},
    26  		}, []string{"backend", "method", "route", "status_code"}),
    27  		responsesTotal: promauto.With(registerer).NewCounterVec(prometheus.CounterOpts{
    28  			Namespace: "cortex_querytee",
    29  			Name:      "responses_total",
    30  			Help:      "Total number of responses sent back to the client by the selected backend.",
    31  		}, []string{"backend", "method", "route"}),
    32  		responsesComparedTotal: promauto.With(registerer).NewCounterVec(prometheus.CounterOpts{
    33  			Namespace: "cortex_querytee",
    34  			Name:      "responses_compared_total",
    35  			Help:      "Total number of responses compared per route name by result.",
    36  		}, []string{"route", "result"}),
    37  	}
    38  
    39  	return m
    40  }