@@ -14,6 +14,13 @@ local utils = import 'mixin-utils/utils.libsonnet';
1414 $.panel('Latency' ) +
1515 utils.latencyRecordingRulePanel('cortex_request_duration_seconds' , $.jobSelector($._config.job_names.gateway) + [utils.selector.re('route' , 'api_prom_api_v1_.+' )])
1616 )
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+ )
1724 )
1825 .addRow(
1926 $.row('Query Frontend' )
@@ -25,6 +32,13 @@ local utils = import 'mixin-utils/utils.libsonnet';
2532 $.panel('Latency' ) +
2633 utils.latencyRecordingRulePanel('cortex_request_duration_seconds' , $.jobSelector($._config.job_names.query_frontend) + [utils.selector.re('route' , 'api_prom_api_v1_.+' )])
2734 )
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+ )
2842 )
2943 .addRow(
3044 $.row('Cache - Query Results' )
@@ -47,6 +61,13 @@ local utils = import 'mixin-utils/utils.libsonnet';
4761 $.panel('Latency' ) +
4862 utils.latencyRecordingRulePanel('cortex_request_duration_seconds' , $.jobSelector($._config.job_names.querier) + [utils.selector.re('route' , 'api_prom_api_v1_.+' )])
4963 )
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+ )
5071 )
5172 .addRow(
5273 $.row('Ingester' )
@@ -58,6 +79,13 @@ local utils = import 'mixin-utils/utils.libsonnet';
5879 $.panel('Latency' ) +
5980 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' )])
6081 )
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+ )
6189 )
6290 .addRowIf(
6391 std.member($._config.storage_engine, 'blocks' ),
@@ -70,6 +98,13 @@ local utils = import 'mixin-utils/utils.libsonnet';
7098 $.panel('Latency' ) +
7199 utils.latencyRecordingRulePanel('cortex_request_duration_seconds' , $.jobSelector($._config.job_names.store_gateway) + [utils.selector.re('route' , '/gatewaypb.StoreGateway/.*' )])
72100 )
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+ )
73108 )
74109 .addRowIf(
75110 std.member($._config.storage_engine, 'chunks' ),
0 commit comments