From 5d65d4ce03f18b99891d6fa3e8e58267d4d8ac15 Mon Sep 17 00:00:00 2001 From: Joey Tawadrous <90795735+joey-grafana@users.noreply.github.com> Date: Mon, 20 Jun 2022 09:56:45 +0100 Subject: [PATCH] Traces: APM table improvements (#50969) * Update rate and error rate query link * Update tests for new rate and error rate links * Update duration query * Update tests for new duration query --- .../app/plugins/datasource/tempo/datasource.test.ts | 12 ++++++------ public/app/plugins/datasource/tempo/datasource.ts | 2 ++ .../app/plugins/datasource/tempo/graphTransform.ts | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/public/app/plugins/datasource/tempo/datasource.test.ts b/public/app/plugins/datasource/tempo/datasource.test.ts index e2466291341..29c90cb5936 100644 --- a/public/app/plugins/datasource/tempo/datasource.test.ts +++ b/public/app/plugins/datasource/tempo/datasource.test.ts @@ -372,7 +372,7 @@ describe('Tempo apm table', () => { expect(response.data[0].fields[1].config.decimals).toBe(2); expect(response.data[0].fields[1].config.links[0].title).toBe('Rate'); expect(response.data[0].fields[1].config.links[0].internal.query.expr).toBe( - 'topk(5, sum(rate(traces_spanmetrics_calls_total{span_name="${__data.fields[0]}"}[$__rate_interval])) by (span_name))' + 'sum(rate(traces_spanmetrics_calls_total{span_name="${__data.fields[0]}"}[$__rate_interval]))' ); expect(response.data[0].fields[1].config.links[0].internal.query.range).toBe(true); expect(response.data[0].fields[1].config.links[0].internal.query.exemplar).toBe(true); @@ -392,7 +392,7 @@ describe('Tempo apm table', () => { expect(response.data[0].fields[3].config.decimals).toBe(2); expect(response.data[0].fields[3].config.links[0].title).toBe('Error Rate'); expect(response.data[0].fields[3].config.links[0].internal.query.expr).toBe( - 'topk(5, sum(rate(traces_spanmetrics_calls_total{span_status="STATUS_CODE_ERROR",span_name="${__data.fields[0]}"}[$__rate_interval])) by (span_name))' + 'sum(rate(traces_spanmetrics_calls_total{span_status="STATUS_CODE_ERROR",span_name="${__data.fields[0]}"}[$__rate_interval]))' ); expect(response.data[0].fields[3].config.links[0].internal.query.range).toBe(true); expect(response.data[0].fields[3].config.links[0].internal.query.exemplar).toBe(true); @@ -412,7 +412,7 @@ describe('Tempo apm table', () => { expect(response.data[0].fields[5].config.unit).toBe('s'); expect(response.data[0].fields[5].config.links[0].title).toBe('Duration'); expect(response.data[0].fields[5].config.links[0].internal.query.expr).toBe( - 'histogram_quantile(.9, sum(rate(traces_spanmetrics_duration_seconds_bucket{span_status="STATUS_CODE_ERROR",span_name="${__data.fields[0]}"}[$__rate_interval])) by (le))' + 'histogram_quantile(.9, sum(rate(traces_spanmetrics_duration_seconds_bucket{span_name="${__data.fields[0]}"}[$__rate_interval])) by (le))' ); expect(response.data[0].fields[5].config.links[0].internal.query.range).toBe(true); expect(response.data[0].fields[5].config.links[0].internal.query.exemplar).toBe(true); @@ -479,7 +479,7 @@ describe('Tempo apm table', () => { it('should build link expr correctly', () => { let builtQuery = buildLinkExpr('topk(5, sum(rate(traces_spanmetrics_calls_total{}[$__range])) by (span_name))'); - expect(builtQuery).toBe('topk(5, sum(rate(traces_spanmetrics_calls_total{}[$__rate_interval])) by (span_name))'); + expect(builtQuery).toBe('sum(rate(traces_spanmetrics_calls_total{}[$__rate_interval]))'); }); it('should get rate aligned values correctly', () => { @@ -640,11 +640,11 @@ const errorRateMetric = new MutableDataFrame({ const durationMetric = new MutableDataFrame({ refId: - 'histogram_quantile(.9, sum(rate(traces_spanmetrics_duration_seconds_bucket{span_status="STATUS_CODE_ERROR",span_name=~"HTTP GET - root"}[$__range])) by (le))', + 'histogram_quantile(.9, sum(rate(traces_spanmetrics_duration_seconds_bucket{span_name=~"HTTP GET - root"}[$__range])) by (le))', fields: [ { name: 'Time', values: [1653725618609] }, { - name: 'Value #histogram_quantile(.9, sum(rate(traces_spanmetrics_duration_seconds_bucket{span_status="STATUS_CODE_ERROR",span_name=~"HTTP GET - root"}[$__range])) by (le))', + name: 'Value #histogram_quantile(.9, sum(rate(traces_spanmetrics_duration_seconds_bucket{span_name=~"HTTP GET - root"}[$__range])) by (le))', values: [0.12003505696757232], }, ], diff --git a/public/app/plugins/datasource/tempo/datasource.ts b/public/app/plugins/datasource/tempo/datasource.ts index b1936aeb07e..0c70376010a 100644 --- a/public/app/plugins/datasource/tempo/datasource.ts +++ b/public/app/plugins/datasource/tempo/datasource.ts @@ -766,6 +766,8 @@ export function buildExpr( } export function buildLinkExpr(expr: string) { + // don't want top 5 or by span name in links + expr = expr.replace('topk(5, ', '').replace(' by (span_name))', ''); return expr.replace('__range', '__rate_interval'); } diff --git a/public/app/plugins/datasource/tempo/graphTransform.ts b/public/app/plugins/datasource/tempo/graphTransform.ts index f431c968920..e85dc31c67e 100644 --- a/public/app/plugins/datasource/tempo/graphTransform.ts +++ b/public/app/plugins/datasource/tempo/graphTransform.ts @@ -146,7 +146,7 @@ export const errorRateMetric = { }; export const durationMetric = { expr: 'histogram_quantile(.9, sum(rate(traces_spanmetrics_duration_seconds_bucket{}[$__range])) by (le))', - params: ['span_status="STATUS_CODE_ERROR"'], + params: [], }; export const serviceMapMetrics = [