Working in the refactoring the code of reports (SLA).
This commit is contained in:
parent
5c2b0c0549
commit
3a74ee9f15
|
@ -413,14 +413,424 @@ function reporting_make_reporting_data($id_report, $date, $time,
|
|||
$force_width_chart,
|
||||
$force_height_chart);
|
||||
break;
|
||||
case 'SLA':
|
||||
$report['contents'][] = reporting_SLA(
|
||||
$report,
|
||||
$content,
|
||||
$type,
|
||||
$force_width_chart,
|
||||
$force_height_chart);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return reporting_check_structure_report($report);
|
||||
}
|
||||
|
||||
function reporting_SLA($report, $content, $type = 'dinamic',
|
||||
$force_width_chart = null, $force_height_chart = null) {
|
||||
|
||||
global $config;
|
||||
|
||||
$return['type'] = 'SLA';
|
||||
|
||||
if (empty($content['name'])) {
|
||||
$content['name'] = __('S.L.A.');
|
||||
}
|
||||
|
||||
$return['title'] = $content['name'];
|
||||
$return["description"] = $content["description"];
|
||||
$return["date"] = reporting_get_date_text($report, $content);
|
||||
|
||||
|
||||
|
||||
$edge_interval = 10;
|
||||
|
||||
$slas = db_get_all_rows_field_filter (
|
||||
'treport_content_sla_combined',
|
||||
'id_report_content', $content['id_rc']);
|
||||
|
||||
if (empty($slas)) {
|
||||
$return['failed'] = __('There are no SLAs defined');
|
||||
}
|
||||
else {
|
||||
|
||||
// What show?
|
||||
$show_table = $content['show_graph'] == 0 || $content['show_graph'] == 1;
|
||||
$show_graphs = $content['show_graph'] == 1 || $content['show_graph'] == 2;
|
||||
|
||||
|
||||
// Table Planned Downtimes
|
||||
require_once ($config['homedir'] . '/include/functions_planned_downtimes.php');
|
||||
$metaconsole_on = ($config['metaconsole'] == 1) && defined('METACONSOLE');
|
||||
$downtime_malformed = false;
|
||||
|
||||
$planned_downtimes_empty = true;
|
||||
$malformed_planned_downtimes_empty = true;
|
||||
|
||||
$return['planned_downtimes'] = array();
|
||||
|
||||
if ($metaconsole_on) {
|
||||
$id_agent_modules_by_server = array();
|
||||
|
||||
foreach ($slas as $sla) {
|
||||
$server = $sla['server_name'];
|
||||
if (empty($server))
|
||||
continue;
|
||||
|
||||
if (!isset($id_agent_modules_by_server[$server]))
|
||||
$id_agent_modules_by_server[$server] = array();
|
||||
|
||||
$id_agent_modules_by_server[$server][] = $sla['id_agent_module'];
|
||||
}
|
||||
|
||||
$planned_downtimes_by_server = array();
|
||||
$malformed_planned_downtimes_by_server = array();
|
||||
foreach ($id_agent_modules_by_server as $server => $id_agent_modules) {
|
||||
//Metaconsole connection
|
||||
if (!empty($server)) {
|
||||
$connection = metaconsole_get_connection($server);
|
||||
if (!metaconsole_load_external_db($connection)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$planned_downtimes_by_server[$server] = reporting_get_planned_downtimes(($report['datetime']-$content['period']), $report['datetime'], $id_agent_modules);
|
||||
$malformed_planned_downtimes_by_server[$server] = planned_downtimes_get_malformed();
|
||||
|
||||
if (!empty($planned_downtimes_by_server[$server]))
|
||||
$planned_downtimes_empty = false;
|
||||
if (!empty($malformed_planned_downtimes_by_server[$server]))
|
||||
$malformed_planned_downtimes_empty = false;
|
||||
|
||||
//Restore db connection
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
}
|
||||
|
||||
if (!$planned_downtimes_empty) {
|
||||
foreach ($planned_downtimes_by_server as $server => $planned_downtimes) {
|
||||
foreach ($planned_downtimes as $planned_downtime) {
|
||||
$data = array();
|
||||
$data['server'] = $server;
|
||||
$data['name'] = $planned_downtime['name'];
|
||||
$data['description'] = $planned_downtime['description'];
|
||||
$data['execution'] = ucfirst($planned_downtime['type_execution']);
|
||||
$data['dates'] = "";
|
||||
switch ($planned_downtime['type_execution']) {
|
||||
case 'once':
|
||||
$data['dates'] = date ("Y-m-d H:i", $planned_downtime['date_from']) .
|
||||
" " . __('to') . " ".
|
||||
date ("Y-m-d H:i", $planned_downtime['date_to']);
|
||||
break;
|
||||
case 'periodically':
|
||||
switch ($planned_downtime['type_periodicity']) {
|
||||
case 'weekly':
|
||||
$data['dates'] = __('Weekly:');
|
||||
$data['dates'] .= " ";
|
||||
if ($planned_downtime['monday']) {
|
||||
$data['dates'] .= __('Mon');
|
||||
$data['dates'] .= " ";
|
||||
}
|
||||
if ($planned_downtime['tuesday']) {
|
||||
$data['dates'] .= __('Tue');
|
||||
$data['dates'] .= " ";
|
||||
}
|
||||
if ($planned_downtime['wednesday']) {
|
||||
$data['dates'] .= __('Wed');
|
||||
$data['dates'] .= " ";
|
||||
}
|
||||
if ($planned_downtime['thursday']) {
|
||||
$data['dates'] .= __('Thu');
|
||||
$data['dates'] .= " ";
|
||||
}
|
||||
if ($planned_downtime['friday']) {
|
||||
$data['dates'] .= __('Fri');
|
||||
$data['dates'] .= " ";
|
||||
}
|
||||
if ($planned_downtime['saturday']) {
|
||||
$data['dates'] .= __('Sat');
|
||||
$data['dates'] .= " ";
|
||||
}
|
||||
if ($planned_downtime['sunday']) {
|
||||
$data['dates'] .= __('Sun');
|
||||
$data['dates'] .= " ";
|
||||
}
|
||||
$data['dates'] .= " (" . $planned_downtime['periodically_time_from'];
|
||||
$data['dates'] .= "-" . $planned_downtime['periodically_time_to'] . ")";
|
||||
break;
|
||||
case 'monthly':
|
||||
$data['dates'] = __('Monthly:') . " ";
|
||||
$data['dates'] .= __('From day') . " " . $planned_downtime['periodically_day_from'];
|
||||
$data['dates'] .= " " . strtolower(__('To day')) . " ";
|
||||
$data['dates'] .= $planned_downtime['periodically_day_to'];
|
||||
$data['dates'] .= " (" . $planned_downtime['periodically_time_from'];
|
||||
$data['dates'] .= "-" . $planned_downtime['periodically_time_to'] . ")";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
$data['malformed'] = 0;
|
||||
if (!$malformed_planned_downtimes_empty
|
||||
&& isset($malformed_planned_downtimes_by_server[$server])
|
||||
&& isset($malformed_planned_downtimes_by_server[$server][$planned_downtime['id']])) {
|
||||
|
||||
$data['malformed'] = 1;
|
||||
|
||||
if (!$downtime_malformed)
|
||||
$downtime_malformed = true;
|
||||
}
|
||||
|
||||
$return['planned_downtimes'][] = $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$id_agent_modules = array();
|
||||
foreach ($slas as $sla) {
|
||||
if (!empty($sla['id_agent_module']))
|
||||
$id_agent_modules[] = $sla['id_agent_module'];
|
||||
}
|
||||
|
||||
$planned_downtimes = reporting_get_planned_downtimes(($report['datetime']-$content['period']), $report['datetime'], $id_agent_modules);
|
||||
$malformed_planned_downtimes = planned_downtimes_get_malformed();
|
||||
|
||||
if (!empty($planned_downtimes))
|
||||
$planned_downtimes_empty = false;
|
||||
if (!empty($malformed_planned_downtimes))
|
||||
$malformed_planned_downtimes_empty = false;
|
||||
|
||||
if (!$planned_downtimes_empty) {
|
||||
foreach ($planned_downtimes as $planned_downtime) {
|
||||
|
||||
$data = array();
|
||||
$data['name'] = $planned_downtime['name'];
|
||||
$data['description'] = $planned_downtime['description'];
|
||||
$data['execution'] = ucfirst($planned_downtime['type_execution']);
|
||||
$data['dates'] = "";
|
||||
switch ($planned_downtime['type_execution']) {
|
||||
case 'once':
|
||||
$data['dates'] = date ("Y-m-d H:i", $planned_downtime['date_from']) .
|
||||
" " . __('to') . " ".
|
||||
date ("Y-m-d H:i", $planned_downtime['date_to']);
|
||||
break;
|
||||
case 'periodically':
|
||||
switch ($planned_downtime['type_periodicity']) {
|
||||
case 'weekly':
|
||||
$data['dates'] = __('Weekly:');
|
||||
$data['dates'] .= " ";
|
||||
if ($planned_downtime['monday']) {
|
||||
$data['dates'] .= __('Mon');
|
||||
$data['dates'] .= " ";
|
||||
}
|
||||
if ($planned_downtime['tuesday']) {
|
||||
$data['dates'] .= __('Tue');
|
||||
$data['dates'] .= " ";
|
||||
}
|
||||
if ($planned_downtime['wednesday']) {
|
||||
$data['dates'] .= __('Wed');
|
||||
$data['dates'] .= " ";
|
||||
}
|
||||
if ($planned_downtime['thursday']) {
|
||||
$data['dates'] .= __('Thu');
|
||||
$data['dates'] .= " ";
|
||||
}
|
||||
if ($planned_downtime['friday']) {
|
||||
$data['dates'] .= __('Fri');
|
||||
$data['dates'] .= " ";
|
||||
}
|
||||
if ($planned_downtime['saturday']) {
|
||||
$data['dates'] .= __('Sat');
|
||||
$data['dates'] .= " ";
|
||||
}
|
||||
if ($planned_downtime['sunday']) {
|
||||
$data['dates'] .= __('Sun');
|
||||
$data['dates'] .= " ";
|
||||
}
|
||||
$data['dates'] .= " (" . $planned_downtime['periodically_time_from'];
|
||||
$data['dates'] .= "-" . $planned_downtime['periodically_time_to'] . ")";
|
||||
break;
|
||||
case 'monthly':
|
||||
$data['dates'] = __('Monthly:') . " ";
|
||||
$data['dates'] .= __('From day') . " " . $planned_downtime['periodically_day_from'];
|
||||
$data['dates'] .= " " . strtolower(__('To day')) . " ";
|
||||
$data['dates'] .= $planned_downtime['periodically_day_to'];
|
||||
$data['dates'] .= " (" . $planned_downtime['periodically_time_from'];
|
||||
$data['dates'] .= "-" . $planned_downtime['periodically_time_to'] . ")";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
$data['malformed'] = 0;
|
||||
if (!$malformed_planned_downtimes_empty && isset($malformed_planned_downtimes[$planned_downtime['id']])) {
|
||||
$data['malformed'] = 1;
|
||||
if (!$downtime_malformed)
|
||||
$downtime_malformed = true;
|
||||
}
|
||||
|
||||
$return['planned_downtimes'][] = $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($downtime_malformed) {
|
||||
$return['failed'] =
|
||||
__('This item is affected by a malformed planned downtime. Go to the planned downtimes section to solve this.');
|
||||
}
|
||||
else {
|
||||
|
||||
|
||||
$urlImage = ui_get_full_url(false, true, false, false);
|
||||
|
||||
$sla_failed = false;
|
||||
$total_SLA = 0;
|
||||
$total_result_SLA = 'ok';
|
||||
$sla_showed = array();
|
||||
$sla_showed_values = array();
|
||||
|
||||
foreach ($slas as $sla) {
|
||||
$server_name = $sla ['server_name'];
|
||||
//Metaconsole connection
|
||||
if (($config ['metaconsole'] == 1) && $server_name != '' && defined('METACONSOLE')) {
|
||||
$connection = metaconsole_get_connection($server_name);
|
||||
if (!metaconsole_load_external_db($connection)) {
|
||||
//ui_print_error_message ("Error connecting to ".$server_name);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (modules_is_disable_agent($sla['id_agent_module'])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//Get the sla_value in % and store it on $sla_value
|
||||
$sla_value = reporting_get_agentmodule_sla(
|
||||
$sla['id_agent_module'], $content['period'],
|
||||
$sla['sla_min'], $sla['sla_max'],
|
||||
$report["datetime"], $content,
|
||||
$content['time_from'], $content['time_to']);
|
||||
|
||||
if (($config ['metaconsole'] == 1) && defined('METACONSOLE')) {
|
||||
//Restore db connection
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
|
||||
//Do not show right modules if 'only_display_wrong' is active
|
||||
if ($content['only_display_wrong'] == 1 &&
|
||||
$sla_value >= $sla['sla_limit']) {
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$sla_showed[] = $sla;
|
||||
$sla_showed_values[] = $sla_value;
|
||||
|
||||
}
|
||||
|
||||
// SLA items sorted descending ()
|
||||
if ($content['top_n'] == 2) {
|
||||
arsort($sla_showed_values);
|
||||
}
|
||||
// SLA items sorted ascending
|
||||
else if ($content['top_n'] == 1) {
|
||||
asort($sla_showed_values);
|
||||
}
|
||||
}
|
||||
|
||||
$return['data'] = array();
|
||||
$return['charts'] = null;
|
||||
|
||||
foreach ($sla_showed_values as $k => $sla_value) {
|
||||
$sla = $sla_showed[$k];
|
||||
|
||||
$server_name = $sla ['server_name'];
|
||||
//Metaconsole connection
|
||||
if (($config ['metaconsole'] == 1) && ($server_name != '') && defined('METACONSOLE')) {
|
||||
$connection = metaconsole_get_connection($server_name);
|
||||
if (metaconsole_connect($connection) != NOERR) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$total_SLA += $sla_value;
|
||||
|
||||
if ($show_table) {
|
||||
$data = array ();
|
||||
$data['agent'] = modules_get_agentmodule_agent_name ($sla['id_agent_module']);
|
||||
$data['module'] = modules_get_agentmodule_name ($sla['id_agent_module']);
|
||||
$data['max'] = $sla['sla_max'];
|
||||
$data['min'] = $sla['sla_min'];
|
||||
$data['sla_limit'] = $sla['sla_limit'];
|
||||
|
||||
$data['sla_value_unknown'] = 0;
|
||||
$data['sla_status'] = 0;
|
||||
$data['sla_value'] = 0;
|
||||
if ($sla_value === false) {
|
||||
$data['sla_value_unknown'] = 1;
|
||||
}
|
||||
else {
|
||||
|
||||
if ($sla_value >= $sla['sla_limit']) {
|
||||
$data['sla_status'] = 1;
|
||||
}
|
||||
else {
|
||||
$sla_failed = true;
|
||||
$data['sla_status'] = 0;
|
||||
}
|
||||
|
||||
// Print icon with status including edge
|
||||
# Fix : 100% accurance is 'inside limits' although 10% was not overrun
|
||||
// if (($sla_value == 100 && $sla_value >= $sla['sla_limit']) || ($sla_value > ($sla['sla_limit'] + $edge_interval))) {
|
||||
// $data[6] = html_print_image('images/status_sets/default/severity_normal.png',true,array('title'=>__('Inside limits')));
|
||||
// }
|
||||
// elseif (($sla_value <= $sla['sla_limit'] + $edge_interval)
|
||||
// && ($sla_value >= $sla['sla_limit'] - $edge_interval)) {
|
||||
// $data[6] = html_print_image('images/status_sets/default/severity_warning.png',true,array('title'=>__('On the edge')));
|
||||
// }
|
||||
// else {
|
||||
// $data[6] = html_print_image('images/status_sets/default/severity_critical.png',true,array('title'=>__('Out of limits')));
|
||||
// }
|
||||
|
||||
$data['sla_value'] = $sla_value;
|
||||
$data['sla_formated_value'] = format_numeric ($sla_value, 2). "%";
|
||||
}
|
||||
|
||||
$return['data'][] = $data;
|
||||
}
|
||||
|
||||
|
||||
// Slice graphs calculation
|
||||
if ($show_graphs) {
|
||||
$dataslice = array();
|
||||
$dataslice['agent'] = modules_get_agentmodule_agent_name ($sla['id_agent_module']);
|
||||
$dataslice['module'] = modules_get_agentmodule_name ($sla['id_agent_module']);
|
||||
|
||||
$dataslice['chart'] = graph_sla_slicebar(
|
||||
$sla['id_agent_module'], $content['period'],
|
||||
$sla['sla_min'], $sla['sla_max'],
|
||||
$report['datetime'], $content, $content['time_from'],
|
||||
$content['time_to'], 650, 25, $urlImage, 1, false, false);
|
||||
|
||||
$return['charts'][] = $dataslice;
|
||||
}
|
||||
|
||||
if ($config ['metaconsole'] == 1 && defined('METACONSOLE')) {
|
||||
//Restore db connection
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
return reporting_check_structure_content($return);
|
||||
}
|
||||
|
||||
function reporting_event_top_n($report, $content, $type = 'dinamic',
|
||||
$force_width_chart = null, $force_height_chart = null) {
|
||||
|
||||
global $config;
|
||||
|
||||
$return['type'] = 'top_n';
|
||||
|
@ -677,13 +1087,13 @@ function reporting_event_top_n($report, $content, $type = 'dinamic',
|
|||
}
|
||||
|
||||
|
||||
$return['chars']['bars'] = null;
|
||||
$return['chars']['pie'] = null;
|
||||
$return['charts']['bars'] = null;
|
||||
$return['charts']['pie'] = null;
|
||||
|
||||
|
||||
if ($show_graph != REPORT_TOP_N_ONLY_TABLE) {
|
||||
|
||||
$return['chars']['pie'] = pie3d_graph(false,
|
||||
$return['charts']['pie'] = pie3d_graph(false,
|
||||
$data_pie_graph,
|
||||
$width, $height, __("other"),
|
||||
ui_get_full_url(false, true, false, false) . '/',
|
||||
|
@ -692,7 +1102,7 @@ function reporting_event_top_n($report, $content, $type = 'dinamic',
|
|||
|
||||
|
||||
//Display bars graph
|
||||
$return['chars']['bars'] = hbar_graph(
|
||||
$return['charts']['bars'] = hbar_graph(
|
||||
false, $data_hbar, $width,
|
||||
$height, array(), array(), "", "", true,
|
||||
ui_get_full_url(false, true, false, false) . '/', $config['homedir'] . "/images/logo_vertical_water.png", $config['fontpath'], $config['font_size'], true, 1, true);
|
||||
|
@ -735,11 +1145,6 @@ function reporting_event_top_n($report, $content, $type = 'dinamic',
|
|||
$return['resume']['avg']['formated_value'] = format_for_graph($avg, 2);
|
||||
$return['resume']['max']['value'] = $max;
|
||||
$return['resume']['max']['formated_value'] = format_for_graph($max, 2);
|
||||
|
||||
$table->colspan[5][0] = 3;
|
||||
array_push ($table->data, array('<b>'.__('Summary').'</b>'));
|
||||
$table->colspan[6][0] = 3;
|
||||
array_push ($table->data, array(html_print_table($table_summary, true)));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -255,6 +255,9 @@ function reporting_html_print_report($report, $mini = false) {
|
|||
case 'top_n':
|
||||
reporting_html_top_n($table, $item);
|
||||
break;
|
||||
case 'SLA':
|
||||
reporting_html_SLA($table, $item, $mini);
|
||||
break;
|
||||
}
|
||||
|
||||
if ($item['type'] == 'agent_module')
|
||||
|
@ -267,6 +270,123 @@ function reporting_html_print_report($report, $mini = false) {
|
|||
}
|
||||
}
|
||||
|
||||
function reporting_html_SLA($table, $item, $mini) {
|
||||
if ($mini) {
|
||||
$font_size = '1.5';
|
||||
}
|
||||
else {
|
||||
$font_size = '3';
|
||||
}
|
||||
|
||||
if (!empty($item['failed'])) {
|
||||
$table->colspan['sla']['cell'] = 3;
|
||||
$table->data['sla']['cell'] = $item['failed'];
|
||||
}
|
||||
else {
|
||||
|
||||
if (!empty($item['planned_downtimes'])) {
|
||||
$table1->width = '99%';
|
||||
|
||||
$table1->align = array();
|
||||
$table1->align[0] = 'left';
|
||||
$table1->align[1] = 'left';
|
||||
$table1->align[2] = 'left';
|
||||
$table1->align[3] = 'left';
|
||||
|
||||
$table1->data = array ();
|
||||
|
||||
$table1->head = array ();
|
||||
$table1->head[0] = __('Name');
|
||||
$table1->head[1] = __('Description');
|
||||
$table1->head[2] = __('Execution');
|
||||
$table1->head[3] = __('Dates');
|
||||
|
||||
foreach ($item['planned_downtimes'] as $downtime) {
|
||||
$row = array();
|
||||
$row[] = $downtime['name'];
|
||||
$row[] = $downtime['description'];
|
||||
$row[] = $downtime['execution'];
|
||||
$row[] = $downtime['dates'];
|
||||
|
||||
$table1->data[] = $row;
|
||||
}
|
||||
|
||||
$table->colspan['planned_downtime']['cell'] = 3;
|
||||
$table->data['planned_downtime']['cell'] = html_print_table($table1, true);
|
||||
}
|
||||
|
||||
$table1->width = '99%';
|
||||
|
||||
$table1->align = array();
|
||||
$table1->align[0] = 'left';
|
||||
$table1->align[1] = 'left';
|
||||
$table1->align[2] = 'right';
|
||||
$table1->align[3] = 'right';
|
||||
$table1->align[4] = 'right';
|
||||
$table1->align[5] = 'right';
|
||||
|
||||
$table1->data = array ();
|
||||
|
||||
$table1->head = array ();
|
||||
$table1->head[0] = __('Agent');
|
||||
$table1->head[1] = __('Module');
|
||||
$table1->head[2] = __('Max/Min Values');
|
||||
$table1->head[3] = __('SLA Limit');
|
||||
$table1->head[4] = __('SLA Compliance');
|
||||
$table1->head[5] = __('Status');
|
||||
|
||||
|
||||
|
||||
foreach ($item['data'] as $sla) {
|
||||
$row = array();
|
||||
$row[] = $sla['agent'];
|
||||
$row[] = $sla['module'];
|
||||
$row[] = $sla['max'] . " / " . $sla['min'];
|
||||
$row[] = $sla['sla_limit'] . "%";
|
||||
|
||||
if ($sla['sla_value_unknown']) {
|
||||
$row[] = '<span style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_UNKNOWN.';">' .
|
||||
' - ' . '</span>';
|
||||
$row[] = '<span style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_UNKNOWN.';">' .
|
||||
__('Unknown') . '</span>';
|
||||
}
|
||||
elseif ($sla['sla_status']) {
|
||||
$row[] = '<span style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_NORMAL.';">' .
|
||||
$sla['sla_value'] . "%" . '</span>';
|
||||
$row[] = '<span style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_NORMAL.';">' .
|
||||
__('OK') . '</span>';
|
||||
}
|
||||
else {
|
||||
$row[] = '<span style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_CRITICAL.';">' .
|
||||
$sla['sla_value'] . "%" . '</span>';
|
||||
$row[] = '<span style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_CRITICAL.';">' .
|
||||
__('Fail') . '</span>';
|
||||
}
|
||||
|
||||
$table1->data[] = $row;
|
||||
}
|
||||
|
||||
$table->colspan['sla']['cell'] = 3;
|
||||
$table->data['sla']['cell'] = html_print_table($table1, true);
|
||||
|
||||
if (!empty($item['charts'])) {
|
||||
$table1 = null;
|
||||
$table1->width = '99%';
|
||||
|
||||
$table1->data = array ();
|
||||
|
||||
foreach ($item['charts'] as $chart) {
|
||||
$table1->data[] = array(
|
||||
$chart['agent'] . "<br />" . $chart['module'],
|
||||
$chart['chart']);
|
||||
}
|
||||
|
||||
$table->colspan['charts']['cell'] = 3;
|
||||
$table->data['charts']['cell'] = html_print_table($table1, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function reporting_html_top_n($table, $item) {
|
||||
if (!empty($item['failed'])) {
|
||||
$table->colspan['top_n']['cell'] = 3;
|
||||
|
@ -298,14 +418,14 @@ function reporting_html_top_n($table, $item) {
|
|||
$table->colspan['top_n']['cell'] = 3;
|
||||
$table->data['top_n']['cell'] = html_print_table($table1, true);
|
||||
|
||||
if (!empty($item['chars']['pie'])) {
|
||||
if (!empty($item['charts']['pie'])) {
|
||||
$table->colspan['char_pie']['cell'] = 3;
|
||||
$table->data['char_pie']['cell'] = $item['chars']['pie'];
|
||||
$table->data['char_pie']['cell'] = $item['charts']['pie'];
|
||||
}
|
||||
|
||||
if (!empty($item['chars']['bars'])) {
|
||||
if (!empty($item['charts']['bars'])) {
|
||||
$table->colspan['char_bars']['cell'] = 3;
|
||||
$table->data['char_bars']['cell'] = $item['chars']['bars'];
|
||||
$table->data['char_bars']['cell'] = $item['charts']['bars'];
|
||||
}
|
||||
|
||||
if (!empty($item['resume'])) {
|
||||
|
@ -3933,543 +4053,6 @@ function reporting_render_report_html_item ($content, $table, $report, $mini = f
|
|||
if (function_exists("reporting_enterprise_sla_services"))
|
||||
reporting_enterprise_sla_services($mini, $content, $report, $table, $item_title);
|
||||
break;
|
||||
case 3:
|
||||
case 'SLA':
|
||||
if (empty($item_title)) {
|
||||
$item_title = __('S.L.A.');
|
||||
}
|
||||
reporting_header_content($mini, $content, $report, $table, $item_title);
|
||||
|
||||
$edge_interval = 10;
|
||||
|
||||
// What show?
|
||||
$show_table = $content['show_graph'] == 0 || $content['show_graph'] == 1;
|
||||
$show_graphs = $content['show_graph'] == 1 || $content['show_graph'] == 2;
|
||||
|
||||
//RUNNING
|
||||
$table->style[1] = 'text-align: right';
|
||||
|
||||
// Put description at the end of the module (if exists)
|
||||
|
||||
$table->colspan[0][1] = 2;
|
||||
$next_row = 1;
|
||||
if ($content["description"] != "") {
|
||||
$table->colspan[$next_row][0] = 3;
|
||||
$next_row++;
|
||||
$data_desc = array();
|
||||
$data_desc[0] = $content["description"];
|
||||
array_push ($table->data, $data_desc);
|
||||
}
|
||||
|
||||
$slas = db_get_all_rows_field_filter ('treport_content_sla_combined',
|
||||
'id_report_content', $content['id_rc']);
|
||||
|
||||
if ($slas === false) {
|
||||
$data = array ();
|
||||
$table->colspan[$next_row][0] = 3;
|
||||
$next_row++;
|
||||
$data[0] = __('There are no SLAs defined');
|
||||
array_push ($table->data, $data);
|
||||
$slas = array ();
|
||||
break;
|
||||
}
|
||||
elseif ($show_table) {
|
||||
$table1->width = '99%';
|
||||
$table1->data = array ();
|
||||
$table1->head = array ();
|
||||
$table1->head[0] = __('Agent');
|
||||
$table1->head[1] = __('Module');
|
||||
$table1->head[2] = __('Max/Min Values');
|
||||
$table1->head[3] = __('SLA Limit');
|
||||
$table1->head[4] = __('SLA Compliance');
|
||||
$table1->head[5] = __('Status');
|
||||
// $table1->head[6] = __('Criticity');
|
||||
$table1->style[0] = 'text-align: left';
|
||||
$table1->style[1] = 'text-align: left';
|
||||
$table1->style[2] = 'text-align: right';
|
||||
$table1->style[3] = 'text-align: right';
|
||||
$table1->style[4] = 'text-align: right';
|
||||
$table1->style[5] = 'text-align: right';
|
||||
// $table1->style[6] = 'text-align: center';
|
||||
}
|
||||
|
||||
// Table Planned Downtimes
|
||||
require_once ($config['homedir'] . '/include/functions_planned_downtimes.php');
|
||||
$metaconsole_on = ($config['metaconsole'] == 1) && defined('METACONSOLE');
|
||||
$downtime_malformed = false;
|
||||
|
||||
$planned_downtimes_empty = true;
|
||||
$malformed_planned_downtimes_empty = true;
|
||||
|
||||
if ($metaconsole_on) {
|
||||
$id_agent_modules_by_server = array();
|
||||
|
||||
foreach ($slas as $sla) {
|
||||
$server = $sla['server_name'];
|
||||
if (empty($server))
|
||||
continue;
|
||||
|
||||
if (!isset($id_agent_modules_by_server[$server]))
|
||||
$id_agent_modules_by_server[$server] = array();
|
||||
|
||||
$id_agent_modules_by_server[$server][] = $sla['id_agent_module'];
|
||||
}
|
||||
|
||||
$planned_downtimes_by_server = array();
|
||||
$malformed_planned_downtimes_by_server = array();
|
||||
foreach ($id_agent_modules_by_server as $server => $id_agent_modules) {
|
||||
//Metaconsole connection
|
||||
if (!empty($server)) {
|
||||
$connection = metaconsole_get_connection($server);
|
||||
if (!metaconsole_load_external_db($connection)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$planned_downtimes_by_server[$server] = reporting_get_planned_downtimes(($report['datetime']-$content['period']), $report['datetime'], $id_agent_modules);
|
||||
$malformed_planned_downtimes_by_server[$server] = planned_downtimes_get_malformed();
|
||||
|
||||
if (!empty($planned_downtimes_by_server[$server]))
|
||||
$planned_downtimes_empty = false;
|
||||
if (!empty($malformed_planned_downtimes_by_server[$server]))
|
||||
$malformed_planned_downtimes_empty = false;
|
||||
|
||||
//Restore db connection
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
}
|
||||
|
||||
if (!$planned_downtimes_empty) {
|
||||
$table_planned_downtimes = new StdClass();
|
||||
$table_planned_downtimes->width = '100%';
|
||||
$table_planned_downtimes->title = __('This SLA has been affected by the following planned downtimes');
|
||||
$table_planned_downtimes->head = array();
|
||||
$table_planned_downtimes->head[0] = __('Server');
|
||||
$table_planned_downtimes->head[1] = __('Name');
|
||||
$table_planned_downtimes->head[2] = __('Description');
|
||||
$table_planned_downtimes->head[3] = __('Execution');
|
||||
$table_planned_downtimes->head[4] = __('Dates');
|
||||
$table_planned_downtimes->headstyle = array();
|
||||
$table_planned_downtimes->style = array();
|
||||
$table_planned_downtimes->cellstyle = array();
|
||||
$table_planned_downtimes->data = array();
|
||||
|
||||
foreach ($planned_downtimes_by_server as $server => $planned_downtimes) {
|
||||
foreach ($planned_downtimes as $planned_downtime) {
|
||||
$data = array();
|
||||
$data[0] = $server;
|
||||
$data[1] = $planned_downtime['name'];
|
||||
$data[2] = $planned_downtime['description'];
|
||||
$data[3] = ucfirst($planned_downtime['type_execution']);
|
||||
$data[4] = "";
|
||||
switch ($planned_downtime['type_execution']) {
|
||||
case 'once':
|
||||
$data[3] = date ("Y-m-d H:i", $planned_downtime['date_from']) .
|
||||
" " . __('to') . " ".
|
||||
date ("Y-m-d H:i", $planned_downtime['date_to']);
|
||||
break;
|
||||
case 'periodically':
|
||||
switch ($planned_downtime['type_periodicity']) {
|
||||
case 'weekly':
|
||||
$data[4] = __('Weekly:');
|
||||
$data[4] .= " ";
|
||||
if ($planned_downtime['monday']) {
|
||||
$data[4] .= __('Mon');
|
||||
$data[4] .= " ";
|
||||
}
|
||||
if ($planned_downtime['tuesday']) {
|
||||
$data[4] .= __('Tue');
|
||||
$data[4] .= " ";
|
||||
}
|
||||
if ($planned_downtime['wednesday']) {
|
||||
$data[4] .= __('Wed');
|
||||
$data[4] .= " ";
|
||||
}
|
||||
if ($planned_downtime['thursday']) {
|
||||
$data[4] .= __('Thu');
|
||||
$data[4] .= " ";
|
||||
}
|
||||
if ($planned_downtime['friday']) {
|
||||
$data[4] .= __('Fri');
|
||||
$data[4] .= " ";
|
||||
}
|
||||
if ($planned_downtime['saturday']) {
|
||||
$data[4] .= __('Sat');
|
||||
$data[4] .= " ";
|
||||
}
|
||||
if ($planned_downtime['sunday']) {
|
||||
$data[4] .= __('Sun');
|
||||
$data[4] .= " ";
|
||||
}
|
||||
$data[4] .= " (" . $planned_downtime['periodically_time_from'];
|
||||
$data[4] .= "-" . $planned_downtime['periodically_time_to'] . ")";
|
||||
break;
|
||||
case 'monthly':
|
||||
$data[4] = __('Monthly:') . " ";
|
||||
$data[4] .= __('From day') . " " . $planned_downtime['periodically_day_from'];
|
||||
$data[4] .= " " . strtolower(__('To day')) . " ";
|
||||
$data[4] .= $planned_downtime['periodically_day_to'];
|
||||
$data[4] .= " (" . $planned_downtime['periodically_time_from'];
|
||||
$data[4] .= "-" . $planned_downtime['periodically_time_to'] . ")";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (!$malformed_planned_downtimes_empty
|
||||
&& isset($malformed_planned_downtimes_by_server[$server])
|
||||
&& isset($malformed_planned_downtimes_by_server[$server][$planned_downtime['id']])) {
|
||||
$next_row_num = count($table_planned_downtimes->data);
|
||||
$table_planned_downtimes->cellstyle[$next_row_num][0] = 'color: red';
|
||||
$table_planned_downtimes->cellstyle[$next_row_num][1] = 'color: red';
|
||||
$table_planned_downtimes->cellstyle[$next_row_num][2] = 'color: red';
|
||||
$table_planned_downtimes->cellstyle[$next_row_num][3] = 'color: red';
|
||||
$table_planned_downtimes->cellstyle[$next_row_num][4] = 'color: red';
|
||||
|
||||
if (!$downtime_malformed)
|
||||
$downtime_malformed = true;
|
||||
}
|
||||
|
||||
$table_planned_downtimes->data[] = $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$id_agent_modules = array();
|
||||
foreach ($slas as $sla) {
|
||||
if (!empty($sla['id_agent_module']))
|
||||
$id_agent_modules[] = $sla['id_agent_module'];
|
||||
}
|
||||
|
||||
$planned_downtimes = reporting_get_planned_downtimes(($report['datetime']-$content['period']), $report['datetime'], $id_agent_modules);
|
||||
$malformed_planned_downtimes = planned_downtimes_get_malformed();
|
||||
|
||||
if (!empty($planned_downtimes))
|
||||
$planned_downtimes_empty = false;
|
||||
if (!empty($malformed_planned_downtimes))
|
||||
$malformed_planned_downtimes_empty = false;
|
||||
|
||||
if (!$planned_downtimes_empty) {
|
||||
$table_planned_downtimes = new StdClass();
|
||||
$table_planned_downtimes->width = '100%';
|
||||
$table_planned_downtimes->title = __('This SLA has been affected by the following planned downtimes');
|
||||
$table_planned_downtimes->head = array();
|
||||
$table_planned_downtimes->head[0] = __('Name');
|
||||
$table_planned_downtimes->head[1] = __('Description');
|
||||
$table_planned_downtimes->head[2] = __('Execution');
|
||||
$table_planned_downtimes->head[3] = __('Dates');
|
||||
$table_planned_downtimes->headstyle = array();
|
||||
$table_planned_downtimes->style = array();
|
||||
$table_planned_downtimes->cellstyle = array();
|
||||
$table_planned_downtimes->data = array();
|
||||
|
||||
foreach ($planned_downtimes as $planned_downtime) {
|
||||
|
||||
$data = array();
|
||||
$data[0] = $planned_downtime['name'];
|
||||
$data[1] = $planned_downtime['description'];
|
||||
$data[2] = ucfirst($planned_downtime['type_execution']);
|
||||
$data[3] = "";
|
||||
switch ($planned_downtime['type_execution']) {
|
||||
case 'once':
|
||||
$data[3] = date ("Y-m-d H:i", $planned_downtime['date_from']) .
|
||||
" " . __('to') . " ".
|
||||
date ("Y-m-d H:i", $planned_downtime['date_to']);
|
||||
break;
|
||||
case 'periodically':
|
||||
switch ($planned_downtime['type_periodicity']) {
|
||||
case 'weekly':
|
||||
$data[3] = __('Weekly:');
|
||||
$data[3] .= " ";
|
||||
if ($planned_downtime['monday']) {
|
||||
$data[3] .= __('Mon');
|
||||
$data[3] .= " ";
|
||||
}
|
||||
if ($planned_downtime['tuesday']) {
|
||||
$data[3] .= __('Tue');
|
||||
$data[3] .= " ";
|
||||
}
|
||||
if ($planned_downtime['wednesday']) {
|
||||
$data[3] .= __('Wed');
|
||||
$data[3] .= " ";
|
||||
}
|
||||
if ($planned_downtime['thursday']) {
|
||||
$data[3] .= __('Thu');
|
||||
$data[3] .= " ";
|
||||
}
|
||||
if ($planned_downtime['friday']) {
|
||||
$data[3] .= __('Fri');
|
||||
$data[3] .= " ";
|
||||
}
|
||||
if ($planned_downtime['saturday']) {
|
||||
$data[3] .= __('Sat');
|
||||
$data[3] .= " ";
|
||||
}
|
||||
if ($planned_downtime['sunday']) {
|
||||
$data[3] .= __('Sun');
|
||||
$data[3] .= " ";
|
||||
}
|
||||
$data[3] .= " (" . $planned_downtime['periodically_time_from'];
|
||||
$data[3] .= "-" . $planned_downtime['periodically_time_to'] . ")";
|
||||
break;
|
||||
case 'monthly':
|
||||
$data[3] = __('Monthly:') . " ";
|
||||
$data[3] .= __('From day') . " " . $planned_downtime['periodically_day_from'];
|
||||
$data[3] .= " " . strtolower(__('To day')) . " ";
|
||||
$data[3] .= $planned_downtime['periodically_day_to'];
|
||||
$data[3] .= " (" . $planned_downtime['periodically_time_from'];
|
||||
$data[3] .= "-" . $planned_downtime['periodically_time_to'] . ")";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (!$malformed_planned_downtimes_empty && isset($malformed_planned_downtimes[$planned_downtime['id']])) {
|
||||
$next_row_num = count($table_planned_downtimes->data);
|
||||
$table_planned_downtimes->cellstyle[$next_row_num][0] = 'color: red';
|
||||
$table_planned_downtimes->cellstyle[$next_row_num][1] = 'color: red';
|
||||
$table_planned_downtimes->cellstyle[$next_row_num][2] = 'color: red';
|
||||
$table_planned_downtimes->cellstyle[$next_row_num][3] = 'color: red';
|
||||
|
||||
if (!$downtime_malformed)
|
||||
$downtime_malformed = true;
|
||||
}
|
||||
|
||||
$table_planned_downtimes->data[] = $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($downtime_malformed) {
|
||||
$info_malformed = ui_print_error_message(
|
||||
__('This item is affected by a malformed planned downtime') . ". " .
|
||||
__('Go to the planned downtimes section to solve this') . ".", '', true);
|
||||
|
||||
$data = array();
|
||||
$data[0] = $info_malformed;
|
||||
$data[0] .= html_print_table($table_planned_downtimes, true);
|
||||
$table->colspan[$next_row][0] = 3;
|
||||
$next_row++;
|
||||
array_push ($table->data, $data);
|
||||
break;
|
||||
}
|
||||
|
||||
$data_graph = array ();
|
||||
// $data_horin_graph = array();
|
||||
$data_graph[__('Inside limits')] = 0;
|
||||
$data_graph[__('Out of limits')] = 0;
|
||||
$data_graph[__('On the edge')] = 0;
|
||||
$data_graph[__('Unknown')] = 0;
|
||||
// $data_horin_graph[__('Inside limits')] = 0;
|
||||
// $data_horin_graph[__('Out of limits')] = 0;
|
||||
// $data_horin_graph[__('On the edge')] = 0;
|
||||
// $data_horin_graph[__('Unknown')] = 0;
|
||||
|
||||
$data_graph[__('Plannified downtime')] = 0;
|
||||
|
||||
$urlImage = ui_get_full_url(false, true, false, false);
|
||||
|
||||
$sla_failed = false;
|
||||
$total_SLA = 0;
|
||||
$total_result_SLA = 'ok';
|
||||
$sla_showed = array();
|
||||
$sla_showed_values = array();
|
||||
|
||||
foreach ($slas as $sla) {
|
||||
$server_name = $sla ['server_name'];
|
||||
//Metaconsole connection
|
||||
if (($config ['metaconsole'] == 1) && $server_name != '' && defined('METACONSOLE')) {
|
||||
$connection = metaconsole_get_connection($server_name);
|
||||
if (!metaconsole_load_external_db($connection)) {
|
||||
//ui_print_error_message ("Error connecting to ".$server_name);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (modules_is_disable_agent($sla['id_agent_module'])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//Get the sla_value in % and store it on $sla_value
|
||||
$sla_value = reporting_get_agentmodule_sla(
|
||||
$sla['id_agent_module'], $content['period'],
|
||||
$sla['sla_min'], $sla['sla_max'],
|
||||
$report["datetime"], $content,
|
||||
$content['time_from'], $content['time_to']);
|
||||
|
||||
if (($config ['metaconsole'] == 1) && defined('METACONSOLE')) {
|
||||
//Restore db connection
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
|
||||
//Do not show right modules if 'only_display_wrong' is active
|
||||
if ($content['only_display_wrong'] == 1 &&
|
||||
$sla_value >= $sla['sla_limit']) {
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$sla_showed[] = $sla;
|
||||
$sla_showed_values[] = $sla_value;
|
||||
|
||||
}
|
||||
|
||||
// SLA items sorted descending ()
|
||||
if ($content['top_n'] == 2) {
|
||||
arsort($sla_showed_values);
|
||||
}
|
||||
// SLA items sorted ascending
|
||||
else if ($content['top_n'] == 1) {
|
||||
asort($sla_showed_values);
|
||||
}
|
||||
|
||||
// Slice graphs calculation
|
||||
if ($show_graphs && !empty($slas)) {
|
||||
$tableslice->width = '99%';
|
||||
$tableslice->style[0] = 'text-align: right';
|
||||
$tableslice->data = array ();
|
||||
}
|
||||
|
||||
foreach ($sla_showed_values as $k => $sla_value) {
|
||||
$sla = $sla_showed[$k];
|
||||
|
||||
$server_name = $sla ['server_name'];
|
||||
//Metaconsole connection
|
||||
if (($config ['metaconsole'] == 1) && ($server_name != '') && defined('METACONSOLE')) {
|
||||
$connection = metaconsole_get_connection($server_name);
|
||||
if (metaconsole_connect($connection) != NOERR) {
|
||||
//ui_print_error_message ("Error connecting to ".$server_name);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//Fill the array data_graph for the pie graph
|
||||
// if ($sla_value === false) {
|
||||
// $data_graph[__('Unknown')]++;
|
||||
// // $data_horin_graph[__('Unknown')]['g']++;
|
||||
// }
|
||||
// # Fix : 100% accurance is 'inside limits' although 10% was not overrun
|
||||
// else if (($sla_value == 100 && $sla_value >= $sla['sla_limit']) ) {
|
||||
// $data_graph[__('Inside limits')]++;
|
||||
// $data_horin_graph[__('Inside limits')]['g']++;
|
||||
// }
|
||||
// else if ($sla_value <= ($sla['sla_limit']+10) && $sla_value >= ($sla['sla_limit']-10)) {
|
||||
// $data_graph[__('On the edge')]++;
|
||||
// $data_horin_graph[__('On the edge')]['g']++;
|
||||
// }
|
||||
// else if ($sla_value > ($sla['sla_limit']+10)) {
|
||||
// $data_graph[__('Inside limits')]++;
|
||||
// $data_horin_graph[__('Inside limits')]['g']++;
|
||||
// }
|
||||
// else if ($sla_value < ($sla['sla_limit']-10)) {
|
||||
// $data_graph[__('Out of limits')]++;
|
||||
// $data_horin_graph[__('Out of limits')]['g']++;
|
||||
// }
|
||||
|
||||
// if ($sla_value === false) {
|
||||
// if ($total_result_SLA != 'fail')
|
||||
// $total_result_SLA = 'unknown';
|
||||
// }
|
||||
// else if ($sla_value < $sla['sla_limit']) {
|
||||
// $total_result_SLA = 'fail';
|
||||
// }
|
||||
|
||||
$total_SLA += $sla_value;
|
||||
|
||||
if ($show_table) {
|
||||
$data = array ();
|
||||
$data[0] = modules_get_agentmodule_agent_name ($sla['id_agent_module']);
|
||||
$data[1] = modules_get_agentmodule_name ($sla['id_agent_module']);
|
||||
$data[2] = $sla['sla_max'].'/';
|
||||
$data[2] .= $sla['sla_min'];
|
||||
$data[3] = $sla['sla_limit'].'%';
|
||||
|
||||
if ($sla_value === false) {
|
||||
$data[4] = '<span style="font: bold '.$sizem.'em Arial, Sans-serif; color: '.COL_UNKNOWN.';">';
|
||||
$data[5] = '<span style="font: bold '.$sizem.'em Arial, Sans-serif; color: '.COL_UNKNOWN.';">'.__('Unknown').'</span>';
|
||||
// $data[6] = html_print_image('images/status_sets/default/severity_maintenance.png',true,array('title'=>__('Unknown')));
|
||||
}
|
||||
else {
|
||||
$data[4] = '';
|
||||
$data[5] = '';
|
||||
// $data[6] = '';
|
||||
|
||||
if ($sla_value >= $sla['sla_limit']) {
|
||||
$data[4] = '<span style="font: bold '.$sizem.'em Arial, Sans-serif; color: '.COL_NORMAL.';">';
|
||||
$data[5] = '<span style="font: bold '.$sizem.'em Arial, Sans-serif; color: '.COL_NORMAL.';">'.__('OK').'</span>';
|
||||
}
|
||||
else {
|
||||
$sla_failed = true;
|
||||
$data[4] = '<span style="font: bold '.$sizem.'em Arial, Sans-serif; color: '.COL_CRITICAL.';">';
|
||||
$data[5] = '<span style="font: bold '.$sizem.'em Arial, Sans-serif; color: '.COL_CRITICAL.';">'.__('Fail').'</span>';
|
||||
}
|
||||
|
||||
// Print icon with status including edge
|
||||
# Fix : 100% accurance is 'inside limits' although 10% was not overrun
|
||||
// if (($sla_value == 100 && $sla_value >= $sla['sla_limit']) || ($sla_value > ($sla['sla_limit'] + $edge_interval))) {
|
||||
// $data[6] = html_print_image('images/status_sets/default/severity_normal.png',true,array('title'=>__('Inside limits')));
|
||||
// }
|
||||
// elseif (($sla_value <= $sla['sla_limit'] + $edge_interval)
|
||||
// && ($sla_value >= $sla['sla_limit'] - $edge_interval)) {
|
||||
// $data[6] = html_print_image('images/status_sets/default/severity_warning.png',true,array('title'=>__('On the edge')));
|
||||
// }
|
||||
// else {
|
||||
// $data[6] = html_print_image('images/status_sets/default/severity_critical.png',true,array('title'=>__('Out of limits')));
|
||||
// }
|
||||
|
||||
$data[4] .= format_numeric ($sla_value, 2). "%";
|
||||
}
|
||||
$data[4] .= "</span>";
|
||||
|
||||
array_push ($table1->data, $data);
|
||||
}
|
||||
|
||||
// Slice graphs calculation
|
||||
if ($show_graphs) {
|
||||
$dataslice = array();
|
||||
$dataslice[0] = modules_get_agentmodule_agent_name ($sla['id_agent_module']);
|
||||
$dataslice[0] .= "<br>";
|
||||
$dataslice[0] .= modules_get_agentmodule_name ($sla['id_agent_module']);
|
||||
|
||||
$dataslice[1] = graph_sla_slicebar ($sla['id_agent_module'], $content['period'],
|
||||
$sla['sla_min'], $sla['sla_max'], $report['datetime'], $content, $content['time_from'],
|
||||
$content['time_to'], 650, 25, $urlImage, 1, false, false);
|
||||
|
||||
array_push ($tableslice->data, $dataslice);
|
||||
}
|
||||
|
||||
if ($config ['metaconsole'] == 1 && defined('METACONSOLE')) {
|
||||
//Restore db connection
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
}
|
||||
|
||||
if ($show_table) {
|
||||
$data = array();
|
||||
$data[0] = html_print_table($table1, true);
|
||||
$table->colspan[$next_row][0] = 3;
|
||||
$next_row++;
|
||||
array_push ($table->data, $data);
|
||||
}
|
||||
|
||||
// $data = array();
|
||||
// $data_pie_graph = json_encode ($data_graph);
|
||||
if ($show_graphs && !empty($slas)) {
|
||||
$table->colspan[$next_row][0] = 3;
|
||||
$next_row++;
|
||||
$data = array();
|
||||
$data[0] = html_print_table($tableslice, true);
|
||||
array_push ($table->data, $data);
|
||||
}
|
||||
|
||||
if (!empty($table_planned_downtimes)) {
|
||||
$data = array();
|
||||
$data[0] = html_print_table($table_planned_downtimes, true);
|
||||
$table->colspan[$next_row][0] = 3;
|
||||
$next_row++;
|
||||
array_push ($table->data, $data);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue