Skip to content

Commit 1e064b3

Browse files
authored
querier: add counter by grpc code for queries (#481)
This way we don't rely on histogram_count() which is not available in pyrra. Signed-off-by: Alfonso Subiotto Marques <[email protected]>
1 parent 674b014 commit 1e064b3

File tree

1 file changed

+66
-7
lines changed

1 file changed

+66
-7
lines changed

querier.go

Lines changed: 66 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ type querierMetrics struct {
3939
profileTypesHistogram *prometheus.HistogramVec
4040
rangeHistogram *prometheus.HistogramVec
4141
mergeHistogram *prometheus.HistogramVec
42+
labelsCounter *prometheus.CounterVec
43+
valuesCounter *prometheus.CounterVec
44+
profileTypesCounter *prometheus.CounterVec
45+
rangeCounter *prometheus.CounterVec
46+
mergeCounter *prometheus.CounterVec
4247
}
4348

4449
type Querier struct {
@@ -111,6 +116,42 @@ func NewQuerier(
111116
},
112117
[]string{"grpc_code", "range", "labels"},
113118
),
119+
labelsCounter: promauto.With(reg).NewCounterVec(
120+
prometheus.CounterOpts{
121+
Name: "parca_client_labels_total",
122+
Help: "Total number of Labels requests against Parca",
123+
},
124+
[]string{"grpc_code"},
125+
),
126+
valuesCounter: promauto.With(reg).NewCounterVec(
127+
prometheus.CounterOpts{
128+
Name: "parca_client_values_total",
129+
Help: "Total number of Values requests against Parca",
130+
},
131+
[]string{"grpc_code", "label"},
132+
),
133+
profileTypesCounter: promauto.With(reg).NewCounterVec(
134+
prometheus.CounterOpts{
135+
Name: "parca_client_profiletypes_total",
136+
Help: "Total number of ProfileTypes requests against Parca",
137+
},
138+
[]string{"grpc_code"},
139+
),
140+
rangeCounter: promauto.With(reg).NewCounterVec(
141+
prometheus.CounterOpts{
142+
Name: "parca_client_queryrange_total",
143+
Help: "Total number of QueryRange requests against Parca",
144+
},
145+
[]string{"grpc_code", "range", "labels"},
146+
),
147+
mergeCounter: promauto.With(reg).NewCounterVec(
148+
prometheus.CounterOpts{
149+
Name: "parca_client_query_total",
150+
Help: "Total number of Query requests against Parca",
151+
ConstLabels: map[string]string{"mode": "merge"},
152+
},
153+
[]string{"grpc_code", "range", "labels"},
154+
),
114155
},
115156
client: client,
116157
queryTimeRanges: queryTimeRangesConf,
@@ -228,9 +269,11 @@ func (q *Querier) fetchProfileTypes(ctx context.Context, tr time.Duration) (
228269
latency := time.Since(queryStart)
229270
if err != nil {
230271
q.metrics.profileTypesHistogram.WithLabelValues(connect.CodeOf(err).String()).Observe(latency.Seconds())
272+
q.metrics.profileTypesCounter.WithLabelValues(connect.CodeOf(err).String()).Inc()
231273
return nil, latency, err
232274
}
233275
q.metrics.profileTypesHistogram.WithLabelValues(grpcCodeOK).Observe(latency.Seconds())
276+
q.metrics.profileTypesCounter.WithLabelValues(grpcCodeOK).Inc()
234277
return resp.Msg.Types, latency, nil
235278
}
236279

@@ -256,10 +299,12 @@ func (q *Querier) queryLabels(ctx context.Context, interval time.Duration) {
256299
latency := time.Since(queryStart)
257300
if err != nil {
258301
q.metrics.labelsHistogram.WithLabelValues(connect.CodeOf(err).String()).Observe(latency.Seconds())
302+
q.metrics.labelsCounter.WithLabelValues(connect.CodeOf(err).String()).Inc()
259303
log.Printf("labels(type=%s,over=%s): failed to make request %d: %v\n", pt, tr, count, err)
260304
return
261305
}
262306
q.metrics.labelsHistogram.WithLabelValues(grpcCodeOK).Observe(latency.Seconds())
307+
q.metrics.labelsCounter.WithLabelValues(grpcCodeOK).Inc()
263308
log.Printf(
264309
"labels(type=%s,over=%s): took %v and got %d results\n",
265310
pt,
@@ -308,10 +353,8 @@ func (q *Querier) queryValues(ctx context.Context, interval time.Duration) {
308353
resp, err = q.client.Values(ctx, connect.NewRequest(req))
309354
latency := time.Since(queryStart)
310355
if err != nil {
311-
q.metrics.valuesHistogram.WithLabelValues(
312-
connect.CodeOf(err).String(),
313-
lbl,
314-
).Observe(latency.Seconds())
356+
q.metrics.valuesHistogram.WithLabelValues(connect.CodeOf(err).String(), lbl).Observe(latency.Seconds())
357+
q.metrics.valuesCounter.WithLabelValues(connect.CodeOf(err).String(), lbl).Inc()
315358
log.Printf(
316359
"values(label=%s,type=%s,over=%s): failed to make request %d: %v\n",
317360
lbl,
@@ -323,6 +366,7 @@ func (q *Querier) queryValues(ctx context.Context, interval time.Duration) {
323366
return
324367
}
325368
q.metrics.valuesHistogram.WithLabelValues(grpcCodeOK, lbl).Observe(latency.Seconds())
369+
q.metrics.valuesCounter.WithLabelValues(grpcCodeOK, lbl).Inc()
326370
log.Printf(
327371
"values(label=%s,type=%s,over=%s): took %v and got %d results\n",
328372
lbl,
@@ -396,6 +440,9 @@ func (q *Querier) queryRange(ctx context.Context) {
396440
q.metrics.rangeHistogram.WithLabelValues(
397441
connect.CodeOf(err).String(), tr.String(), labelSelector,
398442
).Observe(latency.Seconds())
443+
q.metrics.rangeCounter.WithLabelValues(
444+
connect.CodeOf(err).String(), tr.String(), labelSelector,
445+
).Inc()
399446
log.Printf(
400447
"range(query=%s,over=%s,labels=%s): failed to make request: %v\n",
401448
query,
@@ -407,10 +454,14 @@ func (q *Querier) queryRange(ctx context.Context) {
407454
}
408455

409456
q.metrics.rangeHistogram.WithLabelValues(
457+
grpcCodeOK, tr.String(),
458+
labelSelector,
459+
).Observe(latency.Seconds())
460+
q.metrics.rangeCounter.WithLabelValues(
410461
grpcCodeOK,
411462
tr.String(),
412463
labelSelector,
413-
).Observe(latency.Seconds())
464+
).Inc()
414465
log.Printf(
415466
"range(query=%s,over=%s,labels=%s): took %s and got %d series\n",
416467
query, tr, labelSelector, latency, len(resp.Msg.Series),
@@ -452,10 +503,14 @@ func (q *Querier) queryMerge(ctx context.Context) {
452503
latency := time.Since(queryStart)
453504
if err != nil {
454505
q.metrics.mergeHistogram.WithLabelValues(
506+
connect.CodeOf(err).String(), tr.String(),
507+
labelSelector,
508+
).Observe(latency.Seconds())
509+
q.metrics.mergeCounter.WithLabelValues(
455510
connect.CodeOf(err).String(),
456511
tr.String(),
457512
labelSelector,
458-
).Observe(latency.Seconds())
513+
).Inc()
459514

460515
log.Printf(
461516
"merge(query=%s,over=%s,labels=%s): failed to make request: %v\n",
@@ -465,10 +520,14 @@ func (q *Querier) queryMerge(ctx context.Context) {
465520
}
466521

467522
q.metrics.mergeHistogram.WithLabelValues(
523+
grpcCodeOK, tr.String(),
524+
labelSelector,
525+
).Observe(latency.Seconds())
526+
q.metrics.mergeCounter.WithLabelValues(
468527
grpcCodeOK,
469528
tr.String(),
470529
labelSelector,
471-
).Observe(latency.Seconds())
530+
).Inc()
472531

473532
log.Printf(
474533
"merge(query=%s,over=%s,labels=%s): took %s\n",

0 commit comments

Comments
 (0)