Skip to content

Commit 7663db2

Browse files
committed
Consolidate query metrics and include result tag
Signed-off-by: Gary Brown <[email protected]>
1 parent e8e5962 commit 7663db2

File tree

2 files changed

+35
-39
lines changed

2 files changed

+35
-39
lines changed

Diff for: storage/spanstore/metrics/decorator.go

+13-9
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,15 @@ type ReadMetricsDecorator struct {
3434
}
3535

3636
type queryMetrics struct {
37-
Errors metrics.Counter `metric:"errors"`
38-
Attempts metrics.Counter `metric:"attempts"`
39-
Successes metrics.Counter `metric:"successes"`
40-
Responses metrics.Timer `metric:"responses"` //used as a histogram, not necessary for GetTrace
41-
ErrLatency metrics.Timer `metric:"errLatency"`
42-
OKLatency metrics.Timer `metric:"okLatency"`
37+
Errors metrics.Counter
38+
Attempts metrics.Counter
39+
Successes metrics.Counter
40+
Responses metrics.Timer //used as a histogram, not necessary for GetTrace
41+
ErrLatency metrics.Timer
42+
OKLatency metrics.Timer
4343
}
4444

4545
func (q *queryMetrics) emit(err error, latency time.Duration, responses int) {
46-
q.Attempts.Inc(1)
4746
if err != nil {
4847
q.Errors.Inc(1)
4948
q.ErrLatency.Record(latency)
@@ -66,9 +65,14 @@ func NewReadMetricsDecorator(spanReader spanstore.Reader, metricsFactory metrics
6665
}
6766

6867
func buildQueryMetrics(namespace string, metricsFactory metrics.Factory) *queryMetrics {
69-
qMetrics := &queryMetrics{}
7068
scoped := metricsFactory.Namespace(namespace, nil)
71-
metrics.Init(qMetrics, scoped, nil)
69+
qMetrics := &queryMetrics{
70+
Errors: scoped.Counter("requests", map[string]string{"result": "err"}),
71+
Successes: scoped.Counter("requests", map[string]string{"result": "ok"}),
72+
Responses: scoped.Timer("responses", nil),
73+
ErrLatency: scoped.Timer("latency", map[string]string{"result": "err"}),
74+
OKLatency: scoped.Timer("latency", map[string]string{"result": "ok"}),
75+
}
7276
return qMetrics
7377
}
7478

Diff for: storage/spanstore/metrics/decorator_test.go

+22-30
Original file line numberDiff line numberDiff line change
@@ -43,27 +43,23 @@ func TestSuccessfulUnderlyingCalls(t *testing.T) {
4343
mrs.FindTraces(context.Background(), &spanstore.TraceQueryParameters{})
4444
counters, gauges := mf.Snapshot()
4545
expecteds := map[string]int64{
46-
"get_operations.attempts": 1,
47-
"get_operations.successes": 1,
48-
"get_operations.errors": 0,
49-
"get_trace.attempts": 1,
50-
"get_trace.successes": 1,
51-
"get_trace.errors": 0,
52-
"find_traces.attempts": 1,
53-
"find_traces.successes": 1,
54-
"find_traces.errors": 0,
55-
"get_services.attempts": 1,
56-
"get_services.successes": 1,
57-
"get_services.errors": 0,
46+
"get_operations.requests|result=ok": 1,
47+
"get_operations.requests|result=err": 0,
48+
"get_trace.requests|result=ok": 1,
49+
"get_trace.requests|result=err": 0,
50+
"find_traces.requests|result=ok": 1,
51+
"find_traces.requests|result=err": 0,
52+
"get_services.requests|result=ok": 1,
53+
"get_services.requests|result=err": 0,
5854
}
5955

6056
existingKeys := []string{
61-
"get_operations.okLatency.P50",
57+
"get_operations.latency|result=ok.P50",
6258
"get_trace.responses.P50",
63-
"find_traces.okLatency.P50", // this is not exhaustive
59+
"find_traces.latency|result=ok.P50", // this is not exhaustive
6460
}
6561
nonExistentKeys := []string{
66-
"get_operations.errLatency.P50",
62+
"get_operations.latency|result=err.P50",
6763
}
6864

6965
checkExpectedExistingAndNonExistentCounters(t, counters, expecteds, gauges, existingKeys, nonExistentKeys)
@@ -100,28 +96,24 @@ func TestFailingUnderlyingCalls(t *testing.T) {
10096
mrs.FindTraces(context.Background(), &spanstore.TraceQueryParameters{})
10197
counters, gauges := mf.Snapshot()
10298
expecteds := map[string]int64{
103-
"get_operations.attempts": 1,
104-
"get_operations.successes": 0,
105-
"get_operations.errors": 1,
106-
"get_trace.attempts": 1,
107-
"get_trace.successes": 0,
108-
"get_trace.errors": 1,
109-
"find_traces.attempts": 1,
110-
"find_traces.successes": 0,
111-
"find_traces.errors": 1,
112-
"get_services.attempts": 1,
113-
"get_services.successes": 0,
114-
"get_services.errors": 1,
99+
"get_operations.requests|result=ok": 0,
100+
"get_operations.requests|result=err": 1,
101+
"get_trace.requests|result=ok": 0,
102+
"get_trace.requests|result=err": 1,
103+
"find_traces.requests|result=ok": 0,
104+
"find_traces.requests|result=err": 1,
105+
"get_services.requests|result=ok": 0,
106+
"get_services.requests|result=err": 1,
115107
}
116108

117109
existingKeys := []string{
118-
"get_operations.errLatency.P50",
110+
"get_operations.latency|result=err.P50",
119111
}
120112

121113
nonExistentKeys := []string{
122-
"get_operations.okLatency.P50",
114+
"get_operations.latency|result=ok.P50",
123115
"get_trace.responses.P50",
124-
"query.okLatency.P50", // this is not exhaustive
116+
"query.latency|result=ok.P50", // this is not exhaustive
125117
}
126118

127119
checkExpectedExistingAndNonExistentCounters(t, counters, expecteds, gauges, existingKeys, nonExistentKeys)

0 commit comments

Comments
 (0)