Skip to content

Commit 297984b

Browse files
authored
grafana-builder: support from_recording in latencyPanelNativeHistogram (#1564)
1 parent 76672ce commit 297984b

File tree

2 files changed

+51
-5
lines changed

2 files changed

+51
-5
lines changed

grafana-builder/grafana.libsonnet

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ local utils = import 'mixin-utils/utils.libsonnet';
552552

553553
// Assumes that there is a dashboard variable named latency_metrics, values are -1 (native) or 1 (classic)
554554
// By default it shows the 99th and 50th quantile.
555-
latencyPanelNativeHistogram(metricName, selector, multiplier='1e3', quantile=[99, 50]):: {
555+
latencyPanelNativeHistogram(metricName, selector, multiplier='1e3', quantile=[99, 50], from_recording=false):: {
556556
nullPointMode: 'null as zero',
557557
fieldConfig+: {
558558
defaults+: {
@@ -570,13 +570,13 @@ local utils = import 'mixin-utils/utils.libsonnet';
570570
local qStr = std.toString(q);
571571
acc + [
572572
{
573-
expr: utils.showNativeHistogramQuery(utils.ncHistogramQuantile(std.format('%.2f', q / 100), metricName, selector, multiplier=multiplier)),
573+
expr: utils.showNativeHistogramQuery(utils.ncHistogramQuantile(std.format('%.2f', q / 100), metricName, selector, multiplier=multiplier, from_recording=from_recording)),
574574
format: 'time_series',
575575
legendFormat: qStr + 'th percentile',
576576
refId: getNextRefId(acc),
577577
},
578578
{
579-
expr: utils.showClassicHistogramQuery(utils.ncHistogramQuantile(std.format('%.2f', q / 100), metricName, selector, multiplier=multiplier)),
579+
expr: utils.showClassicHistogramQuery(utils.ncHistogramQuantile(std.format('%.2f', q / 100), metricName, selector, multiplier=multiplier, from_recording=from_recording)),
580580
format: 'time_series',
581581
legendFormat: qStr + 'th percentile',
582582
refId: getNextRefId(acc) + '_classic',
@@ -589,13 +589,13 @@ local utils = import 'mixin-utils/utils.libsonnet';
589589
qTargets +
590590
[
591591
{
592-
expr: utils.showNativeHistogramQuery(utils.ncHistogramAverageRate(metricName, selector, multiplier=multiplier)),
592+
expr: utils.showNativeHistogramQuery(utils.ncHistogramAverageRate(metricName, selector, multiplier=multiplier, from_recording=from_recording)),
593593
format: 'time_series',
594594
legendFormat: 'Average',
595595
refId: getNextRefId(qTargets),
596596
},
597597
{
598-
expr: utils.showClassicHistogramQuery(utils.ncHistogramAverageRate(metricName, selector, multiplier=multiplier)),
598+
expr: utils.showClassicHistogramQuery(utils.ncHistogramAverageRate(metricName, selector, multiplier=multiplier, from_recording=from_recording)),
599599
format: 'time_series',
600600
legendFormat: 'Average',
601601
refId: getNextRefId(qTargets) + '_classic',

grafana-builder/test/test_native-classic-histogram.libsonnet

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,49 @@ test.new(std.thisFile)
5959
],
6060
)
6161
)
62+
63+
64+
+ test.case.new(
65+
name='LatencyPanel from recording',
66+
test=test.expect.eq(
67+
actual=std.get(builder.latencyPanelNativeHistogram('cluster_job_route:cortex_request_duration_seconds_bucket', 'cluster="cluster1"', '1e3', [99, 50], true), 'targets'),
68+
expected=[
69+
{
70+
expr: '(histogram_quantile(0.99, sum (cluster_job_route:cortex_request_duration_seconds_bucket:sum_rate{cluster="cluster1"})) * 1e3) and on() (vector($latency_metrics) == -1)',
71+
format: 'time_series',
72+
legendFormat: '99th percentile',
73+
refId: 'A',
74+
},
75+
{
76+
expr: '(histogram_quantile(0.99, sum by (le) (cluster_job_route:cortex_request_duration_seconds_bucket_bucket:sum_rate{cluster="cluster1"})) * 1e3) and on() (vector($latency_metrics) == 1)',
77+
format: 'time_series',
78+
legendFormat: '99th percentile',
79+
refId: 'A_classic',
80+
},
81+
{
82+
expr: '(histogram_quantile(0.50, sum (cluster_job_route:cortex_request_duration_seconds_bucket:sum_rate{cluster="cluster1"})) * 1e3) and on() (vector($latency_metrics) == -1)',
83+
format: 'time_series',
84+
legendFormat: '50th percentile',
85+
refId: 'B',
86+
},
87+
{
88+
expr: '(histogram_quantile(0.50, sum by (le) (cluster_job_route:cortex_request_duration_seconds_bucket_bucket:sum_rate{cluster="cluster1"})) * 1e3) and on() (vector($latency_metrics) == 1)',
89+
format: 'time_series',
90+
legendFormat: '50th percentile',
91+
refId: 'B_classic',
92+
},
93+
{
94+
expr: '(1e3 * sum(histogram_sum(cluster_job_route:cortex_request_duration_seconds_bucket:sum_rate{cluster="cluster1"})) /\nsum(histogram_count(cluster_job_route:cortex_request_duration_seconds_bucket:sum_rate{cluster="cluster1"}))\n) and on() (vector($latency_metrics) == -1)',
95+
format: 'time_series',
96+
legendFormat: 'Average',
97+
refId: 'C',
98+
},
99+
{
100+
expr: '(1e3 * sum(cluster_job_route:cortex_request_duration_seconds_bucket_sum:sum_rate{cluster="cluster1"}) /\nsum(cluster_job_route:cortex_request_duration_seconds_bucket_count:sum_rate{cluster="cluster1"})\n) and on() (vector($latency_metrics) == 1)',
101+
format: 'time_series',
102+
legendFormat: 'Average',
103+
refId: 'C_classic',
104+
},
105+
]
106+
)
107+
)

0 commit comments

Comments
 (0)