Skip to content

Commit a5e2290

Browse files
dashboard: metrics prefix for manual build
Part of #204
1 parent 6b63b0c commit a5e2290

File tree

10 files changed

+93
-55
lines changed

10 files changed

+93
-55
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1212
- Option to static build with custom set of sections
1313
- Custom description and Grafana tags on manual build
1414
- API to build a dashboard from YAML config
15+
- Support for metrics prefix on manual build
1516

1617
### Changed
1718
- Display two digits after decimal point instead of three

config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ filters: {
5151
alias: ['=~', '$alias'],
5252
}
5353

54+
# metrics_prefix is an additional prefix for metric names in Prometheus/InfluxQL queries
55+
# Use 'myapp_' if you expose metrics like 'myapp_tnt_uptime_info'
56+
# default is ''
57+
metrics_prefix: ''
58+
5459
# sections are dashboard panels sections to be included
5560
# The list of supported sections:
5661
# - cluster

dashboard/build/config.libsonnet

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ local variable = import 'dashboard/variable.libsonnet';
2525
grafana_tags: ['tarantool'],
2626
datasource: variable.datasource.prometheus,
2727
filters: {},
28+
metrics_prefix: '',
2829
sections: [
2930
'cluster',
3031
'replication',
@@ -51,6 +52,7 @@ local variable = import 'dashboard/variable.libsonnet';
5152
policy: variable.influxdb.policy,
5253
measurement: variable.influxdb.measurement,
5354
filters: {},
55+
metrics_prefix: '',
5456
sections: [
5557
'cluster',
5658
'replication',
@@ -83,6 +85,7 @@ local variable = import 'dashboard/variable.libsonnet';
8385
grafana_tags: 'array',
8486
datasource: 'string',
8587
filters: 'object',
88+
metrics_prefix: 'string',
8689
sections: 'array',
8790
},
8891
[variable.datasource_type.influxdb]: {
@@ -94,6 +97,7 @@ local variable = import 'dashboard/variable.libsonnet';
9497
policy: 'string',
9598
measurement: 'string',
9699
filters: 'object',
100+
metrics_prefix: 'string',
97101
sections: 'array',
98102
},
99103
},

dashboard/build/dashboard.libsonnet

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ local template_rules = {
4747
template(cfg):: grafana.template.new(
4848
name=std.lstripChars(cfg.filters.job[1], '$'),
4949
datasource=cfg.datasource,
50-
query=std.format('label_values(%s,job)', variable.metrics.tarantool_indicator),
50+
query=std.format('label_values(%s%s,job)', [cfg.metrics_prefix, variable.metrics.tarantool_indicator]),
5151
label='Prometheus job',
5252
refresh='load',
5353
),
@@ -58,8 +58,9 @@ local template_rules = {
5858
name=std.lstripChars(cfg.filters.alias[1], '$'),
5959
datasource=cfg.datasource,
6060
query=std.format(
61-
'label_values(%s{%s},alias)',
61+
'label_values(%s%s{%s},alias)',
6262
[
63+
cfg.metrics_prefix,
6364
variable.metrics.tarantool_indicator,
6465
panels_common.prometheus_query_filters(panels_common.remove_field(cfg.filters, 'alias')),
6566
]
@@ -100,8 +101,9 @@ local template_rules = {
100101
name=std.lstripChars(cfg.measurement, '$'),
101102
datasource=cfg.datasource,
102103
query=std.format(
103-
'SHOW MEASUREMENTS WHERE "metric_name"=\'%s\'%s',
104+
'SHOW MEASUREMENTS WHERE "metric_name"=\'%s%s\'%s',
104105
[
106+
cfg.metrics_prefix,
105107
variable.metrics.tarantool_indicator,
106108
if filters == '' then '' else std.format(' AND %s', filters),
107109
]

dashboard/panels/cluster.libsonnet

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,21 @@ local prometheus = grafana.prometheus;
7676
expr=if std.objectHas(cfg.filters, 'job') then
7777
std.format(
7878
|||
79-
up{%(up_filters)s} * on(instance) group_left(alias) tnt_info_uptime{%(tnt_filters)s} or
79+
up{%(up_filters)s} * on(instance) group_left(alias) %(metrics_prefix)stnt_info_uptime{%(tnt_filters)s} or
8080
on(instance) label_replace(up{%(up_filters)s}, "alias", "Not available", "instance", ".*")
8181
|||,
8282
{
8383
up_filters: common.prometheus_query_filters({ job: cfg.filters.job }),
8484
tnt_filters: common.prometheus_query_filters(common.remove_field(cfg.filters, 'alias')),
85+
metrics_prefix: cfg.metrics_prefix,
8586
}
86-
) else std.format('tnt_info_uptime{%s}', common.prometheus_query_filters(common.remove_field(cfg.filters, 'alias'))),
87+
) else std.format(
88+
'%stnt_info_uptime{%s}',
89+
[
90+
cfg.metrics_prefix,
91+
common.prometheus_query_filters(common.remove_field(cfg.filters, 'alias')),
92+
],
93+
),
8794
format='table',
8895
instant=true,
8996
)
@@ -136,6 +143,23 @@ local prometheus = grafana.prometheus;
136143
stat_title
137144
),
138145

146+
local aggregate_expr(cfg, metric_name, aggregate='sum', rate=false) =
147+
local inner_expr = std.format(
148+
'%s%s{%s}',
149+
[
150+
cfg.metrics_prefix,
151+
metric_name,
152+
common.prometheus_query_filters(common.remove_field(cfg.filters, 'alias')),
153+
]
154+
);
155+
std.format(
156+
'%s(%s)',
157+
[
158+
aggregate,
159+
if rate then std.format('rate(%s[$__rate_interval])', inner_expr) else inner_expr,
160+
]
161+
),
162+
139163
health_overview_stat(
140164
cfg,
141165
title='',
@@ -161,10 +185,7 @@ local prometheus = grafana.prometheus;
161185
common.prometheus_query_filters({ job: cfg.filters.job }),
162186
)
163187
else
164-
std.format(
165-
'count(tnt_info_uptime{%s})',
166-
common.prometheus_query_filters(common.remove_field(cfg.filters, 'alias'))
167-
),
188+
aggregate_expr(cfg, 'tnt_info_uptime', 'count'),
168189
) { gridPos: { w: 6, h: 3 } }
169190
else if cfg.type == variable.datasource_type.influxdb then
170191
error 'InfluxDB target is not supported yet',
@@ -189,8 +210,7 @@ local prometheus = grafana.prometheus;
189210
stat_title='Overall memory used:',
190211
decimals=2,
191212
unit='bytes',
192-
expr=std.format('sum(tnt_slab_arena_used{%s})',
193-
[common.prometheus_query_filters(common.remove_field(cfg.filters, 'alias'))]),
213+
expr=aggregate_expr(cfg, 'tnt_slab_arena_used'),
194214
) { gridPos: { w: 3, h: 3 } }
195215
else if cfg.type == variable.datasource_type.influxdb then
196216
error 'InfluxDB target is not supported yet',
@@ -214,8 +234,7 @@ local prometheus = grafana.prometheus;
214234
stat_title='Overall memory reserved:',
215235
decimals=2,
216236
unit='bytes',
217-
expr=std.format('sum(tnt_slab_quota_size{%s})',
218-
[common.prometheus_query_filters(common.remove_field(cfg.filters, 'alias'))]),
237+
expr=aggregate_expr(cfg, 'tnt_slab_quota_size'),
219238
) { gridPos: { w: 3, h: 3 } }
220239
else if cfg.type == variable.datasource_type.influxdb then
221240
error 'InfluxDB target is not supported yet',
@@ -239,8 +258,7 @@ local prometheus = grafana.prometheus;
239258
stat_title='Overall space load:',
240259
decimals=2,
241260
unit='ops',
242-
expr=std.format('sum(rate(tnt_stats_op_total{%s}[$__rate_interval]))',
243-
[common.prometheus_query_filters(common.remove_field(cfg.filters, 'alias'))]),
261+
expr=aggregate_expr(cfg, 'tnt_stats_op_total', rate=true),
244262
) { gridPos: { w: 4, h: 5 } }
245263
else if cfg.type == variable.datasource_type.influxdb then
246264
error 'InfluxDB target is not supported yet',
@@ -264,8 +282,7 @@ local prometheus = grafana.prometheus;
264282
stat_title='Overall HTTP load:',
265283
decimals=2,
266284
unit='reqps',
267-
expr=std.format('sum(rate(http_server_request_latency_count{%s}[$__rate_interval]))',
268-
[common.prometheus_query_filters(common.remove_field(cfg.filters, 'alias'))]),
285+
expr=aggregate_expr(cfg, 'http_server_request_latency_count', rate=true),
269286
) { gridPos: { w: 4, h: 5 } }
270287
else if cfg.type == variable.datasource_type.influxdb then
271288
error 'InfluxDB target is not supported yet',
@@ -288,8 +305,7 @@ local prometheus = grafana.prometheus;
288305
stat_title='Overall net load:',
289306
decimals=2,
290307
unit='reqps',
291-
expr=std.format('sum(rate(tnt_net_requests_total{%s}[$__rate_interval]))',
292-
[common.prometheus_query_filters(common.remove_field(cfg.filters, 'alias'))]),
308+
expr=aggregate_expr(cfg, 'tnt_net_requests_total', rate=true),
293309
) { gridPos: { w: 4, h: 5 } }
294310
else if cfg.type == variable.datasource_type.influxdb then
295311
error 'InfluxDB target is not supported yet',

dashboard/panels/common.libsonnet

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ local influxdb_query_filters(filters) = std.join(' AND ', std.map(
8787
)::
8888
local filters = additional_filters[cfg.type] + cfg.filters;
8989
if cfg.type == variable.datasource_type.prometheus then
90-
local expr = std.format('%s{%s}', [metric_name, prometheus_query_filters(filters)]);
90+
local expr = std.format('%s%s{%s}', [cfg.metrics_prefix, metric_name, prometheus_query_filters(filters)]);
9191
prometheus.target(
9292
expr=if rate then std.format('rate(%s[$__rate_interval])', expr) else expr,
9393
legendFormat=legend[cfg.type],
@@ -103,7 +103,7 @@ local influxdb_query_filters(filters) = std.join(' AND ', std.map(
103103
group_tags=group_tags,
104104
alias=legend[cfg.type],
105105
fill='null',
106-
).where('metric_name', '=', metric_name)
106+
).where('metric_name', '=', std.format('%s%s', [cfg.metrics_prefix, metric_name]))
107107
).selectField('value').addConverter(converter);
108108
if rate then target.addConverter('non_negative_derivative', ['1s']) else target,
109109

dashboard/panels/crud.libsonnet

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -352,10 +352,11 @@ local tuples_panel(
352352
prometheus.target(
353353
expr=std.format(
354354
|||
355-
rate(%(metric_name)s{%(filters)s}[$__rate_interval]) /
356-
(sum without (status) (rate(tnt_crud_stats_count{%(filters)s}[$__rate_interval])))
355+
rate(%(metrics_prefix)s%(metric_name)s{%(filters)s}[$__rate_interval]) /
356+
(sum without (status) (rate(%(metrics_prefix)stnt_crud_stats_count{%(filters)s}[$__rate_interval])))
357357
|||,
358358
{
359+
metrics_prefix: cfg.metrics_prefix,
359360
metric_name: metric_name,
360361
filters: filters,
361362
}
@@ -369,16 +370,17 @@ local tuples_panel(
369370
influxdb.target(
370371
rawQuery=true,
371372
query=std.format(|||
372-
SELECT mean("%(metric_name)s") / (mean("tnt_crud_stats_count_ok") + mean("tnt_crud_stats_count_error"))
373-
as "tnt_crud_tuples_per_request" FROM
374-
(SELECT "value" as "%(metric_name)s" FROM %(policy_prefix)s"%(measurement)s"
375-
WHERE ("metric_name" = '%(metric_name)s' %(filters)s) AND $timeFilter),
376-
(SELECT "value" as "tnt_crud_stats_count_error" FROM %(policy_prefix)s"%(measurement)s"
377-
WHERE ("metric_name" = 'tnt_crud_stats_count' %(filters)s AND "label_pairs_status" = 'error') AND $timeFilter),
378-
(SELECT "value" as "tnt_crud_stats_count_ok" FROM %(policy_prefix)s"%(measurement)s"
379-
WHERE ("metric_name" = 'tnt_crud_stats_count' %(filters)s AND "label_pairs_status" = 'ok') AND $timeFilter)
373+
SELECT mean("%(metrics_prefix)s%(metric_name)s") / (mean("%(metrics_prefix)stnt_crud_stats_count_ok") + mean("tnt_crud_stats_count_error"))
374+
as "%(metrics_prefix)stnt_crud_tuples_per_request" FROM
375+
(SELECT "value" as "%(metrics_prefix)s%(metric_name)s" FROM %(policy_prefix)s"%(measurement)s"
376+
WHERE ("metric_name" = '%(metrics_prefix)s%(metric_name)s' %(filters)s) AND $timeFilter),
377+
(SELECT "value" as "%(metrics_prefix)stnt_crud_stats_count_error" FROM %(policy_prefix)s"%(measurement)s"
378+
WHERE ("metric_name" = '%(metrics_prefix)stnt_crud_stats_count' %(filters)s AND "label_pairs_status" = 'error') AND $timeFilter),
379+
(SELECT "value" as "%(metrics_prefix)stnt_crud_stats_count_ok" FROM %(policy_prefix)s"%(measurement)s"
380+
WHERE ("metric_name" = '%(metrics_prefix)stnt_crud_stats_count' %(filters)s AND "label_pairs_status" = 'ok') AND $timeFilter)
380381
GROUP BY time($__interval * 2), "label_pairs_alias", "label_pairs_name" fill(0)
381382
|||, {
383+
metrics_prefix: cfg.metrics_prefix,
382384
metric_name: metric_name,
383385
policy_prefix: if cfg.policy == 'default' then '' else std.format('"%(policy)s".', cfg.policy),
384386
measurement: cfg.measurement,

dashboard/panels/tdg/graphql.libsonnet

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,10 @@ local prometheus = grafana.prometheus;
3737
prometheus.target(
3838
expr=std.format(
3939
|||
40-
%(metric_name_sum)s{%(filters)s} / %(metric_name_count)s{%(filters)s}
40+
%(metrics_prefix)s%(metric_name_sum)s{%(filters)s} / %(metrics_prefix)s%(metric_name_count)s{%(filters)s}
4141
|||,
4242
{
43+
metrics_prefix: cfg.metrics_prefix,
4344
metric_name_sum: std.join('_', [metric_name, 'sum']),
4445
metric_name_count: std.join('_', [metric_name, 'count']),
4546
filters: filters,
@@ -52,17 +53,18 @@ local prometheus = grafana.prometheus;
5253
influxdb.target(
5354
rawQuery=true,
5455
query=std.format(|||
55-
SELECT mean("%(metric_name_sum)s") / mean("%(metric_name_count)s")
56+
SELECT mean("%(metrics_prefix)s%(metric_name_sum)s") / mean("%(metrics_prefix)s%(metric_name_count)s")
5657
as "average" FROM
57-
(SELECT "value" as "%(metric_name_sum)s" FROM %(policy_prefix)s"%(measurement)s"
58-
WHERE ("metric_name" = '%(metric_name_sum)s' %(filters)s)
58+
(SELECT "value" as "%(metrics_prefix)s%(metric_name_sum)s" FROM %(policy_prefix)s"%(measurement)s"
59+
WHERE ("metric_name" = '%(metrics_prefix)s%(metric_name_sum)s' %(filters)s)
5960
AND $timeFilter),
60-
(SELECT "value" as "%(metric_name_count)s" FROM %(policy_prefix)s"%(measurement)s"
61-
WHERE ("metric_name" = '%(metric_name_count)s' %(filters)s)
61+
(SELECT "value" as "%(metrics_prefix)s%(metric_name_count)s" FROM %(policy_prefix)s"%(measurement)s"
62+
WHERE ("metric_name" = '%(metrics_prefix)s%(metric_name_count)s' %(filters)s)
6263
AND $timeFilter)
6364
GROUP BY time($__interval), "label_pairs_alias", "label_pairs_operation_name",
6465
"label_pairs_schema", "label_pairs_entity" fill(null)
6566
|||, {
67+
metrics_prefix: cfg.metrics_prefix,
6668
metric_name_sum: std.join('_', [metric_name, 'sum']),
6769
metric_name_count: std.join('_', [metric_name, 'count']),
6870
policy_prefix: if cfg.policy == 'default' then '' else std.format('"%(policy)s".', cfg.policy),

dashboard/panels/tdg/tasks.libsonnet

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,10 @@ local prometheus = grafana.prometheus;
8383
prometheus.target(
8484
expr=std.format(
8585
|||
86-
%(metric_name_sum)s{%(filters)s} / %(metric_name_count)s{%(filters)s"}
86+
%(metrics_prefix)s%(metric_name_sum)s{%(filters)s} / %(metrics_prefix)s%(metric_name_count)s{%(filters)s"}
8787
|||,
8888
{
89+
metrics_prefix: cfg.metrics_prefix,
8990
metric_name_sum: std.join('_', [metric_name, 'sum']),
9091
metric_name_count: std.join('_', [metric_name, 'count']),
9192
filters: filters,
@@ -98,16 +99,17 @@ local prometheus = grafana.prometheus;
9899
influxdb.target(
99100
rawQuery=true,
100101
query=std.format(|||
101-
SELECT mean("%(metric_name_sum)s") / mean("%(metric_name_count)s")
102+
SELECT mean("%(metrics_prefix)s%(metric_name_sum)s") / mean("%(metrics_prefix)s%(metric_name_count)s")
102103
as "average" FROM
103-
(SELECT "value" as "%(metric_name_sum)s" FROM %(policy_prefix)s"%(measurement)s"
104-
WHERE ("metric_name" = '%(metric_name_sum)s' %(filters)s)
104+
(SELECT "value" as "%(metrics_prefix)s%(metric_name_sum)s" FROM %(policy_prefix)s"%(measurement)s"
105+
WHERE ("metric_name" = '%(metrics_prefix)s%(metric_name_sum)s' %(filters)s)
105106
AND $timeFilter),
106-
(SELECT "value" as "%(metric_name_count)s" FROM %(policy_prefix)s"%(measurement)s"
107-
WHERE ("metric_name" = '%(metric_name_count)s' %(filters)s)
107+
(SELECT "value" as "%(metrics_prefix)s%(metric_name_count)s" FROM %(policy_prefix)s"%(measurement)s"
108+
WHERE ("metric_name" = '%(metrics_prefix)s%(metric_name_count)s' %(filters)s)
108109
AND $timeFilter)
109110
GROUP BY time($__interval), "label_pairs_alias", "label_pairs_name" fill(null)
110111
|||, {
112+
metrics_prefix: cfg.metrics_prefix,
111113
metric_name_sum: std.join('_', [metric_name, 'sum']),
112114
metric_name_count: std.join('_', [metric_name, 'count']),
113115
policy_prefix: if cfg.policy == 'default' then '' else std.format('"%(policy)s".', cfg.policy),
@@ -194,9 +196,10 @@ local prometheus = grafana.prometheus;
194196
prometheus.target(
195197
expr=std.format(
196198
|||
197-
%(metric_name_sum)s{%(filters)s} / %(metric_name_count)s{%(filters)s}
199+
%(metrics_prefix)s%(metric_name_sum)s{%(filters)s} / %(metrics_prefix)s%(metric_name_count)s{%(filters)s}
198200
|||,
199201
{
202+
metrics_prefix: cfg.metrics_prefix,
200203
metric_name_sum: std.join('_', [metric_name, 'sum']),
201204
metric_name_count: std.join('_', [metric_name, 'count']),
202205
filters: filters,
@@ -209,17 +212,18 @@ local prometheus = grafana.prometheus;
209212
influxdb.target(
210213
rawQuery=true,
211214
query=std.format(|||
212-
SELECT mean("%(metric_name_sum)s") / mean("%(metric_name_count)s")
215+
SELECT mean("%(metrics_prefix)s%(metric_name_sum)s") / mean("%(metrics_prefix)s%(metric_name_count)s")
213216
as "average" FROM
214-
(SELECT "value" as "%(metric_name_sum)s" FROM %(policy_prefix)s"%(measurement)s"
215-
WHERE ("metric_name" = '%(metric_name_sum)s' %(filters)s)
217+
(SELECT "value" as "%(metrics_prefix)s%(metric_name_sum)s" FROM %(policy_prefix)s"%(measurement)s"
218+
WHERE ("metric_name" = '%(metrics_prefix)s%(metric_name_sum)s' %(filters)s)
216219
AND $timeFilter),
217-
(SELECT "value" as "%(metric_name_count)s" FROM %(policy_prefix)s"%(measurement)s"
218-
WHERE ("metric_name" = '%(metric_name_count)s' %(filters)s)
220+
(SELECT "value" as "%(metrics_prefix)s%(metric_name_count)s" FROM %(policy_prefix)s"%(measurement)s"
221+
WHERE ("metric_name" = '%(metrics_prefix)s%(metric_name_count)s' %(filters)s)
219222
AND $timeFilter)
220223
GROUP BY time($__interval), "label_pairs_alias", "label_pairs_name",
221224
"label_pairs_kind" fill(null)
222225
|||, {
226+
metrics_prefix: cfg.metrics_prefix,
223227
metric_name_sum: std.join('_', [metric_name, 'sum']),
224228
metric_name_count: std.join('_', [metric_name, 'count']),
225229
policy_prefix: if cfg.policy == 'default' then '' else std.format('"%(policy)s".', cfg.policy),

dashboard/panels/tdg/tuples.libsonnet

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ local prometheus = grafana.prometheus;
1818
prometheus.target(
1919
expr=std.format(
2020
|||
21-
%(metric_name_sum)s{%(filters)s} / %(metric_name_count)s{%(filters)s}
21+
%(metrics_prefix)s%(metric_name_sum)s{%(filters)s} / %(metrics_prefix)s%(metric_name_count)s{%(filters)s}
2222
|||,
2323
{
24+
metrics_prefix: cfg.metrics_prefix,
2425
metric_name_sum: std.join('_', [metric_name, 'sum']),
2526
metric_name_count: std.join('_', [metric_name, 'count']),
2627
filters: filters,
@@ -33,14 +34,15 @@ local prometheus = grafana.prometheus;
3334
influxdb.target(
3435
rawQuery=true,
3536
query=std.format(|||
36-
SELECT mean("%(metric_name_sum)s") / mean("%(metric_name_count)s")
37+
SELECT mean("%(metrics_prefix)s%(metric_name_sum)s") / mean("%(metrics_prefix)s%(metric_name_count)s")
3738
as "average" FROM
38-
(SELECT "value" as "%(metric_name_sum)s" FROM %(policy_prefix)s"%(measurement)s"
39-
WHERE ("metric_name" = '%(metric_name_sum)s' %(filters)s) AND $timeFilter),
40-
(SELECT "value" as "%(metric_name_count)s" FROM %(policy_prefix)s"%(measurement)s"
41-
WHERE ("metric_name" = '%(metric_name_count)s' %(filters)s) AND $timeFilter)
39+
(SELECT "value" as "%(metrics_prefix)s%(metric_name_sum)s" FROM %(policy_prefix)s"%(measurement)s"
40+
WHERE ("metric_name" = '%(metrics_prefix)s%(metric_name_sum)s' %(filters)s) AND $timeFilter),
41+
(SELECT "value" as "%(metrics_prefix)s%(metric_name_count)s" FROM %(policy_prefix)s"%(measurement)s"
42+
WHERE ("metric_name" = '%(metrics_prefix)s%(metric_name_count)s' %(filters)s) AND $timeFilter)
4243
GROUP BY time($__interval), "label_pairs_alias", "label_pairs_type_name" fill(null)
4344
|||, {
45+
metrics_prefix: cfg.metrics_prefix,
4446
metric_name_sum: std.join('_', [metric_name, 'sum']),
4547
metric_name_count: std.join('_', [metric_name, 'count']),
4648
policy_prefix: if cfg.policy == 'default' then '' else std.format('"%(policy)s".', cfg.policy),

0 commit comments

Comments
 (0)