1 | var CLI = require('clui'),
|
2 | clc = require('cli-color'),
|
3 | os = require('os');
|
4 |
|
5 | var Line = CLI.Line,
|
6 | Gauge = CLI.Gauge;
|
7 | Sparkline = CLI.Sparkline;
|
8 |
|
9 | var drawTimeout;
|
10 | var requestSeries = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
|
11 | var errorSeries = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
|
12 |
|
13 | function draw() {
|
14 | console.log(clc.reset);
|
15 |
|
16 | var blankLine = new Line().fill().output();
|
17 |
|
18 | var total = os.totalmem();
|
19 | var free = os.freemem();
|
20 | var used = total-free;
|
21 | var human = Math.ceil(used / 1000000) + ' MB';
|
22 |
|
23 | var memoryLine = new Line()
|
24 | .padding(2)
|
25 | .column('Memory In Use', 20, [clc.cyan])
|
26 | .column(Gauge(used, total, 20, total * 0.8, human), 40)
|
27 | .fill()
|
28 | .output();
|
29 |
|
30 | var load = os.loadavg()[0];
|
31 | var maxLoad = os.cpus().length * 2;
|
32 | var danger = os.cpus().length;
|
33 |
|
34 | var loadLine = new Line()
|
35 | .padding(2)
|
36 | .column('System Load', 20, [clc.cyan])
|
37 | .column(Gauge(load, maxLoad, 20, danger, load.toString()), 40)
|
38 | .fill()
|
39 | .output();
|
40 |
|
41 | var uptimeLine = new Line()
|
42 | .padding(2)
|
43 | .column('Uptime', 20, [clc.cyan])
|
44 | .column(os.uptime().toString() + ' seconds', 40)
|
45 | .fill()
|
46 | .output();
|
47 |
|
48 | blankLine.output();
|
49 |
|
50 | requestSeries.push(Math.ceil((Math.random()*100)));
|
51 | requestSeries.shift();
|
52 |
|
53 | var requestLine = new Line()
|
54 | .padding(2)
|
55 | .column('Requests/Sec', 20, [clc.cyan])
|
56 | .column(Sparkline(requestSeries, ' reqs/sec'), 80)
|
57 | .fill()
|
58 | .output();
|
59 |
|
60 | errorSeries.push(Math.ceil((Math.random()*10)));
|
61 | errorSeries.shift();
|
62 |
|
63 | var errorLine = new Line()
|
64 | .padding(2)
|
65 | .column('Errors/Sec', 20, [clc.cyan])
|
66 | .column(Sparkline(errorSeries, ' errs/sec'), 80)
|
67 | .fill()
|
68 | .output();
|
69 |
|
70 | blankLine.output();
|
71 |
|
72 | drawTimeout = setTimeout(draw, 1000);
|
73 | }
|
74 |
|
75 | draw();
|
76 |
|
77 | process.stdout.on('resize', function() {
|
78 | clearTimeout(drawTimeout);
|
79 | draw();
|
80 | }); |
\ | No newline at end of file |