Skip to content

Commit 99dc934

Browse files
authored
Fix cpu and some improvements (#33)
* Fix cpu * Fix instance link if there are multiple instanceLabels * Fix disk legends on topk(fleet) * Add cpuLoad and memory usage to fleet panel
1 parent 4f4b613 commit 99dc934

File tree

7 files changed

+68
-15
lines changed

7 files changed

+68
-15
lines changed

docs/node-mixin/lib/linux/panels/cpu.libsonnet

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ local xtd = import 'github.com/jsonnet-libs/xtd/main.libsonnet';
1111
local instanceLabel = xtd.array.slice(this.config.instanceLabels, -1)[0],
1212

1313
cpuCount: commonlib.panels.cpu.stat.count.new(targets=[t.cpu.cpuCount]),
14-
cpuUsageTsPerCore: commonlib.panels.cpu.timeSeries.utilization.new(targets=[t.cpu.cpuUsagePerCore])
15-
+ g.panel.timeSeries.fieldConfig.defaults.custom.withStacking({ mode: 'normal' }),
16-
14+
cpuUsageTsPerCore: commonlib.panels.cpu.timeSeries.utilization.new(targets=[t.cpu.cpuUsagePerCore]),
1715
cpuUsageTopk: commonlib.panels.generic.timeSeries.topkPercentage.new(
1816
title='CPU usage',
1917
target=t.cpu.cpuUsage,

docs/node-mixin/lib/linux/panels/disk.libsonnet

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ local xtd = import 'github.com/jsonnet-libs/xtd/main.libsonnet';
8282
title='Disk space usage',
8383
target=t.disk.diskUsagePercent,
8484
topk=25,
85-
instanceLabels=this.config.instanceLabels + ['volume'],
85+
instanceLabels=this.config.instanceLabels + ['mountpoint'],
8686
drillDownDashboardUid=this.grafana.dashboards['nodes.json'].uid,
8787
),
8888
diskIOBytesPerSec: commonlib.panels.disk.timeSeries.ioBytesPerSec.new(
@@ -93,7 +93,7 @@ local xtd = import 'github.com/jsonnet-libs/xtd/main.libsonnet';
9393
title='Disk IO',
9494
target=t.disk.diskIOutilization,
9595
topk=25,
96-
instanceLabels=this.config.instanceLabels + ['volume'],
96+
instanceLabels=this.config.instanceLabels + ['device'],
9797
drillDownDashboardUid=this.grafana.dashboards['nodes.json'].uid,
9898
),
9999
diskIOps:

docs/node-mixin/lib/linux/panels/fleet.libsonnet

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,14 @@ local xtd = import 'github.com/jsonnet-libs/xtd/main.libsonnet';
8383
{
8484
targetBlank: false,
8585
title: 'Drill down to ${__field.name} ${__value.text}',
86-
url: 'd/%s?var-%s=${__data.fields.%s}&${__url_time_range}&${datasource:queryparam}' % [this.grafana.dashboards['nodes.json'].uid, instanceLabel, instanceLabel],
86+
url: 'd/%s?${__url_time_range}&${datasource:queryparam}' % [this.grafana.dashboards['nodes.json'].uid]
87+
+ '&' +
88+
std.join(
89+
'&',
90+
std.map(
91+
function(x) 'var-%s=${__data.fields.%s}' % [x, x], this.config.instanceLabels
92+
)
93+
),
8794
},
8895
]),
8996
fieldOverride.byRegexp.new(std.join('|', std.map(utils.toSentenceCase, this.config.groupLabels)))

docs/node-mixin/lib/linux/panels/network.libsonnet

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ local xtd = import 'github.com/jsonnet-libs/xtd/main.libsonnet';
5151
function(t) t
5252
{
5353
expr: 'topk(25, ' + t.expr + ')>0',
54-
legendFormat: '{{' + this.config.instanceLabels[0] + '}}: ' + std.get(t, 'legendFormat', '{{ nic }}'),
54+
legendFormat: '{{' + instanceLabel + '}}: ' + std.get(t, 'legendFormat', '{{ nic }}'),
5555
},
5656
[
5757
t.network.networkOutErrorsPerSec,
@@ -80,6 +80,13 @@ local xtd = import 'github.com/jsonnet-libs/xtd/main.libsonnet';
8080
Dropped packets can impact network performance and lead to issues such as degraded voice or video quality in real-time applications.
8181
|||
8282
)
83+
+ g.panel.timeSeries.options.legend.withDisplayMode('table')
84+
+ g.panel.timeSeries.options.legend.withPlacement('right')
85+
+ g.panel.timeSeries.options.legend.withCalcsMixin([
86+
'mean',
87+
'max',
88+
'lastNotNull',
89+
])
8390
+ g.panel.timeSeries.fieldConfig.defaults.custom.withDrawStyle('points')
8491
+ g.panel.timeSeries.fieldConfig.defaults.custom.withPointSize(5),
8592

@@ -99,6 +106,28 @@ local xtd = import 'github.com/jsonnet-libs/xtd/main.libsonnet';
99106
targets=[t.network.networkInBitPerSecFiltered, t.network.networkOutBitPerSecFiltered]
100107
)
101108
+ commonlib.panels.network.timeSeries.traffic.withNegateOutPackets(),
109+
networkUsagePerSecTopK:
110+
commonlib.panels.network.timeSeries.traffic.new(
111+
title='Network traffic',
112+
targets=std.map(
113+
function(t) t
114+
{
115+
expr: 'topk(25, ' + t.expr + ')>0',
116+
legendFormat: '{{' + instanceLabel + '}}: ' + std.get(t, 'legendFormat', '{{ nic }}'),
117+
},
118+
[t.network.networkInBitPerSecFiltered, t.network.networkOutBitPerSecFiltered],
119+
120+
),
121+
description='Top 25 interfaces'
122+
)
123+
+ g.panel.timeSeries.options.legend.withDisplayMode('table')
124+
+ g.panel.timeSeries.options.legend.withPlacement('right')
125+
+ g.panel.timeSeries.options.legend.withCalcsMixin([
126+
'mean',
127+
'max',
128+
'lastNotNull',
129+
])
130+
+ commonlib.panels.network.timeSeries.traffic.withNegateOutPackets(),
102131
networkPacketsPerSec:
103132
commonlib.panels.network.timeSeries.packets.new(
104133
targets=[t.network.networkInPacketsPerSec, t.network.networkOutPacketsPerSec]

docs/node-mixin/lib/linux/panels/system.libsonnet

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,27 @@ local xtd = import 'github.com/jsonnet-libs/xtd/main.libsonnet';
1717
loadTargets=[t.system.systemLoad1, t.system.systemLoad5, t.system.systemLoad15],
1818
cpuCountTarget=t.cpu.cpuCount,
1919
),
20+
systemLoadTopK:
21+
commonlib.panels.system.timeSeries.loadAverage.new(
22+
title='Load average 1m',
23+
loadTargets=std.map(
24+
function(t) t
25+
{
26+
expr: 'topk(25, ' + t.expr + ')>0',
27+
legendFormat: '{{' + instanceLabel + '}}',
28+
},
29+
[t.system.systemLoad1],
30+
),
31+
cpuCountTarget=t.cpu.cpuCount { hide: true },
32+
description='Top 25',
33+
)
34+
+ g.panel.timeSeries.options.legend.withDisplayMode('table')
35+
+ g.panel.timeSeries.options.legend.withPlacement('right')
36+
+ g.panel.timeSeries.options.legend.withCalcsMixin([
37+
'mean',
38+
'max',
39+
'lastNotNull',
40+
]),
2041

2142
systemContextSwitchesAndInterrupts:
2243
commonlib.panels.generic.timeSeries.base.new(

docs/node-mixin/lib/linux/rows/linux.libsonnet

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ local commonlib = import 'common-lib/common/main.libsonnet';
1212
[
1313
// g.panel.row.new("Overview"),
1414
panels.fleet.fleetOverviewTable { gridPos+: { w: 24, h: 16 } },
15-
panels.cpu.cpuUsageTopk { gridPos+: { w: 24 } },
15+
panels.cpu.cpuUsageTopk { gridPos+: { w: 12 } },
16+
panels.system.systemLoadTopK { gridPos+: { w: 12 } },
1617
panels.memory.memotyUsageTopKPercent { gridPos+: { w: 24 } },
1718
panels.disk.diskIOutilPercentTopK { gridPos+: { w: 12 } },
1819
panels.disk.diskUsagePercentTopK { gridPos+: { w: 12 } },
19-
panels.network.networkErrorsAndDroppedPerSecTopK { gridPos+: { w: 24 } },
20+
panels.network.networkUsagePerSecTopK { gridPos+: { w: 12 } },
21+
panels.network.networkErrorsAndDroppedPerSecTopK { gridPos+: { w: 12 } },
2022
]
2123
),
2224
overview:

docs/node-mixin/lib/linux/targets/cpu.libsonnet

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ local lokiQuery = g.query.loki;
2121
|||
2222
(((count by (%(instanceLabels)s) (count(node_cpu_seconds_total{%(queriesSelector)s}) by (cpu, %(instanceLabels)s)))
2323
-
24-
avg by (%(instanceLabels)s) (sum by (%(instanceLabels)s, mode)(irate(node_cpu_seconds_total{mode='idle',%(queriesSelector)s}[$__rate_interval])))) * 100)
24+
sum by (%(instanceLabels)s) (sum by (%(instanceLabels)s, mode)(irate(node_cpu_seconds_total{mode=~'idle|iowait|steal',%(queriesSelector)s}[$__rate_interval])))) * 100)
2525
/
2626
count by(%(instanceLabels)s) (count(node_cpu_seconds_total{%(queriesSelector)s}) by (cpu, %(instanceLabels)s))
2727
||| % variables { instanceLabels: std.join(',', this.config.instanceLabels) },
@@ -31,11 +31,7 @@ local lokiQuery = g.query.loki;
3131
prometheusQuery.new(
3232
prometheusDatasource,
3333
|||
34-
(
35-
(1 - sum without (mode) (rate(node_cpu_seconds_total{%(queriesSelector)s, mode=~"idle|iowait|steal"}[$__rate_interval])))
36-
/ ignoring(cpu) group_left
37-
count without (cpu, mode) (node_cpu_seconds_total{%(queriesSelector)s, mode="idle"})
38-
) * 100
34+
(100 - sum without (mode) (rate(node_cpu_seconds_total{%(queriesSelector)s, mode=~"idle|iowait|steal"}[$__rate_interval])) * 100 )
3935
||| % variables,
4036
)
4137
+ prometheusQuery.withLegendFormat('CPU {{cpu}}'),

0 commit comments

Comments
 (0)