]> git.proxmox.com Git - proxmox-backup.git/blob - www/ServerStatus.js
bump version to 0.9.4-2
[proxmox-backup.git] / www / ServerStatus.js
1 Ext.define('pve-rrd-node', {
2 extend: 'Ext.data.Model',
3 fields: [
4 {
5 name: 'cpu',
6 // percentage
7 convert: function(value) {
8 return value*100;
9 },
10 },
11 {
12 name: 'iowait',
13 // percentage
14 convert: function(value) {
15 return value*100;
16 },
17 },
18 'netin',
19 'netout',
20 'memtotal',
21 'memused',
22 'swaptotal',
23 'swapused',
24 'total',
25 'used',
26 'read_ios',
27 'read_bytes',
28 'write_ios',
29 'write_bytes',
30 'io_ticks',
31 {
32 name: 'io_delay', calculate: function(data) {
33 let ios = 0;
34 if (data.read_ios !== undefined) { ios += data.read_ios; }
35 if (data.write_ios !== undefined) { ios += data.write_ios; }
36 if (ios === 0 || data.io_ticks === undefined) {
37 return undefined;
38 }
39 return (data.io_ticks*1000.0)/ios;
40 },
41 },
42 'loadavg',
43 { type: 'date', dateFormat: 'timestamp', name: 'time' },
44 ],
45 });
46 Ext.define('PBS.ServerStatus', {
47 extend: 'Ext.panel.Panel',
48 alias: 'widget.pbsServerStatus',
49
50 title: gettext('ServerStatus'),
51
52 scrollable: true,
53
54 initComponent: function() {
55 var me = this;
56
57 var node_command = function(cmd) {
58 Proxmox.Utils.API2Request({
59 params: { command: cmd },
60 url: '/nodes/localhost/status',
61 method: 'POST',
62 waitMsgTarget: me,
63 failure: function(response, opts) {
64 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
65 },
66 });
67 };
68
69 var restartBtn = Ext.create('Proxmox.button.Button', {
70 text: gettext('Reboot'),
71 dangerous: true,
72 confirmMsg: gettext("Reboot backup server?"),
73 handler: function() {
74 node_command('reboot');
75 },
76 iconCls: 'fa fa-undo',
77 });
78
79 var shutdownBtn = Ext.create('Proxmox.button.Button', {
80 text: gettext('Shutdown'),
81 dangerous: true,
82 confirmMsg: gettext("Shutdown backup server?"),
83 handler: function() {
84 node_command('shutdown');
85 },
86 iconCls: 'fa fa-power-off',
87 });
88
89 var consoleBtn = Ext.create('Proxmox.button.Button', {
90 text: gettext('Console'),
91 iconCls: 'fa fa-terminal',
92 handler: function() {
93 Proxmox.Utils.openXtermJsViewer('shell', 0, Proxmox.NodeName);
94 },
95 });
96
97 me.tbar = [consoleBtn, restartBtn, shutdownBtn, '->', { xtype: 'proxmoxRRDTypeSelector' }];
98
99 var rrdstore = Ext.create('Proxmox.data.RRDStore', {
100 rrdurl: "/api2/json/nodes/localhost/rrd",
101 model: 'pve-rrd-node',
102 });
103
104 me.items = {
105 xtype: 'container',
106 itemId: 'itemcontainer',
107 layout: 'column',
108 minWidth: 700,
109 defaults: {
110 minHeight: 320,
111 padding: 5,
112 columnWidth: 1,
113 },
114 items: [
115 {
116 xtype: 'proxmoxRRDChart',
117 title: gettext('CPU usage'),
118 fields: ['cpu', 'iowait'],
119 fieldTitles: [gettext('CPU usage'), gettext('IO wait')],
120 store: rrdstore,
121 },
122 {
123 xtype: 'proxmoxRRDChart',
124 title: gettext('Server load'),
125 fields: ['loadavg'],
126 fieldTitles: [gettext('Load average')],
127 store: rrdstore,
128 },
129 {
130 xtype: 'proxmoxRRDChart',
131 title: gettext('Memory usage'),
132 fields: ['memtotal', 'memused'],
133 fieldTitles: [gettext('Total'), gettext('RAM usage')],
134 store: rrdstore,
135 },
136 {
137 xtype: 'proxmoxRRDChart',
138 title: gettext('Swap usage'),
139 fields: ['swaptotal', 'swapused'],
140 fieldTitles: [gettext('Total'), gettext('Swap usage')],
141 store: rrdstore,
142 },
143 {
144 xtype: 'proxmoxRRDChart',
145 title: gettext('Network traffic'),
146 fields: ['netin', 'netout'],
147 store: rrdstore,
148 },
149 {
150 xtype: 'proxmoxRRDChart',
151 title: gettext('Root Disk usage'),
152 fields: ['total', 'used'],
153 fieldTitles: [gettext('Total'), gettext('Disk usage')],
154 store: rrdstore,
155 },
156 {
157 xtype: 'proxmoxRRDChart',
158 title: gettext('Root Disk Transfer Rate (bytes/second)'),
159 fields: ['read_bytes', 'write_bytes'],
160 fieldTitles: [gettext('Read'), gettext('Write')],
161 store: rrdstore,
162 },
163 {
164 xtype: 'proxmoxRRDChart',
165 title: gettext('Root Disk Input/Output Operations per Second (IOPS)'),
166 fields: ['read_ios', 'write_ios'],
167 fieldTitles: [gettext('Read'), gettext('Write')],
168 store: rrdstore,
169 },
170 {
171 xtype: 'proxmoxRRDChart',
172 title: gettext('Root Disk IO Delay (ms)'),
173 fields: ['io_delay'],
174 fieldTitles: [gettext('IO Delay')],
175 store: rrdstore,
176 },
177 ],
178 };
179
180 me.listeners = {
181 activate: function() {
182 rrdstore.startUpdate();
183 },
184 destroy: function() {
185 rrdstore.stopUpdate();
186 },
187 };
188
189 me.callParent();
190 },
191
192 });