2020-05-26 08:32:05 +03:00
Ext . define ( 'pve-rrd-node' , {
extend : 'Ext.data.Model' ,
fields : [
{
name : 'cpu' ,
// percentage
convert : function ( value ) {
return value * 100 ;
2020-09-25 19:34:54 +03:00
} ,
2020-05-26 08:32:05 +03:00
} ,
{
name : 'iowait' ,
// percentage
convert : function ( value ) {
return value * 100 ;
2020-09-25 19:34:54 +03:00
} ,
2020-05-26 08:32:05 +03:00
} ,
'netin' ,
'netout' ,
'memtotal' ,
'memused' ,
'swaptotal' ,
'swapused' ,
2020-05-28 20:11:37 +03:00
'total' ,
'used' ,
'read_ios' ,
'read_bytes' ,
'write_ios' ,
'write_bytes' ,
'io_ticks' ,
{
name : 'io_delay' , calculate : function ( data ) {
let ios = 0 ;
if ( data . read _ios !== undefined ) { ios += data . read _ios ; }
if ( data . write _ios !== undefined ) { ios += data . write _ios ; }
2020-09-25 19:34:54 +03:00
if ( ios === 0 || data . io _ticks === undefined ) {
2020-05-28 20:11:37 +03:00
return undefined ;
}
return ( data . io _ticks * 1000.0 ) / ios ;
2020-09-25 19:34:54 +03:00
} ,
2020-05-28 20:11:37 +03:00
} ,
2020-05-26 08:32:05 +03:00
'loadavg' ,
2020-09-25 19:34:54 +03:00
{ type : 'date' , dateFormat : 'timestamp' , name : 'time' } ,
] ,
2020-05-26 08:32:05 +03:00
} ) ;
2020-04-30 13:11:08 +03:00
Ext . define ( 'PBS.ServerStatus' , {
extend : 'Ext.panel.Panel' ,
alias : 'widget.pbsServerStatus' ,
title : gettext ( 'ServerStatus' ) ,
2020-05-26 08:32:05 +03:00
scrollable : true ,
2020-04-30 13:11:08 +03:00
initComponent : function ( ) {
var me = this ;
var node _command = function ( cmd ) {
Proxmox . Utils . API2Request ( {
params : { command : cmd } ,
url : '/nodes/localhost/status' ,
method : 'POST' ,
waitMsgTarget : me ,
failure : function ( response , opts ) {
Ext . Msg . alert ( gettext ( 'Error' ) , response . htmlStatus ) ;
2020-09-25 19:34:54 +03:00
} ,
2020-04-30 13:11:08 +03:00
} ) ;
} ;
var restartBtn = Ext . create ( 'Proxmox.button.Button' , {
text : gettext ( 'Reboot' ) ,
dangerous : true ,
confirmMsg : gettext ( "Reboot backup server?" ) ,
handler : function ( ) {
node _command ( 'reboot' ) ;
} ,
2020-09-25 19:34:54 +03:00
iconCls : 'fa fa-undo' ,
2020-04-30 13:11:08 +03:00
} ) ;
var shutdownBtn = Ext . create ( 'Proxmox.button.Button' , {
text : gettext ( 'Shutdown' ) ,
dangerous : true ,
confirmMsg : gettext ( "Shutdown backup server?" ) ,
handler : function ( ) {
node _command ( 'shutdown' ) ;
} ,
2020-09-25 19:34:54 +03:00
iconCls : 'fa fa-power-off' ,
2020-04-30 13:11:08 +03:00
} ) ;
2020-07-21 12:10:40 +03:00
var consoleBtn = Ext . create ( 'Proxmox.button.Button' , {
text : gettext ( 'Console' ) ,
iconCls : 'fa fa-terminal' ,
handler : function ( ) {
Proxmox . Utils . openXtermJsViewer ( 'shell' , 0 , Proxmox . NodeName ) ;
2020-09-25 19:34:54 +03:00
} ,
2020-07-21 12:10:40 +03:00
} ) ;
2020-09-25 19:34:54 +03:00
me . tbar = [ consoleBtn , restartBtn , shutdownBtn , '->' , { xtype : 'proxmoxRRDTypeSelector' } ] ;
2020-05-26 08:32:05 +03:00
var rrdstore = Ext . create ( 'Proxmox.data.RRDStore' , {
rrdurl : "/api2/json/nodes/localhost/rrd" ,
2020-09-25 19:34:54 +03:00
model : 'pve-rrd-node' ,
2020-05-26 08:32:05 +03:00
} ) ;
me . items = {
xtype : 'container' ,
itemId : 'itemcontainer' ,
layout : 'column' ,
minWidth : 700 ,
defaults : {
minHeight : 320 ,
padding : 5 ,
2020-09-25 19:34:54 +03:00
columnWidth : 1 ,
2020-05-26 08:32:05 +03:00
} ,
items : [
{
xtype : 'proxmoxRRDChart' ,
title : gettext ( 'CPU usage' ) ,
2020-09-25 19:34:54 +03:00
fields : [ 'cpu' , 'iowait' ] ,
2020-05-29 07:12:49 +03:00
fieldTitles : [ gettext ( 'CPU usage' ) , gettext ( 'IO wait' ) ] ,
2020-09-25 19:34:54 +03:00
store : rrdstore ,
2020-05-26 08:32:05 +03:00
} ,
{
xtype : 'proxmoxRRDChart' ,
title : gettext ( 'Server load' ) ,
fields : [ 'loadavg' ] ,
fieldTitles : [ gettext ( 'Load average' ) ] ,
2020-09-25 19:34:54 +03:00
store : rrdstore ,
2020-05-26 08:32:05 +03:00
} ,
{
xtype : 'proxmoxRRDChart' ,
title : gettext ( 'Memory usage' ) ,
2020-09-25 19:34:54 +03:00
fields : [ 'memtotal' , 'memused' ] ,
2020-05-26 08:32:05 +03:00
fieldTitles : [ gettext ( 'Total' ) , gettext ( 'RAM usage' ) ] ,
2020-09-25 19:34:54 +03:00
store : rrdstore ,
2020-05-26 08:32:05 +03:00
} ,
{
xtype : 'proxmoxRRDChart' ,
title : gettext ( 'Swap usage' ) ,
2020-09-25 19:34:54 +03:00
fields : [ 'swaptotal' , 'swapused' ] ,
2020-05-26 08:32:05 +03:00
fieldTitles : [ gettext ( 'Total' ) , gettext ( 'Swap usage' ) ] ,
2020-09-25 19:34:54 +03:00
store : rrdstore ,
2020-05-26 08:32:05 +03:00
} ,
{
xtype : 'proxmoxRRDChart' ,
title : gettext ( 'Network traffic' ) ,
2020-09-25 19:34:54 +03:00
fields : [ 'netin' , 'netout' ] ,
store : rrdstore ,
2020-05-26 08:32:05 +03:00
} ,
{
xtype : 'proxmoxRRDChart' ,
title : gettext ( 'Root Disk usage' ) ,
2020-09-25 19:34:54 +03:00
fields : [ 'total' , 'used' ] ,
2020-05-26 08:32:05 +03:00
fieldTitles : [ gettext ( 'Total' ) , gettext ( 'Disk usage' ) ] ,
2020-09-25 19:34:54 +03:00
store : rrdstore ,
2020-05-26 08:32:05 +03:00
} ,
2020-05-28 13:30:54 +03:00
{
xtype : 'proxmoxRRDChart' ,
title : gettext ( 'Root Disk Transfer Rate (bytes/second)' ) ,
2020-09-25 19:34:54 +03:00
fields : [ 'read_bytes' , 'write_bytes' ] ,
2020-05-28 13:30:54 +03:00
fieldTitles : [ gettext ( 'Read' ) , gettext ( 'Write' ) ] ,
2020-09-25 19:34:54 +03:00
store : rrdstore ,
2020-05-28 13:30:54 +03:00
} ,
{
xtype : 'proxmoxRRDChart' ,
title : gettext ( 'Root Disk Input/Output Operations per Second (IOPS)' ) ,
2020-09-25 19:34:54 +03:00
fields : [ 'read_ios' , 'write_ios' ] ,
2020-05-28 13:30:54 +03:00
fieldTitles : [ gettext ( 'Read' ) , gettext ( 'Write' ) ] ,
2020-09-25 19:34:54 +03:00
store : rrdstore ,
2020-05-28 13:30:54 +03:00
} ,
{
xtype : 'proxmoxRRDChart' ,
title : gettext ( 'Root Disk IO Delay (ms)' ) ,
2020-05-28 20:11:37 +03:00
fields : [ 'io_delay' ] ,
fieldTitles : [ gettext ( 'IO Delay' ) ] ,
2020-09-25 19:34:54 +03:00
store : rrdstore ,
2020-05-28 13:30:54 +03:00
} ,
2020-09-25 19:34:54 +03:00
] ,
2020-05-26 08:32:05 +03:00
} ;
me . listeners = {
activate : function ( ) {
rrdstore . startUpdate ( ) ;
} ,
destroy : function ( ) {
rrdstore . stopUpdate ( ) ;
} ,
} ;
2020-04-30 13:11:08 +03:00
me . callParent ( ) ;
2020-09-25 19:34:54 +03:00
} ,
2020-04-30 13:11:08 +03:00
} ) ;