@@ -14,6 +14,13 @@ local utils = import 'mixin-utils/utils.libsonnet';
14
14
$.panel('Latency' ) +
15
15
utils.latencyRecordingRulePanel('cortex_request_duration_seconds' , $.jobSelector($._config.job_names.gateway) + [utils.selector.re('route' , 'api_prom_api_v1_.+' )])
16
16
)
17
+ .addPanel(
18
+ $.panel('Per %s p99 Latency' % $._config.per_instance_label) +
19
+ $.hiddenLegendQueryPanel(
20
+ 'histogram_quantile(0.99, sum by(le, %s) (rate(cortex_request_duration_seconds_bucket{%s, route=~"api_prom_api_v1_.+"}[$__interval])))' % [$._config.per_instance_label, $.jobMatcherEquality($._config.job_names.gateway)], ''
21
+ ) +
22
+ { yaxes: $.yaxes('s' ) }
23
+ )
17
24
)
18
25
.addRow(
19
26
$.row('Query Frontend' )
@@ -25,6 +32,13 @@ local utils = import 'mixin-utils/utils.libsonnet';
25
32
$.panel('Latency' ) +
26
33
utils.latencyRecordingRulePanel('cortex_request_duration_seconds' , $.jobSelector($._config.job_names.query_frontend) + [utils.selector.re('route' , 'api_prom_api_v1_.+' )])
27
34
)
35
+ .addPanel(
36
+ $.panel('Per %s p99 Latency' % $._config.per_instance_label) +
37
+ $.hiddenLegendQueryPanel(
38
+ 'histogram_quantile(0.99, sum by(le, %s) (rate(cortex_request_duration_seconds_bucket{%s, route=~"api_prom_api_v1_.+"}[$__interval])))' % [$._config.per_instance_label, $.jobMatcherEquality($._config.job_names.query_frontend)], ''
39
+ ) +
40
+ { yaxes: $.yaxes('s' ) }
41
+ )
28
42
)
29
43
.addRow(
30
44
$.row('Cache - Query Results' )
@@ -47,6 +61,13 @@ local utils = import 'mixin-utils/utils.libsonnet';
47
61
$.panel('Latency' ) +
48
62
utils.latencyRecordingRulePanel('cortex_request_duration_seconds' , $.jobSelector($._config.job_names.querier) + [utils.selector.re('route' , 'api_prom_api_v1_.+' )])
49
63
)
64
+ .addPanel(
65
+ $.panel('Per %s p99 Latency' % $._config.per_instance_label) +
66
+ $.hiddenLegendQueryPanel(
67
+ 'histogram_quantile(0.99, sum by(le, %s) (rate(cortex_request_duration_seconds_bucket{%s, route=~"api_prom_api_v1_.+"}[$__interval])))' % [$._config.per_instance_label, $.jobMatcherEquality($._config.job_names.querier)], ''
68
+ ) +
69
+ { yaxes: $.yaxes('s' ) }
70
+ )
50
71
)
51
72
.addRow(
52
73
$.row('Ingester' )
@@ -58,6 +79,13 @@ local utils = import 'mixin-utils/utils.libsonnet';
58
79
$.panel('Latency' ) +
59
80
utils.latencyRecordingRulePanel('cortex_request_duration_seconds' , $.jobSelector($._config.job_names.ingester) + [utils.selector.re('route' , '/cortex.Ingester/Query(Stream)?|/cortex.Ingester/MetricsForLabelMatchers|/cortex.Ingester/LabelValues|/cortex.Ingester/MetricsMetadata' )])
60
81
)
82
+ .addPanel(
83
+ $.panel('Per %s p99 Latency' % $._config.per_instance_label) +
84
+ $.hiddenLegendQueryPanel(
85
+ 'histogram_quantile(0.99, sum by(le, %s) (rate(cortex_request_duration_seconds_bucket{%s, route=~"/cortex.Ingester/Query(Stream)?|/cortex.Ingester/MetricsForLabelMatchers|/cortex.Ingester/LabelValues|/cortex.Ingester/MetricsMetadata"}[$__interval])))' % [$._config.per_instance_label, $.jobMatcherEquality($._config.job_names.ingester)], ''
86
+ ) +
87
+ { yaxes: $.yaxes('s' ) }
88
+ )
61
89
)
62
90
.addRowIf(
63
91
std.member($._config.storage_engine, 'blocks' ),
@@ -70,6 +98,13 @@ local utils = import 'mixin-utils/utils.libsonnet';
70
98
$.panel('Latency' ) +
71
99
utils.latencyRecordingRulePanel('cortex_request_duration_seconds' , $.jobSelector($._config.job_names.store_gateway) + [utils.selector.re('route' , '/gatewaypb.StoreGateway/.*' )])
72
100
)
101
+ .addPanel(
102
+ $.panel('Per %s p99 Latency' % $._config.per_instance_label) +
103
+ $.hiddenLegendQueryPanel(
104
+ 'histogram_quantile(0.99, sum by(le, %s) (rate(cortex_request_duration_seconds_bucket{%s, route=~"/gatewaypb.StoreGateway/.*"}[$__interval])))' % [$._config.per_instance_label, $.jobMatcherEquality($._config.job_names.store_gateway)], ''
105
+ ) +
106
+ { yaxes: $.yaxes('s' ) }
107
+ )
73
108
)
74
109
.addRowIf(
75
110
std.member($._config.storage_engine, 'chunks' ),
0 commit comments