From af1bfb2a6a044854d84fab357b1be4829c5fa54f Mon Sep 17 00:00:00 2001 From: zarzuelo Date: Fri, 22 Jun 2012 12:19:05 +0000 Subject: [PATCH] 2012-06-22 Sergio Martin * include/functions_reporting.php: Improved several parts of SLA reports. Add icons to criticity, etc. * include/functions_api.php: Fixed bug in get events api function remaning function * godmode/reporting/graph_builder.graph_editor.php: Increase the size of little combo boxes in combined graphs editor Merged from 4.0.2 git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6679 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_console/ChangeLog | 13 ++ .../reporting/graph_builder.graph_editor.php | 4 +- pandora_console/include/functions_api.php | 4 +- .../include/functions_reporting.php | 193 +++++++++++------- 4 files changed, 138 insertions(+), 76 deletions(-) diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index 04f31a6c4d..f2771c1f5d 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,16 @@ +2012-06-22 Sergio Martin + + * include/functions_reporting.php: Improved several + parts of SLA reports. Add icons to criticity, etc. + + * include/functions_api.php: Fixed bug in get events + api function remaning function + + * godmode/reporting/graph_builder.graph_editor.php: Increase + the size of little combo boxes in combined graphs editor + + Merged from 4.0.2 + 2012-06-22 Miguel de Dios * extensions/update_manager/load_updatemanager.php, diff --git a/pandora_console/godmode/reporting/graph_builder.graph_editor.php b/pandora_console/godmode/reporting/graph_builder.graph_editor.php index 5d95288dd4..119c4d8b00 100644 --- a/pandora_console/godmode/reporting/graph_builder.graph_editor.php +++ b/pandora_console/godmode/reporting/graph_builder.graph_editor.php @@ -161,10 +161,10 @@ echo ""; echo "".html_print_select ($agents, 'id_agents[]', 0, false, '', '', true, true, true, '', false, 'width:200px;').""; } else {*/ - echo "".html_print_select (agents_get_group_agents(), 'id_agents[]', 0, false, '', '', true, true, true, '', false, 'width:200px;').""; + echo "".html_print_select (agents_get_group_agents(), 'id_agents[]', 0, false, '', '', true, true, true, '', false, 'width:300px;').""; //} echo "" . html_print_image("images/darrowright.png", true) . ""; -echo "".html_print_select (array (), 'module[]', 0, false, '', 0, true, true, true, '', false, 'width:200px;').""; +echo "".html_print_select (array (), 'module[]', 0, false, '', 0, true, true, true, '', false, 'width:300px;').""; echo ""; echo ""; echo ""; diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index c6730d22d0..2c2e386c45 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -4505,7 +4505,7 @@ function api_set_validate_events($id_event, $trash1, $other, $return_type, $user } } -function api_get_events__with_user($trash1, $trash2, $other, $returnType, $user_in_db) { +function get_events_with_user($trash1, $trash2, $other, $returnType, $user_in_db) { global $config; //By default. @@ -4810,7 +4810,7 @@ function api_get_events__with_user($trash1, $trash2, $other, $returnType, $user_ */ function api_get_events($trash1, $trash2, $other, $returnType, $user_in_db = null) { if ($user_in_db !== null) { - get_events__with_user($trash1, $trash2, $other, $returnType, $user_in_db); + get_events_with_user($trash1, $trash2, $other, $returnType, $user_in_db); $last_error = error_get_last(); if (!empty($last_error)) { $errors = array(E_ERROR, E_WARNING, E_USER_ERROR, diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 2c9dcf5a40..e5bdc7377e 100644 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -2318,14 +2318,22 @@ function reporting_render_report_html_item ($content, $table, $report, $mini = f case 'SLA': reporting_header_content($mini, $content, $report, $table, __('S.L.A.')); - $show_graph = $content['show_graph']; + $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[1][0] = 3; + $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); @@ -2333,15 +2341,17 @@ function reporting_render_report_html_item ($content, $table, $report, $mini = f $slas = db_get_all_rows_field_filter ('treport_content_sla_combined', 'id_report_content', $content['id_rc']); + if ($slas === false) { $data = array (); - $table->colspan[2][0] = 3; + $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_graph == 0 || $show_graph == 1) { + elseif ($show_table) { $table1->width = '99%'; $table1->data = array (); $table1->head = array (); @@ -2349,14 +2359,16 @@ function reporting_render_report_html_item ($content, $table, $report, $mini = f $table1->head[1] = __('Module'); $table1->head[2] = __('Max/Min Values'); $table1->head[3] = __('SLA Limit'); - $table1->head[4] = __('Value'); + $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'; } $data_graph = array (); @@ -2374,12 +2386,15 @@ function reporting_render_report_html_item ($content, $table, $report, $mini = f $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 != '') { $connection = metaconsole_get_connection($server_name); - if (metaconsole_load_external_db($connection) != NOERR) { + if (!metaconsole_load_external_db($connection)) { //ui_print_error_message ("Error connecting to ".$server_name); continue; } @@ -2389,7 +2404,43 @@ function reporting_render_report_html_item ($content, $table, $report, $mini = f $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']); + + //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 != '') { + $connection = metaconsole_get_connection($server_name); + if (!metaconsole_load_external_db($connection)) { + //ui_print_error_message ("Error connecting to ".$server_name); + continue; + } + } + if ($sla_value === false) { if ($total_result_SLA != 'fail') $total_result_SLA = 'unknown'; @@ -2403,38 +2454,40 @@ function reporting_render_report_html_item ($content, $table, $report, $mini = f $data_graph[__('Unknown')]++; $data_horin_graph[__('Unknown')]['g']++; } - else if ($sla_value <= ($sla['sla_limit']+10) && $sla_value >= ($sla['sla_limit']-10)) { + else if ($sla_value <= ($sla['sla_limit']+$edge_interval) && $sla_value >= ($sla['sla_limit']-$edge_interval)) { $data_graph[__('On the edge')]++; $data_horin_graph[__('On the edge')]['g']++; } - else if ($sla_value > ($sla['sla_limit']+10)) { + else if ($sla_value > ($sla['sla_limit']+$edge_interval)) { $data_graph[__('Inside limits')]++; $data_horin_graph[__('Inside limits')]['g']++; } - else if ($sla_value < ($sla['sla_limit']-10)) { + else if ($sla_value < ($sla['sla_limit']-$edge_interval)) { $data_graph[__('Out of limits')]++; $data_horin_graph[__('Out of limits')]['g']++; } - - //Do not show right modules if 'only_display_wrong' is active - if ($content['only_display_wrong'] == 1 && $sla_value >= $sla['sla_limit']) continue; - + $total_SLA += $sla_value; - if ($show_graph == 0 || $show_graph == 1) { + 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']; + $data[3] = $sla['sla_limit'].'%'; if ($sla_value === false) { $data[4] = ''; - $data[5] = ''.__('Unknown').''; + $data[5] = html_print_image('images/status_sets/default/severity_maintenance.png',true,array('title'=>__('Unknown'))); + $data[6] = ''.__('Unknown').''; } else { - if ($sla_value >= $sla['sla_limit']) { + $data[4] = ''; + $data[5] = ''; + $data[6] = ''; + + if ($sla_value > $sla['sla_limit']) { $data[4] = ''; $data[5] = ''.__('OK').''; } @@ -2443,48 +2496,56 @@ function reporting_render_report_html_item ($content, $table, $report, $mini = f $data[4] = ''; $data[5] = ''.__('Fail').''; } + + // Print icon with status including edge + if ($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] .= ""; - // This column will be used temporary for sort data - $data[6] = format_numeric ($sla_value, 2); 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] .= "
"; + $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,''); + + array_push ($tableslice->data, $dataslice); + } + if ($config ['metaconsole'] == 1) { //Restore db connection metaconsole_restore_db(); } } - // SLA items sorted descending () - if ($content['top_n'] == 2){ - usort($table1->data, "sla_value_desc_cmp"); - } - // SLA items sorted ascending - else if ($content['top_n'] == 1){ - usort($table1->data, "sla_value_asc_cmp"); - } - - // Delete temporary column used to sort SLA data - for ($i=0; $i < count($table1->data); $i++) { - unset($table1->data[$i][6]); - } - - $next_row = 2; - if ($show_graph == 0 || $show_graph == 1) { + if ($show_table) { $data = array(); $data[0] = html_print_table($table1, true); - array_push ($table->data, $data); $table->colspan[$next_row][0] = 3; $next_row++; + array_push ($table->data, $data); } - $table->colspan[$next_row][0] = 2; - $next_row++; $data = array(); $data_pie_graph = json_encode ($data_graph); - if (($show_graph == 1 || $show_graph == 2) && !empty($slas)) { + if ($show_graphs && !empty($slas)) { $data[0] = pie3d_graph(false, $data_graph, 500, 150, __("other"), "", $config['homedir'] . "/images/logo_vertical_water.png", $config['fontpath'], $config['font_size']); @@ -2492,46 +2553,34 @@ function reporting_render_report_html_item ($content, $table, $report, $mini = f //Print resume $table_resume = null; - $table_resume->head[0] = __('Resume Value'); - $table_resume->head[1] = __('Status'); - if ($total_result_SLA == 'ok') { - $table_resume->data[0][0] = ''; - $table_resume->data[0][1] = ''.__('OK').''; - } - if ($total_result_SLA == 'fail') { - $table_resume->data[0][0] = ''; - $table_resume->data[0][1] = ''.__('Fail').''; - } - if ($total_result_SLA == 'unknown') { - $table_resume->data[0][0] = ''; - $table_resume->data[0][1] = ''.__('Unknown').''; - } - $table_resume->data[0][0] .= format_numeric($total_SLA / count($slas), 2); + $table_resume->head[0] = __('Average Value'); + + $table_resume->data[0][0] = ''; + $table_resume->data[0][0] .= format_numeric($total_SLA / count($sla_showed), 2); $table_resume->data[0][0] .= "%"; - + $data[1] = html_print_table($table_resume, true); + $table_resume = null; + $table_resume->head[0] = __('SLA Compliance'); + + if ($total_result_SLA == 'ok') { + $table_resume->data[0][0] = ''.__('OK').''; + } + if ($total_result_SLA == 'fail') { + $table_resume->data[0][0] = ''.__('Fail').''; + } + if ($total_result_SLA == 'unknown') { + $table_resume->data[0][0] = ''.__('Unknown').''; + } + + $data[2] = html_print_table($table_resume, true); + $next_row++; array_push ($table->data, $data); - $table2->width = '99%'; - $table2->style[0] = 'text-align: right'; - $table2->data = array (); - foreach ($slas as $sla) { - $data = array(); - $data[0] = modules_get_agentmodule_agent_name ($sla['id_agent_module']); - $data[0] .= "
"; - $data[0] .= modules_get_agentmodule_name ($sla['id_agent_module']); - - $data[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'], 550, 25,''); - - array_push ($table2->data, $data); - } $table->colspan[$next_row][0] = 3; - $next_row++; $data = array(); - $data[0] = html_print_table($table2, true); + $data[0] = html_print_table($tableslice, true); array_push ($table->data, $data); } break;