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 }