@@ -170,30 +170,38 @@ func (q *Querier) Stop() {
170170}
171171
172172func (q * Querier ) queryLabels (ctx context.Context , interval time.Duration ) {
173- var resp * connect.Response [queryv1alpha1.LabelsResponse ]
174- var count int
175- operation := func () (err error ) {
176- defer func () { count ++ }()
173+ for _ , tr := range q .queryTimeRanges {
174+ rangeEnd := time .Now ()
175+ rangeStart := rangeEnd .Add (- 1 * tr )
177176
178- queryStart := time .Now ()
179- resp , err = q .client .Labels (ctx , connect .NewRequest (& queryv1alpha1.LabelsRequest {}))
180- latency := time .Since (queryStart )
181- if err != nil {
182- q .metrics .labelsHistogram .WithLabelValues (connect .CodeOf (err ).String ()).Observe (latency .Seconds ())
183- log .Println ("labels: failed to make request" , count , err )
184- return
185- }
186- q .metrics .labelsHistogram .WithLabelValues (grpcCodeOK ).Observe (latency .Seconds ())
187- q .labels = append (q .labels [:0 ], resp .Msg .LabelNames ... )
188- log .Printf ("labels: took %v and got %d results\n " , latency , len (resp .Msg .LabelNames ))
177+ var resp * connect.Response [queryv1alpha1.LabelsResponse ]
178+ var count int
179+ operation := func () (err error ) {
180+ defer func () { count ++ }()
189181
190- return nil
191- }
182+ queryStart := time .Now ()
183+ resp , err = q .client .Labels (ctx , connect .NewRequest (& queryv1alpha1.LabelsRequest {
184+ Start : timestamppb .New (rangeStart ),
185+ End : timestamppb .New (rangeEnd ),
186+ }))
187+ latency := time .Since (queryStart )
188+ if err != nil {
189+ q .metrics .labelsHistogram .WithLabelValues (connect .CodeOf (err ).String ()).Observe (latency .Seconds ())
190+ log .Printf ("labels(over=%s): failed to make request %d: %v\n " , tr , count , err )
191+ return
192+ }
193+ q .metrics .labelsHistogram .WithLabelValues (grpcCodeOK ).Observe (latency .Seconds ())
194+ q .labels = append (q .labels [:0 ], resp .Msg .LabelNames ... )
195+ log .Printf ("labels(over=%s): took %v and got %d results\n " , tr , latency , len (resp .Msg .LabelNames ))
192196
193- exp := backoff .NewExponentialBackOff ()
194- exp .MaxElapsedTime = interval
195- if err := backoff .Retry (operation , backoff .WithContext (exp , ctx )); err != nil {
196- return
197+ return nil
198+ }
199+
200+ exp := backoff .NewExponentialBackOff ()
201+ exp .MaxElapsedTime = interval
202+ if err := backoff .Retry (operation , backoff .WithContext (exp , ctx )); err != nil {
203+ continue
204+ }
197205 }
198206}
199207
@@ -204,73 +212,86 @@ func (q *Querier) queryValues(ctx context.Context, interval time.Duration) {
204212 }
205213 label := q .labels [q .rng .Intn (len (q .labels ))]
206214
207- var resp * connect.Response [queryv1alpha1.ValuesResponse ]
208- var count int
209- operation := func () (err error ) {
210- defer func () { count ++ }()
211- queryStart := time .Now ()
212- resp , err = q .client .Values (ctx , connect .NewRequest (& queryv1alpha1.ValuesRequest {
213- LabelName : label ,
214- Match : nil ,
215- Start : timestamppb .New (time .Now ().Add (- 1 * time .Hour )),
216- End : timestamppb .New (time .Now ()),
217- }))
218- latency := time .Since (queryStart )
219- if err != nil {
220- q .metrics .valuesHistogram .WithLabelValues (connect .CodeOf (err ).String ()).Observe (latency .Seconds ())
221- log .Printf ("values(label=%s): failed to make request %d: %v\n " , label , count , err )
222- return
223- }
224- q .metrics .valuesHistogram .WithLabelValues (grpcCodeOK ).Observe (latency .Seconds ())
225- log .Printf ("values(label=%s): took %v and got %d results\n " , label , latency , len (resp .Msg .LabelValues ))
215+ for _ , tr := range q .queryTimeRanges {
216+ rangeEnd := time .Now ()
217+ rangeStart := rangeEnd .Add (- 1 * tr )
226218
227- return nil
228- }
219+ var resp * connect.Response [queryv1alpha1.ValuesResponse ]
220+ var count int
221+ operation := func () (err error ) {
222+ defer func () { count ++ }()
223+ queryStart := time .Now ()
224+ resp , err = q .client .Values (ctx , connect .NewRequest (& queryv1alpha1.ValuesRequest {
225+ LabelName : label ,
226+ Match : nil ,
227+ Start : timestamppb .New (rangeStart ),
228+ End : timestamppb .New (rangeEnd ),
229+ }))
230+ latency := time .Since (queryStart )
231+ if err != nil {
232+ q .metrics .valuesHistogram .WithLabelValues (connect .CodeOf (err ).String ()).Observe (latency .Seconds ())
233+ log .Printf ("values(label=%s,over=%s): failed to make request %d: %v\n " , label , tr , count , err )
234+ return
235+ }
236+ q .metrics .valuesHistogram .WithLabelValues (grpcCodeOK ).Observe (latency .Seconds ())
237+ log .Printf ("values(label=%s,over=%s): took %v and got %d results\n " , label , tr , latency , len (resp .Msg .LabelValues ))
229238
230- exp := backoff .NewExponentialBackOff ()
231- exp .MaxElapsedTime = interval
232- if err := backoff .Retry (operation , backoff .WithContext (exp , ctx )); err != nil {
233- return
239+ return nil
240+ }
241+
242+ exp := backoff .NewExponentialBackOff ()
243+ exp .MaxElapsedTime = interval
244+ if err := backoff .Retry (operation , backoff .WithContext (exp , ctx )); err != nil {
245+ continue
246+ }
234247 }
235248}
236249
237250func (q * Querier ) queryProfileTypes (ctx context.Context , interval time.Duration ) {
238- var resp * connect.Response [queryv1alpha1.ProfileTypesResponse ]
239- var count int
240- operation := func () (err error ) {
241- defer func () { count ++ }()
251+ for _ , tr := range q .queryTimeRanges {
252+ rangeEnd := time .Now ()
253+ rangeStart := rangeEnd .Add (- 1 * tr )
242254
243- queryStart := time .Now ()
244- resp , err = q .client .ProfileTypes (ctx , connect .NewRequest (& queryv1alpha1.ProfileTypesRequest {}))
245- latency := time .Since (queryStart )
246- if err != nil {
247- q .metrics .profileTypesHistogram .WithLabelValues (connect .CodeOf (err ).String ()).Observe (latency .Seconds ())
248- log .Println ("profile types: failed to make request" , count , err )
249- return err
250- }
251- q .metrics .profileTypesHistogram .WithLabelValues (grpcCodeOK ).Observe (latency .Seconds ())
252- log .Printf ("profile types: took %v and got %d types\n " , latency , len (resp .Msg .Types ))
255+ var resp * connect.Response [queryv1alpha1.ProfileTypesResponse ]
256+ var count int
257+ operation := func () (err error ) {
258+ defer func () { count ++ }()
253259
254- return nil
255- }
260+ queryStart := time .Now ()
261+ resp , err = q .client .ProfileTypes (ctx , connect .NewRequest (& queryv1alpha1.ProfileTypesRequest {
262+ Start : timestamppb .New (rangeStart ),
263+ End : timestamppb .New (rangeEnd ),
264+ }))
265+ latency := time .Since (queryStart )
266+ if err != nil {
267+ q .metrics .profileTypesHistogram .WithLabelValues (connect .CodeOf (err ).String ()).Observe (latency .Seconds ())
268+ log .Printf ("profile types(over=%s): failed to make request %d: %v\n " , tr , count , err )
269+ return err
270+ }
271+ q .metrics .profileTypesHistogram .WithLabelValues (grpcCodeOK ).Observe (latency .Seconds ())
272+ log .Printf ("profile types(over=%s): took %v and got %d types\n " , tr , latency , len (resp .Msg .Types ))
256273
257- exp := backoff .NewExponentialBackOff ()
258- exp .MaxElapsedTime = interval
259- if err := backoff .Retry (operation , backoff .WithContext (exp , ctx )); err != nil {
260- return
261- }
274+ return nil
275+ }
262276
263- if len (resp .Msg .Types ) == 0 {
264- return
265- }
277+ exp := backoff .NewExponentialBackOff ()
278+ exp .MaxElapsedTime = interval
279+ if err := backoff .Retry (operation , backoff .WithContext (exp , ctx )); err != nil {
280+ continue
281+ }
266282
267- q .profileTypes = q .profileTypes [:0 ]
268- for _ , pt := range resp .Msg .Types {
269- key := fmt .Sprintf ("%s:%s:%s:%s:%s" , pt .Name , pt .SampleType , pt .SampleUnit , pt .PeriodType , pt .PeriodUnit )
270- if pt .Delta {
271- key += ":delta"
283+ if len (resp .Msg .Types ) == 0 {
284+ continue
285+ }
286+
287+ q .profileTypes = q .profileTypes [:0 ]
288+ for _ , pt := range resp .Msg .Types {
289+ key := fmt .Sprintf ("%s:%s:%s:%s:%s" , pt .Name , pt .SampleType , pt .SampleUnit , pt .PeriodType , pt .PeriodUnit )
290+ if pt .Delta {
291+ key += ":delta"
292+ }
293+ q .profileTypes = append (q .profileTypes , key )
272294 }
273- q .profileTypes = append (q .profileTypes , key )
274295 }
275296}
276297
0 commit comments