2015-04-12 01:10:48 +02:00
< ? php
/*
* 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.
2017-12-29 07:36:49 +02:00
*
* Copyright (c) 2015 Søren Friis Rosiak <sorenrosiak@gmail.com>
*
* @package LibreNMS
* @subpackage webui
2021-02-09 00:29:04 +01:00
* @link https://www.librenms.org
2017-12-29 07:36:49 +02:00
* @copyright 2017 LibreNMS
* @author LibreNMS Contributors
*/
2015-07-13 20:10:26 +02:00
2015-04-12 01:10:48 +02:00
$pagetitle [] = 'Alert Stats' ;
2019-12-30 12:11:26 +01:00
$param = [];
2015-04-25 10:43:56 +00:00
$sql = '' ;
2015-04-12 01:10:48 +02:00
if ( isset ( $device [ 'device_id' ]) && $device [ 'device_id' ] > 0 ) {
$sql = ' AND alert_log.device_id=?' ;
$param = [
$device [ 'device_id' ],
];
}
2019-08-05 14:16:05 -05:00
if ( ! Auth :: user () -> hasGlobalRead ()) {
2019-12-30 12:11:26 +01:00
$device_ids = Permissions :: devicesForUser () -> toArray () ? : [ 0 ];
$sql .= ' AND `alert_log`.`device_id` IN ' . dbGenPlaceholders ( count ( $device_ids ));
$param = array_merge ( $param , $device_ids );
2015-04-12 01:10:48 +02:00
}
2019-12-30 12:11:26 +01:00
$query = " SELECT DATE_FORMAT(time_logged, ' " . \LibreNMS\Config :: get ( 'alert_graph_date_format' ) . " ') Date, COUNT(alert_log.rule_id) totalCount, alert_rules.severity Severity FROM alert_log,alert_rules WHERE alert_log.rule_id=alert_rules.id AND `alert_log`.`state` != 0 $sql GROUP BY DATE_FORMAT(time_logged, ' " . \LibreNMS\Config :: get ( 'alert_graph_date_format' ) . " '),alert_rules.severity " ;
2015-04-12 01:10:48 +02:00
?>
2017-12-29 07:36:49 +02:00
<br>
<div class="panel panel-default">
<div class="panel-heading">
Device alerts
</div>
<br>
<div style="margin:0 auto;width:99%;">
2015-04-12 01:10:48 +02:00
<script src="js/vis.min.js"></script>
2017-12-29 07:36:49 +02:00
<div id="visualization" style="margin-bottom: -120px;"></div>
2015-04-12 01:10:48 +02:00
<script type="text/javascript">
2015-07-13 20:10:26 +02:00
2015-04-12 01:10:48 +02:00
var container = document.getElementById('visualization');
<?php
2016-08-18 20:28:22 -05:00
$groups = [];
$max_count = 0;
2021-04-30 05:45:06 +02:00
$data = [];
2015-04-12 01:10:48 +02:00
2016-08-18 20:28:22 -05:00
foreach (dbFetchRows($query, $param) as $return_value) {
$date = $return_value['Date'];
$count = $return_value['totalCount'];
if ($count > $max_count) {
$max_count = $count;
}
2015-04-12 01:10:48 +02:00
2016-08-18 20:28:22 -05:00
$severity = $return_value['Severity'];
$data[] = [
2015-04-12 01:10:48 +02:00
'x' => $date,
'y' => $count,
'group' => $severity,
2016-08-18 20:28:22 -05:00
];
if (! in_array($severity, $groups)) {
array_push($groups, $severity);
}
2015-04-12 01:10:48 +02:00
}
2021-03-04 07:55:41 -06:00
$graph_data = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
2020-04-03 08:41:24 -05:00
?>
2015-04-12 01:10:48 +02:00
var groups = new vis.DataSet();
<?php
2016-08-18 20:28:22 -05:00
foreach ($groups as $group) {
2015-04-12 01:10:48 +02:00
echo "groups.add({id: '$group', content: '$group' })\n";
}
?>
2015-07-13 20:10:26 +02:00
2015-04-12 01:10:48 +02:00
var items =
<?php
2016-08-18 20:28:22 -05:00
echo $graph_data; ?>
2015-04-12 01:10:48 +02:00
;
var dataset = new vis.DataSet(items);
var options = {
style:'bar',
2016-09-18 15:26:44 +03:00
barChart: { width:50, align:'right', sideBySide:true}, // align: left, center, right
2015-04-12 01:10:48 +02:00
drawPoints: false,
legend: {left:{position:"bottom-left"}},
dataAxis: {
icons:true,
showMajorLabels: true,
showMinorLabels: true,
},
2015-04-15 13:01:35 +01:00
zoomMin: 86400, //24hrs
2015-04-12 01:10:48 +02:00
zoomMax: <?php
2016-08-18 20:28:22 -05:00
$first_date = reset($data);
$last_date = end($data);
2016-09-18 15:26:44 +03:00
$milisec_diff = abs(strtotime($first_date['x']) - strtotime($last_date['x'])) * 1000;
2016-08-18 20:28:22 -05:00
echo $milisec_diff;
2020-04-03 08:41:24 -05:00
?>,
2015-04-12 01:10:48 +02:00
orientation:'top'
};
var graph2d = new vis.Graph2d(container, items, groups, options);
2015-07-13 20:10:26 +02:00
2015-04-15 12:35:20 +01:00
</script>