@@ -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' ,
0 commit comments