11local grafana = import 'grafonnet/grafana.libsonnet' ;
22
33local common = import 'dashboard/panels/common.libsonnet' ;
4+ local common_utils = import 'dashboard/panels/common.libsonnet' ;
45local variable = import 'dashboard/variable.libsonnet' ;
56
67local influxdb = grafana.influxdb;
@@ -21,7 +22,7 @@ local prometheus = grafana.prometheus;
2122 format='percentunit' ,
2223 decimalsY1=0 ,
2324 min=0 ,
24- panel_width=12 ,
25+ panel_width=8 ,
2526 ).addTarget(
2627 common.target(cfg, metric_name, rate=true )
2728 ),
@@ -60,6 +61,69 @@ local prometheus = grafana.prometheus;
6061 metric_name='tnt_cpu_system_time' ,
6162 ),
6263
64+ local getrusage_cpu_total_percentage_graph(
65+ cfg, title, description, metric_user, metric_system,
66+ ) = common.default_graph(
67+ cfg,
68+ title=title,
69+ description=description,
70+ format='percentunit' ,
71+ decimalsY1=0 ,
72+ min=0 ,
73+ panel_width=8 ,
74+ ).addTarget(
75+ if cfg.type == variable.datasource_type.prometheus then
76+ prometheus.target(
77+ expr=std.format (
78+ 'rate(%s[$__rate_interval]) + rate(%s[$__rate_interval])' ,
79+ [
80+ metric_user,
81+ metric_system,
82+ ]
83+ ),
84+ legendFormat='{{alias}}'
85+ )
86+ else if cfg.type == variable.datasource_type.influxdb then
87+ local filters = common_utils.influxdb_query_filters(cfg.filters);
88+ influxdb.target(
89+ rawQuery=true ,
90+ query=std.format(|||
91+ SELECT mean("%(metrics_prefix)s%(metric_user)s") + mean("%(metrics_prefix)s%(metric_system)s")
92+ as "total" FROM
93+ (SELECT "value" as "%(metrics_prefix)s%(metric_user)s" FROM %(policy_prefix)s"%(measurement)s"
94+ WHERE ("metric_name" = '%(metrics_prefix)s%(metric_user)s' %(filters)s),
95+ (SELECT "value" as "%(metrics_prefix)s%(metric_system)s" FROM %(policy_prefix)s"%(measurement)s"
96+ WHERE ("metric_name" = '%(metrics_prefix)s%(metric_system)s' %(filters)s))
97+ GROUP BY time($__interval), "label_pairs_alias", "label_pairs_name" fill(none)
98+ ||| , {
99+ metrics_prefix: cfg.metrics_prefix,
100+ metric_user: metric_user,
101+ metric_system: metric_system,
102+ policy_prefix: if cfg.policy == 'default' then '' else std.format ('"%(policy)s".' , cfg.policy),
103+ measurement: cfg.measurement,
104+ filters: if filters == '' then '' else std.format ('AND %s' , filters),
105+ }),
106+ alias='$tag_label_pairs_name — $tag_label_pairs_alias'
107+ ),
108+ ),
109+
110+ getrusage_cpu_total_time(
111+ cfg,
112+ title='CPU total time' ,
113+ description=|||
114+ This is the average share of time spent
115+ by instance process executing.
116+
117+ Panel minimal requirements: metrics 0.8.0.
118+ ||| ,
119+ ):: getrusage_cpu_total_percentage_graph(
120+ cfg=cfg,
121+ title=title,
122+ description=description,
123+ metric_user='tnt_cpu_user_time' ,
124+ metric_system='tnt_cpu_system_time' ,
125+ ),
126+
63127 local procstat_thread_time_graph(
64128 cfg,
65129 title,
0 commit comments