Skip to content

Commit d294166

Browse files
authored
Set profile types in label name and label value requests (#447)
1 parent 79434ab commit d294166

File tree

1 file changed

+47
-9
lines changed

1 file changed

+47
-9
lines changed

querier.go

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,9 @@ func (q *Querier) Run(ctx context.Context, interval time.Duration) {
142142
run := func() {
143143
// Since a lot of these queries are dependent on other queries, run
144144
// them one at a time.
145+
q.queryProfileTypes(ctx, interval)
145146
q.queryLabels(ctx, interval)
146147
q.queryValues(ctx, interval)
147-
q.queryProfileTypes(ctx, interval)
148148
q.queryRange(ctx)
149149
q.querySingle(ctx)
150150
q.queryMerge(ctx)
@@ -170,6 +170,13 @@ func (q *Querier) Stop() {
170170
}
171171

172172
func (q *Querier) queryLabels(ctx context.Context, interval time.Duration) {
173+
// Pick a random profile type if available
174+
var profileType *string
175+
if len(q.profileTypes) > 0 {
176+
pt := q.profileTypes[q.rng.Intn(len(q.profileTypes))]
177+
profileType = &pt
178+
}
179+
173180
for _, tr := range q.queryTimeRanges {
174181
rangeEnd := time.Now()
175182
rangeStart := rangeEnd.Add(-1 * tr)
@@ -180,19 +187,31 @@ func (q *Querier) queryLabels(ctx context.Context, interval time.Duration) {
180187
defer func() { count++ }()
181188

182189
queryStart := time.Now()
183-
resp, err = q.client.Labels(ctx, connect.NewRequest(&queryv1alpha1.LabelsRequest{
190+
req := &queryv1alpha1.LabelsRequest{
184191
Start: timestamppb.New(rangeStart),
185192
End: timestamppb.New(rangeEnd),
186-
}))
193+
}
194+
if profileType != nil {
195+
req.ProfileType = profileType
196+
}
197+
resp, err = q.client.Labels(ctx, connect.NewRequest(req))
187198
latency := time.Since(queryStart)
188199
if err != nil {
189200
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)
201+
if profileType != nil {
202+
log.Printf("labels(type=%s,over=%s): failed to make request %d: %v\n", *profileType, tr, count, err)
203+
} else {
204+
log.Printf("labels(over=%s): failed to make request %d: %v\n", tr, count, err)
205+
}
191206
return
192207
}
193208
q.metrics.labelsHistogram.WithLabelValues(grpcCodeOK).Observe(latency.Seconds())
194209
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))
210+
if profileType != nil {
211+
log.Printf("labels(type=%s,over=%s): took %v and got %d results\n", *profileType, tr, latency, len(resp.Msg.LabelNames))
212+
} else {
213+
log.Printf("labels(over=%s): took %v and got %d results\n", tr, latency, len(resp.Msg.LabelNames))
214+
}
196215

197216
return nil
198217
}
@@ -212,6 +231,13 @@ func (q *Querier) queryValues(ctx context.Context, interval time.Duration) {
212231
}
213232
label := q.labels[q.rng.Intn(len(q.labels))]
214233

234+
// Pick a random profile type if available
235+
var profileType *string
236+
if len(q.profileTypes) > 0 {
237+
pt := q.profileTypes[q.rng.Intn(len(q.profileTypes))]
238+
profileType = &pt
239+
}
240+
215241
for _, tr := range q.queryTimeRanges {
216242
rangeEnd := time.Now()
217243
rangeStart := rangeEnd.Add(-1 * tr)
@@ -221,20 +247,32 @@ func (q *Querier) queryValues(ctx context.Context, interval time.Duration) {
221247
operation := func() (err error) {
222248
defer func() { count++ }()
223249
queryStart := time.Now()
224-
resp, err = q.client.Values(ctx, connect.NewRequest(&queryv1alpha1.ValuesRequest{
250+
req := &queryv1alpha1.ValuesRequest{
225251
LabelName: label,
226252
Match: nil,
227253
Start: timestamppb.New(rangeStart),
228254
End: timestamppb.New(rangeEnd),
229-
}))
255+
}
256+
if profileType != nil {
257+
req.ProfileType = profileType
258+
}
259+
resp, err = q.client.Values(ctx, connect.NewRequest(req))
230260
latency := time.Since(queryStart)
231261
if err != nil {
232262
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)
263+
if profileType != nil {
264+
log.Printf("values(label=%s,type=%s,over=%s): failed to make request %d: %v\n", label, *profileType, tr, count, err)
265+
} else {
266+
log.Printf("values(label=%s,over=%s): failed to make request %d: %v\n", label, tr, count, err)
267+
}
234268
return
235269
}
236270
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))
271+
if profileType != nil {
272+
log.Printf("values(label=%s,type=%s,over=%s): took %v and got %d results\n", label, *profileType, tr, latency, len(resp.Msg.LabelValues))
273+
} else {
274+
log.Printf("values(label=%s,over=%s): took %v and got %d results\n", label, tr, latency, len(resp.Msg.LabelValues))
275+
}
238276

239277
return nil
240278
}

0 commit comments

Comments
 (0)