2015-06-22 21:55:31 +01:00
< ? php
/*
2017-12-29 07:36:49 +02:00
* LibreNMS
*
* This program is free software : you can redistribute it and / or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation , either version 3 of the License , or ( at your
* option ) any later version . Please see LICENSE . txt at the top level of
* the source code distribution for details .
*
* Copyright ( c ) 2015 Søren Friis Rosiak < sorenrosiak @ gmail . com >
* Copyright ( c ) 2014 Neil Lathwood < https :// github . com / laf / http :// www . lathwood . co . uk / fa >
*
* @ package LibreNMS
* @ subpackage webui
* @ link http :// librenms . org
* @ copyright 2017 LibreNMS
* @ author LibreNMS Contributors
2015-06-22 21:55:31 +01:00
*/
2018-04-07 15:55:28 -05:00
use LibreNMS\Authentication\Auth ;
2016-08-18 20:28:22 -05:00
if ( ! isset ( $vars [ 'section' ])) {
2015-07-13 20:10:26 +02:00
$vars [ 'section' ] = " performance " ;
}
2015-06-22 21:55:31 +01:00
2015-07-13 21:45:40 +01:00
if ( empty ( $vars [ 'dtpickerfrom' ])) {
$vars [ 'dtpickerfrom' ] = date ( $config [ 'dateformat' ][ 'byminute' ], time () - 3600 * 24 * 2 );
}
if ( empty ( $vars [ 'dtpickerto' ])) {
$vars [ 'dtpickerto' ] = date ( $config [ 'dateformat' ][ 'byminute' ]);
}
?>
2017-12-29 07:36:49 +02:00
< br >
< div class = " panel panel-default " >
< div class = " panel-heading " >
< form method = " post " role = " form " id = " map " class = " form-inline " >
< div class = " form-group " >
< label for = " dtpickerfrom " > From </ label >
< input type = " text " class = " form-control " id = " dtpickerfrom " name = " dtpickerfrom " maxlength = " 16 "
value = " <?php echo $vars['dtpickerfrom'] ; ?> " data - date - format = " YYYY-MM-DD HH:mm " >
</ div >
< div class = " form-group " >
< label for = " dtpickerto " > To </ label >
< input type = " text " class = " form-control " id = " dtpickerto " name = " dtpickerto " maxlength = 16
value = " <?php echo $vars['dtpickerto'] ; ?> " data - date - format = " YYYY-MM-DD HH:mm " >
</ div >
< input type = " submit " class = " btn btn-default " id = " submit " value = " Update " >
</ form >
2015-09-21 01:30:23 +05:30
</ div >
2017-12-29 07:36:49 +02:00
< br >
< div style = " margin:0 auto;width:99%; " >
< script type = " text/javascript " >
$ ( function () {
$ ( " #dtpickerfrom " ) . datetimepicker ({
useCurrent : true ,
sideBySide : true ,
useStrict : false ,
icons : {
time : 'fa fa-clock-o' ,
date : 'fa fa-calendar' ,
up : 'fa fa-chevron-up' ,
down : 'fa fa-chevron-down' ,
previous : 'fa fa-chevron-left' ,
next : 'fa fa-chevron-right' ,
today : 'fa fa-calendar-check-o' ,
clear : 'fa fa-trash-o' ,
close : 'fa fa-close'
}
});
$ ( " #dtpickerto " ) . datetimepicker ({
useCurrent : true ,
sideBySide : true ,
useStrict : false ,
icons : {
time : 'fa fa-clock-o' ,
date : 'fa fa-calendar' ,
up : 'fa fa-chevron-up' ,
down : 'fa fa-chevron-down' ,
previous : 'fa fa-chevron-left' ,
next : 'fa fa-chevron-right' ,
today : 'fa fa-calendar-check-o' ,
clear : 'fa fa-trash-o' ,
close : 'fa fa-close'
}
});
2016-09-22 10:47:25 -04:00
});
2017-12-29 07:36:49 +02:00
</ script >
2015-07-13 21:45:40 +01:00
2017-12-29 07:36:49 +02:00
< ? php
2018-04-07 15:55:28 -05:00
if ( Auth :: user () -> hasGlobalRead ()) {
2017-12-29 07:36:49 +02:00
$query = " SELECT DATE_FORMAT(timestamp, ' " . $config [ 'alert_graph_date_format' ] . " ') Date, xmt,rcv,loss,min,max,avg FROM `device_perf` WHERE `device_id` = ? AND `timestamp` >= ? AND `timestamp` <= ? " ;
$param = array ( $device [ 'device_id' ], $vars [ 'dtpickerfrom' ], $vars [ 'dtpickerto' ]);
} else {
2018-01-25 14:55:37 -06:00
$query = " SELECT DATE_FORMAT(timestamp, ' " . $config [ 'alert_graph_date_format' ] . " ') Date, xmt,rcv,loss,min,max,avg FROM `device_perf`,`devices_perms` WHERE `device_perf`.`device_id` = ? AND `device_perf`.`device_id` = devices_perms.device_id AND devices_perms.user_id = ? AND `timestamp` >= ? AND `timestamp` <= ? " ;
2018-04-07 15:55:28 -05:00
$param = array ( $device [ 'device_id' ], Auth :: id (), $vars [ 'dtpickerfrom' ], $vars [ 'dtpickerto' ]);
2017-12-29 07:36:49 +02:00
}
?>
2015-06-22 21:55:31 +01:00
2017-12-29 07:36:49 +02:00
< script src = " js/vis.min.js " ></ script >
< div id = " visualization " style = " margin-bottom:-120px; " ></ div >
< script type = " text/javascript " >
2015-06-22 21:55:31 +01:00
2017-12-29 07:36:49 +02:00
var container = document . getElementById ( 'visualization' );
< ? php
$groups = array ();
$max_val = 0 ;
foreach ( dbFetchRows ( $query , $param ) as $return_value ) {
$date = $return_value [ 'Date' ];
$loss = $return_value [ 'loss' ];
$min = $return_value [ 'min' ];
$max = $return_value [ 'max' ];
$avg = $return_value [ 'avg' ];
if ( $max > $max_val ) {
$max_val = $max ;
}
2015-06-22 21:55:31 +01:00
2017-12-29 07:36:49 +02:00
$data [] = array ( 'x' => $date , 'y' => $loss , 'group' => 0 );
$data [] = array ( 'x' => $date , 'y' => $min , 'group' => 1 );
$data [] = array ( 'x' => $date , 'y' => $max , 'group' => 2 );
$data [] = array ( 'x' => $date , 'y' => $avg , 'group' => 3 );
2016-08-18 20:28:22 -05:00
}
2017-12-29 07:36:49 +02:00
$graph_data = _json_encode ( $data );
?>
var names = [ 'Loss' , 'Min latency' , 'Max latency' , 'Avg latency' ];
var groups = new vis . DataSet ();
2015-06-22 21:55:31 +01:00
groups . add ({
id : 0 ,
content : names [ 0 ],
options : {
drawPoints : {
style : 'circle'
},
shaded : {
orientation : 'bottom'
}
}
});
groups . add ({
id : 1 ,
content : names [ 1 ],
options : {
drawPoints : {
style : 'circle'
},
shaded : {
orientation : 'bottom'
}
}
});
groups . add ({
id : 2 ,
content : names [ 2 ],
options : {
drawPoints : {
style : 'circle'
},
shaded : {
orientation : 'bottom'
}
}
});
groups . add ({
id : 3 ,
content : names [ 3 ],
options : {
drawPoints : {
style : 'circle'
},
shaded : {
orientation : 'bottom'
}
}
});
< ? php
2017-12-29 07:36:49 +02:00
?>
var items =
< ? php
echo $graph_data ; ?>
;
var dataset = new vis . DataSet ( items );
var options = {
barChart : { width : 50 , align : 'right' }, // align: left, center, right
drawPoints : false ,
legend : { left : { position : " bottom-left " }},
dataAxis : {
icons : true ,
showMajorLabels : true ,
showMinorLabels : true ,
},
zoomMin : 86400 , //24hrs
zoomMax : < ? php
$first_date = reset ( $data );
$last_date = end ( $data );
2018-07-13 17:08:00 -05:00
$milisec_diff = abs ( strtotime ( $first_date [ 'x' ]) - strtotime ( $last_date [ 'x' ])) * 1000 ;
2017-12-29 07:36:49 +02:00
echo $milisec_diff ;
?> ,
orientation : 'top'
};
var graph2d = new vis . Graph2d ( container , dataset , groups , options );
</ script >