diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index b600d5232a..9cd854bffd 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,11 @@ +2010-05-03 Miguel de Dios + + * operation/reporting/reporting_xml.php: added default value "now" in + $report["datetime"]. Removed (as comment at the momment) obsolet report + items, and added the items: "event_report_agent", "text", "sql", + "event_report_module", "alert_report_module", "alert_report_agent", + "url", "database_serialized", "TTRT", "TTO", "MTBF" and "MTTR". + 2010-05-03 Miguel de Dios * include/functions_reporting.php: added the parameter "$html" in the diff --git a/pandora_console/operation/reporting/reporting_xml.php b/pandora_console/operation/reporting/reporting_xml.php index 0c0dd98de6..a6c02a21f7 100644 --- a/pandora_console/operation/reporting/reporting_xml.php +++ b/pandora_console/operation/reporting/reporting_xml.php @@ -121,6 +121,8 @@ if (! $id_report) { $report = get_db_row ('treport', 'id_report', $id_report); +$report["datetime"] = get_system_time(); + if (! give_acl ($config['id_user'], $report['id_group'], "AR")) { audit_db ($config['id_user'], $_SERVER['REMOTE_ADDR'], "ACL Violation","Trying to access graph reader"); include ("general/noaccess.php"); @@ -179,125 +181,364 @@ foreach ($contents as $content) { $data["type"] = $content["type"]; switch ($content["type"]) { - case 1: - case 'simple_graph': - $data["title"] = __('Simple graph'); - $data["objdata"]["img"] = 'include/fgraph.php?tipo=sparse&id='.$content['id_agent_module'].'&height=230&width=720&period='.$content['period'].'&date='.$datetime.'&avg_only=1&pure=1'; - break; - case 2: - case 'custom_graph': - $graph = get_db_row ("tgraph", "id_graph", $content['id_gs']); - $data["title"] = __('Custom graph'); - $data["objdata"]["img_name"] = $graph["name"]; - - $result = get_db_all_rows_field_filter ("tgraph_source","id_graph",$content['id_gs']); - $modules = array (); - $weights = array (); + case 1: + case 'simple_graph': + $data["title"] = __('Simple graph'); + $data["objdata"]["img"] = 'include/fgraph.php?tipo=sparse&id='.$content['id_agent_module'].'&height=230&width=720&period='.$content['period'].'&date='.$datetime.'&avg_only=1&pure=1'; + break; + case 2: + case 'custom_graph': + $graph = get_db_row ("tgraph", "id_graph", $content['id_gs']); + $data["title"] = __('Custom graph'); + $data["objdata"]["img_name"] = $graph["name"]; - if ($result === false) { - $result = array(); - } - - foreach ($result as $content2) { - array_push ($modules, $content2['id_agent_module']); - array_push ($weights, $content2["weight"]); - } - - $data["objdata"]["img"] = 'include/fgraph.php?tipo=combined&id='.implode (',', $modules).'&weight_l='.implode (',', $weights).'&height=230&width=720&period='.$content['period'].'&date='.$datetime.'&stacked='.$graph["stacked"].'&pure=1'; - break; - case 3: - case 'SLA': - $data["title"] = __('S.L.A.'); - - $slas = get_db_all_rows_field_filter ('treport_content_sla_combined','id_report_content', $content['id_rc']); - if ($slas === false) { - $data["objdata"]["error"] = __('There are no SLAs defined'); - $slas = array (); - } - - $data["objdata"]["sla"] = array (); - $sla_failed = false; - foreach ($slas as $sla) { - $sla_data = array (); - $sla_data["agent"] = get_agentmodule_agent_name ($sla['id_agent_module']); - $sla_data["module"] = get_agentmodule_name ($sla['id_agent_module']); - $sla_data["max"] = $sla['sla_max']; - $sla_data["min"] = $sla['sla_min']; - $sla_value = get_agentmodule_sla ($sla['id_agent_module'], $content['period'], $sla['sla_min'], $sla['sla_max'], $datetime); - if ($sla_value === false) { - $sla_data["error"] = __('Unknown'); - } else { - if ($sla_value < $sla['sla_limit']) { - $sla_data["failed"] = true; - } - $sla_data["value"] = format_numeric ($sla_value); + $result = get_db_all_rows_field_filter ("tgraph_source","id_graph",$content['id_gs']); + $modules = array (); + $weights = array (); + + if ($result === false) { + $result = array(); } - array_push ($data["objdata"]["sla"], $sla_data); - } - break; - case 4: - case 'event_report': - $data["title"] = __("Event report"); - $table_report = event_reporting ($report['id_group'], $content['period'], $datetime, true); - $data["objdata"] = ""; - break; - case 5: - case 'alert_report': - $data["title"] = __('Alert report'); - $data["objdata"] = ""; - break; - case 6: - case 'monitor_report': - $data["title"] = __('Monitor report'); - $monitor_value = format_numeric (get_agentmodule_sla ($content['id_agent_module'], $content['period'], 1, false, $datetime)); - $data["objdata"]["good"] = $monitor_value; - $data["objdata"]["bad"] = format_numeric (100 - $monitor_value, 2); - break; - case 7: - case 'avg_value': - $data["title"] = __('Avg. Value'); - $data["objdata"] = format_numeric (get_agentmodule_data_average ($content['id_agent_module'], $content['period'], $datetime)); - break; - case 8: - case 'max_value': - $data["title"] = __('Max. Value'); - $data["objdata"] = format_numeric (get_agentmodule_data_max ($content['id_agent_module'], $content['period'], $datetime)); - break; - case 9: - case 'min_value': - $data["title"] = __('Min. Value'); - $data["objdata"] = format_numeric (get_agentmodule_data_min ($content['id_agent_module'], $content['period'], $datetime)); - break; - case 10: - case 'sumatory': - $data["title"] = __('Sumatory'); - $data["objdata"] = format_numeric (get_agentmodule_data_sum ($content['id_agent_module'], $content['period'], $datetime)); - break; - case 11: - case 'general_group_report': - $data["title"] = __('Group'); - $data["objdata"] = ""; - break; - case 12: - case 'monitor_health': - $data["title"] = __('Monitor health'); - $data["objdata"] = ""; - break; - case 13: - case 'agents_detailed': - $data["title"] = __('Agents detailed view'); - $data["objdata"] = ""; - break; + + foreach ($result as $content2) { + array_push ($modules, $content2['id_agent_module']); + array_push ($weights, $content2["weight"]); + } + + $data["objdata"]["img"] = 'include/fgraph.php?tipo=combined&id='.implode (',', $modules).'&weight_l='.implode (',', $weights).'&height=230&width=720&period='.$content['period'].'&date='.$datetime.'&stacked='.$graph["stacked"].'&pure=1'; + break; + case 3: + case 'SLA': + $data["title"] = __('S.L.A.'); + + $slas = get_db_all_rows_field_filter ('treport_content_sla_combined','id_report_content', $content['id_rc']); + if ($slas === false) { + $data["objdata"]["error"] = __('There are no SLAs defined'); + $slas = array (); + } + + $data["objdata"]["sla"] = array (); + $sla_failed = false; + foreach ($slas as $sla) { + $sla_data = array (); + $sla_data["agent"] = get_agentmodule_agent_name ($sla['id_agent_module']); + $sla_data["module"] = get_agentmodule_name ($sla['id_agent_module']); + $sla_data["max"] = $sla['sla_max']; + $sla_data["min"] = $sla['sla_min']; + $sla_value = get_agentmodule_sla ($sla['id_agent_module'], $content['period'], $sla['sla_min'], $sla['sla_max'], $datetime); + if ($sla_value === false) { + $sla_data["error"] = __('Unknown'); + } else { + if ($sla_value < $sla['sla_limit']) { + $sla_data["failed"] = true; + } + $sla_data["value"] = format_numeric ($sla_value); + } + array_push ($data["objdata"]["sla"], $sla_data); + } + break; +// case 4: +// case 'event_report': +// $data["title"] = __("Event report"); +// $table_report = event_reporting ($report['id_group'], $content['period'], $datetime, true); +// $data["objdata"] = ""; +// break; +// case 5: +// case 'alert_report': +// $data["title"] = __('Alert report'); +// $data["objdata"] = ""; +// break; + case 6: + case 'monitor_report': + $data["title"] = __('Monitor report'); + $monitor_value = format_numeric (get_agentmodule_sla ($content['id_agent_module'], $content['period'], 1, false, $datetime)); + $data["objdata"]["good"] = $monitor_value; + $data["objdata"]["bad"] = format_numeric (100 - $monitor_value, 2); + break; + case 7: + case 'avg_value': + $data["title"] = __('Avg. Value'); + $data["objdata"] = format_numeric (get_agentmodule_data_average ($content['id_agent_module'], $content['period'], $datetime)); + break; + case 8: + case 'max_value': + $data["title"] = __('Max. Value'); + $data["objdata"] = format_numeric (get_agentmodule_data_max ($content['id_agent_module'], $content['period'], $datetime)); + break; + case 9: + case 'min_value': + $data["title"] = __('Min. Value'); + $data["objdata"] = format_numeric (get_agentmodule_data_min ($content['id_agent_module'], $content['period'], $datetime)); + break; + case 10: + case 'sumatory': + $data["title"] = __('Sumatory'); + $data["objdata"] = format_numeric (get_agentmodule_data_sum ($content['id_agent_module'], $content['period'], $datetime)); + break; +// case 11: +// case 'general_group_report': +// $data["title"] = __('Group'); +// $data["objdata"] = ""; +// break; +// case 12: +// case 'monitor_health': +// $data["title"] = __('Monitor health'); +// $data["objdata"] = ""; +// break; +// case 13: +// case 'agents_detailed': +// $data["title"] = __('Agents detailed view'); +// $data["objdata"] = ""; +// break; + case 'agent_detailed_event': + case 'event_report_agent': + $data["title"] = __('Agent detailed event'); + + $data["objdata"]["event_report_agent"] = array (); + + $date = get_system_time (); + + $events = get_agent_events ($content['id_agent'], $content['period'], $date ); + if (empty ($events)) { + $events = array (); + } + + foreach ($events as $event) { + $objdata = array (); + $objdata['event'] = $event['evento']; + $objdata['event_type'] = $event['event_type']; + $objdata['criticity'] = get_priority_name($event['criticity']); + $objdata['count'] = $event['count_rep']; + $objdata['timestamp'] = $event['time2']; + array_push ($data["objdata"]["event_report_agent"], $objdata); + } + break; + case 'text': + $data["title"] = __('Text'); + $data["objdata"] = ""; + break; + case 'sql': + $data["title"] = __('SQL'); + + //name tags of row + if ($content['header_definition'] != '') { + $tags = explode('|', $content['header_definition']); + } + + if ($content['treport_custom_sql_id'] != 0) { + $sql = get_db_value_filter('`sql`', 'treport_custom_sql', array('id' => $content['treport_custom_sql_id'])); + } + else { + $sql = $content['external_source']; + } + + $result = get_db_all_rows_sql($sql); + if ($result === false) { + $result = array(); + } + + if (isset($result[0])) { + for ($i = 0; $i < (count($result[0]) - count($tags)); $i) { + $tags[] = 'unname_' . $i; + } + } + + $data["objdata"]["data"] = array (); + + foreach ($result as $row) { + $objdata = array (); + $i = 0; + foreach ($row as $column) { + $objdata[$tags[$i]] = $column; + $i++; + } + array_push($data["objdata"]["data"], $objdata); + } + break; + case 'event_report_module': + $data["title"] = __('Agents detailed event'); + $data["objdata"]["event_report_module"] = array(); + + $events = get_module_detailed_event_reporting($content['id_agent_module'], $content['period'], $report["datetime"], true, false); + + foreach ($events->data as $eventRow) { + $objdata = array(); + $objdata['event_name'] = $eventRow[0]; + $objdata['event_type'] = $eventRow[1]; + $objdata['criticity'] = $eventRow[2]; + $objdata['count'] = $eventRow[3]; + $objdata['timestamp'] = $eventRow[4]; + + array_push($data["objdata"]["event_report_module"], $objdata); + } + break; + case 'alert_report_module': + $data["title"] = __('Alert report module'); + $data["objdata"]["alert_report_module"] = array(); + + $alerts = alert_reporting_module ($content['id_agent_module'], $content['period'], $report["datetime"], true, false); + + foreach ($alerts->data as $row) { + $objdata = array(); + + $actionsHtml = strip_tags($row[2], '
  • '); + $actions = explode('
  • ', $actionsHtml); + + $objdata['template'] = $row[1]; + + $objdata['action'] = array(); + foreach ($actions as $action) { + $actionText = strip_tags($action); + if ($actionText == '') { + continue; + } + $objdata['action'][] = $actionText; + } + + $firedHtml = strip_tags($row[3], '
  • '); + $fireds= explode('
  • ', $firedHtml); + + $objdata['fired'] = array(); + foreach ($fireds as $fired) { + $firedText = strip_tags($fired); + if ($firedText == '') { + continue; + } + $objdata['fired'][] = $firedText; + } + array_push($data["objdata"]["alert_report_module"], $objdata); + } + break; + case 'alert_report_agent': + $data["title"] = __('Alert report agent'); + + $alerts = alert_reporting_agent ($content['id_agent'], $content['period'], $report["datetime"], true, false); + $data["objdata"]["alert_report_agent"] = array(); + + foreach ($alerts->data as $row) { + $objdata = array(); + + $objdata['module'] = $row[0]; + $objdata['template'] = $row[1]; + + $actionsHtml = strip_tags($row[2], '
  • '); + $actions = explode('
  • ', $actionsHtml); + + $objdata['action'] = array(); + foreach ($actions as $action) { + $actionText = strip_tags($action); + if ($actionText == '') { + continue; + } + $objdata['action'][] = $actionText; + } + + $firedHtml = strip_tags($row[3], '
  • '); + $fireds= explode('
  • ', $firedHtml); + + $objdata['fired'] = array(); + foreach ($fireds as $fired) { + $firedText = strip_tags($fired); + if ($firedText == '') { + continue; + } + $objdata['fired'][] = $firedText; + } + + array_push($data["objdata"]["alert_report_agent"], $objdata); + } + break; + case 'url': + $data["title"] = __('Import text from URL'); + + $curlObj = curl_init(); + + curl_setopt($curlObj, CURLOPT_URL, $content['external_source']); + curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1); + $output = curl_exec($curlObj); + curl_close($curlObj); + + $data["objdata"] = $output; + break; + case 'database_serialized': + $data["title"] = __('Serialize data'); + + //Create the head + $tags = array(); + if ($content['header_definition'] != '') { + $tags = explode('|', $content['header_definition']); + } + array_unshift($tags, 'Date'); + + $datelimit = $report["datetime"] - $content['period']; + + $result = get_db_all_rows_sql('SELECT * + FROM tagente_datos_string + WHERE id_agente_modulo = ' . $content['id_agent_module'] . ' + AND utimestamp > ' . $datelimit . ' AND utimestamp <= ' . $report["datetime"]); + if ($result === false) { + $result = array(); + } + + $data["objdata"]["data"] = array (); + foreach ($result as $row) { + $date = date ($config["date_format"], $row['utimestamp']); + $serialized = $row['datos']; + $rowsUnserialize = explode($content['line_separator'], $serialized); + foreach ($rowsUnserialize as $rowUnser) { + $columnsUnserialize = explode($content['column_separator'], $rowUnser); + array_unshift($columnsUnserialize, $date); + + $objdata = array (); + $i = 0; + foreach ($columnsUnserialize as $column) { + $objdata[$tags[$i]] = $column; + $i++; + } + array_push($data["objdata"]["data"], $objdata); + } + } + break; + case 'TTRT': + $ttr = get_agentmodule_ttr ($content['id_agent_module'], $content['period'], $report["datetime"]); + if ($ttr != 0) $ttr = human_time_description_raw ($ttr); + + $data["title"] = __('TTRT'); + $data["objdata"] = format_numeric($ttr); + break; + case 'TTO': + $tto = get_agentmodule_tto ($content['id_agent_module'], $content['period'], $report["datetime"]); + if ($tto != 0) $tto = human_time_description_raw ($tto); + + $data["title"] = __('TTO'); + $data["objdata"] = format_numeric($tto); + break; + case 'MTBF': + $mtbf = get_agentmodule_mtbf ($content['id_agent_module'], $content['period'], $report["datetime"]); + if ($mtbf != 0) $mtbf = human_time_description_raw ($mtbf); + + $data["title"] = __('MTBF'); + $data["objdata"] = format_numeric($mtbf); + break; + case 'MTTR': + $mttr = get_agentmodule_mttr ($content['id_agent_module'], $content['period'], $report["datetime"]); + if ($mttr != 0) $mttr = human_time_description_raw ($mttr); + + $data["title"] = __('MTTR'); + $data["objdata"] = format_numeric($mttr); + break; } xml_array ($data); echo '';