MCPcopy Create free account
hub / github.com/cortexproject/cortex / NewHandler

Function NewHandler

pkg/frontend/transport/handler.go:124–186  ·  view source on GitHub ↗

NewHandler creates a new frontend handler.

(cfg HandlerConfig, tenantFederationCfg tenantfederation.Config, roundTripper http.RoundTripper, log log.Logger, reg prometheus.Registerer)

Source from the content-addressed store, hash-verified

122
123// NewHandler creates a new frontend handler.
124func NewHandler(cfg HandlerConfig, tenantFederationCfg tenantfederation.Config, roundTripper http.RoundTripper, log log.Logger, reg prometheus.Registerer) *Handler {
125 h := &Handler{
126 cfg: cfg,
127 tenantFederationCfg: tenantFederationCfg,
128 log: log,
129 roundTripper: roundTripper,
130 reg: reg,
131 }
132
133 if cfg.QueryStatsEnabled {
134 h.querySeconds = promauto.With(reg).NewCounterVec(prometheus.CounterOpts{
135 Name: "cortex_query_seconds_total",
136 Help: "Total amount of wall clock time spend processing queries.",
137 }, []string{"source", "user"})
138
139 h.queryFetchedSeries = promauto.With(reg).NewCounterVec(prometheus.CounterOpts{
140 Name: "cortex_query_fetched_series_total",
141 Help: "Number of series fetched to execute a query.",
142 }, []string{"source", "user"})
143
144 h.queryFetchedSamples = promauto.With(reg).NewCounterVec(prometheus.CounterOpts{
145 Name: "cortex_query_samples_total",
146 Help: "Number of samples fetched to execute a query.",
147 }, []string{"source", "user"})
148
149 // It tracks TotalSamples in https://github.com/prometheus/prometheus/blob/main/util/stats/query_stats.go#L237 for each user.
150 h.queryScannedSamples = promauto.With(reg).NewCounterVec(prometheus.CounterOpts{
151 Name: "cortex_query_samples_scanned_total",
152 Help: "Number of samples scanned to execute a query.",
153 }, []string{"source", "user"})
154
155 h.queryPeakSamples = promauto.With(reg).NewHistogramVec(prometheus.HistogramOpts{
156 Name: "cortex_query_peak_samples",
157 Help: "Highest count of samples considered to execute a query.",
158 NativeHistogramBucketFactor: 1.1,
159 NativeHistogramMaxBucketNumber: 100,
160 NativeHistogramMinResetDuration: 1 * time.Hour,
161 }, []string{"source", "user"})
162
163 h.queryChunkBytes = promauto.With(reg).NewCounterVec(prometheus.CounterOpts{
164 Name: "cortex_query_fetched_chunks_bytes_total",
165 Help: "Size of all chunks fetched to execute a query in bytes.",
166 }, []string{"source", "user"})
167
168 h.queryDataBytes = promauto.With(reg).NewCounterVec(prometheus.CounterOpts{
169 Name: "cortex_query_fetched_data_bytes_total",
170 Help: "Size of all data fetched to execute a query in bytes.",
171 }, []string{"source", "user"})
172
173 h.rejectedQueries = promauto.With(reg).NewCounterVec(
174 prometheus.CounterOpts{
175 Name: "cortex_rejected_queries_total",
176 Help: "The total number of queries that were rejected.",
177 },
178 []string{"reason", "source", "user"},
179 )
180 h.activeUsers = users.NewActiveUsersCleanupWithDefaultValues(h.cleanupMetricsForInactiveUser)
181 // If cleaner stops or fail, we will simply not clean the metrics for inactive users.

Callers 9

testFrontendFunction · 0.92
testFrontendFunction · 0.92
initQueryFrontendMethod · 0.92
TestHandler_ServeHTTPFunction · 0.85
Test_ExtractTenantIDsFunction · 0.85

Calls 2

StartAsyncMethod · 0.65

Tested by 8

testFrontendFunction · 0.74
testFrontendFunction · 0.74
TestHandler_ServeHTTPFunction · 0.68
Test_ExtractTenantIDsFunction · 0.68