-
Notifications
You must be signed in to change notification settings - Fork 326
/
Copy pathgtop.js
104 lines (87 loc) · 1.99 KB
/
gtop.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
var blessed = require('blessed'),
contrib = require('blessed-contrib'),
monitor = require('./monitor');
var screen = blessed.screen()
var grid = new contrib.grid({
rows: 12,
cols: 12,
screen: screen
})
var cpuLine = grid.set(0, 0, 4, 12, contrib.line, {
showNthLabel: 5,
maxY: 100,
label: 'CPU History',
showLegend: true,
})
var memLine = grid.set(4, 0, 4, 8, contrib.line, {
showNthLabel: 5,
maxY: 100,
label: 'Memory and Swap History',
showLegend: true,
legend: {
width: 10
}
})
var memDonut = grid.set(4, 8, 2, 4, contrib.donut, {
radius: 8,
arcWidth: 3,
yPadding: 2,
remainColor: 'black',
label: 'Memory',
});
var swapDonut = grid.set(6, 8, 2, 4, contrib.donut, {
radius: 8,
arcWidth: 3,
yPadding: 2,
remainColor: 'black',
label: 'Swap',
});
var netSpark = grid.set(8, 0, 2, 6, contrib.sparkline, {
label: 'Network History',
tags: true,
style: {
fg: 'blue'
}
})
var diskDonut = grid.set(10, 0, 2, 6, contrib.donut, {
radius: 8,
arcWidth: 3,
yPadding: 2,
remainColor: 'black',
label: 'Disk usage',
})
var procTable = grid.set(8, 6, 4, 6, contrib.table, {
keys: true,
label: 'Processes',
columnSpacing: 1,
columnWidth: [7, 24, 7, 7]
})
procTable.focus()
screen.render();
screen.on('resize', function(a) {
cpuLine.emit('attach');
memLine.emit('attach');
memDonut.emit('attach');
swapDonut.emit('attach');
netSpark.emit('attach');
diskDonut.emit('attach');
procTable.emit('attach');
});
screen.key(['escape', 'q', 'C-c'], function(ch, key) {
return process.exit(0);
});
function init() {
new monitor.Cpu(cpuLine); //no Windows support
new monitor.Mem(memLine, memDonut, swapDonut);
new monitor.Net(netSpark);
new monitor.Disk(diskDonut);
new monitor.Proc(procTable); // no Windows support
}
process.on('uncaughtException', function(err) {
// avoid exiting due to unsupported system resources in Windows
});
process.on('unhandledRejection', console.dir);
module.exports = {
init: init,
monitor: monitor
};