MCPcopy
hub / github.com/prometheus/prometheus / remoteReadSamples

Method remoteReadSamples

storage/remote/read_handler.go:116–186  ·  view source on GitHub ↗
(
	ctx context.Context,
	w http.ResponseWriter,
	req *prompb.ReadRequest,
	externalLabels map[string]string,
	sortedExternalLabels []prompb.Label,
)

Source from the content-addressed store, hash-verified

114}
115
116func (h *readHandler) remoteReadSamples(
117 ctx context.Context,
118 w http.ResponseWriter,
119 req *prompb.ReadRequest,
120 externalLabels map[string]string,
121 sortedExternalLabels []prompb.Label,
122) {
123 w.Header().Set("Content-Type", "application/x-protobuf")
124 w.Header().Set("Content-Encoding", "snappy")
125
126 resp := prompb.ReadResponse{
127 Results: make([]*prompb.QueryResult, len(req.Queries)),
128 }
129 for i, query := range req.Queries {
130 if err := func() error {
131 filteredMatchers, err := filterExtLabelsFromMatchers(query.Matchers, externalLabels)
132 if err != nil {
133 return err
134 }
135
136 querier, err := h.queryable.Querier(query.StartTimestampMs, query.EndTimestampMs)
137 if err != nil {
138 return err
139 }
140 defer func() {
141 if err := querier.Close(); err != nil {
142 h.logger.Warn("Error on querier close", "err", err.Error())
143 }
144 }()
145
146 var hints *storage.SelectHints
147 if query.Hints != nil {
148 hints = &storage.SelectHints{
149 Start: query.Hints.StartMs,
150 End: query.Hints.EndMs,
151 Step: query.Hints.StepMs,
152 Func: query.Hints.Func,
153 Grouping: query.Hints.Grouping,
154 Range: query.Hints.RangeMs,
155 By: query.Hints.By,
156 }
157 }
158
159 var ws annotations.Annotations
160 resp.Results[i], ws, err = ToQueryResult(querier.Select(ctx, false, hints, filteredMatchers...), h.remoteReadSampleLimit)
161 if err != nil {
162 return err
163 }
164 for _, w := range ws {
165 h.logger.Warn("Warnings on remote read query", "err", w.Error())
166 }
167 for _, ts := range resp.Results[i].Timeseries {
168 ts.Labels = MergeLabels(ts.Labels, sortedExternalLabels)
169 }
170 return nil
171 }(); err != nil {
172 var httpErr HTTPError
173 if errors.As(err, &httpErr) {

Callers 1

ServeHTTPMethod · 0.95

Calls 12

ErrorMethod · 0.95
StatusMethod · 0.95
ToQueryResultFunction · 0.85
MergeLabelsFunction · 0.85
EncodeReadResponseFunction · 0.85
HeaderMethod · 0.80
SetMethod · 0.65
QuerierMethod · 0.65
CloseMethod · 0.65
ErrorMethod · 0.65
SelectMethod · 0.65

Tested by

no test coverage detected