2010-05-03 Miguel de Dios <miguel.dedios@artica.es>

* 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". 



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@2655 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
mdtrooper 2010-05-03 15:45:16 +00:00
parent 0014988481
commit 89f35e54b2
2 changed files with 366 additions and 117 deletions

View File

@ -1,3 +1,11 @@
2010-05-03 Miguel de Dios <miguel.dedios@artica.es>
* 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 <miguel.dedios@artica.es>
* include/functions_reporting.php: added the parameter "$html" in the

View File

@ -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&amp;id='.$content['id_agent_module'].'&amp;height=230&amp;width=720&amp;period='.$content['period'].'&amp;date='.$datetime.'&amp;avg_only=1&amp;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&amp;id='.$content['id_agent_module'].'&amp;height=230&amp;width=720&amp;period='.$content['period'].'&amp;date='.$datetime.'&amp;avg_only=1&amp;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&amp;id='.implode (',', $modules).'&amp;weight_l='.implode (',', $weights).'&amp;height=230&amp;width=720&amp;period='.$content['period'].'&amp;date='.$datetime.'&amp;stacked='.$graph["stacked"].'&amp;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"] = "<![CDATA[";
$data["objdata"] .= print_table ($table_report, true);
$data["objdata"] .= "]]>";
break;
case 5:
case 'alert_report':
$data["title"] = __('Alert report');
$data["objdata"] = "<![CDATA[";
$data["objdata"] .= alert_reporting ($report['id_group'], $content['period'], $datetime, true);
$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"] = "<![CDATA[";
$data["objdata"] .= print_group_reporting ($report['id_group'], true);
$data["objdata"] .= "]]>";
break;
case 12:
case 'monitor_health':
$data["title"] = __('Monitor health');
$data["objdata"] = "<![CDATA[";
$data["objdata"] .= monitor_health_reporting ($report['id_group'], $content['period'], $datetime, true);
$data["objdata"] .= "]]>";
break;
case 13:
case 'agents_detailed':
$data["title"] = __('Agents detailed view');
$data["objdata"] = "<![CDATA[";
$data["objdata"] .= get_group_agents_detailed_reporting ($report['id_group'], $content['period'], $datetime, true);
$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&amp;id='.implode (',', $modules).'&amp;weight_l='.implode (',', $weights).'&amp;height=230&amp;width=720&amp;period='.$content['period'].'&amp;date='.$datetime.'&amp;stacked='.$graph["stacked"].'&amp;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"] = "<![CDATA[";
// $data["objdata"] .= print_table ($table_report, true);
// $data["objdata"] .= "]]>";
// break;
// case 5:
// case 'alert_report':
// $data["title"] = __('Alert report');
// $data["objdata"] = "<![CDATA[";
// $data["objdata"] .= alert_reporting ($report['id_group'], $content['period'], $datetime, true);
// $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"] = "<![CDATA[";
// $data["objdata"] .= print_group_reporting ($report['id_group'], true);
// $data["objdata"] .= "]]>";
// break;
// case 12:
// case 'monitor_health':
// $data["title"] = __('Monitor health');
// $data["objdata"] = "<![CDATA[";
// $data["objdata"] .= monitor_health_reporting ($report['id_group'], $content['period'], $datetime, true);
// $data["objdata"] .= "]]>";
// break;
// case 13:
// case 'agents_detailed':
// $data["title"] = __('Agents detailed view');
// $data["objdata"] = "<![CDATA[";
// $data["objdata"] .= get_group_agents_detailed_reporting ($report['id_group'], $content['period'], $datetime, true);
// $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"] = "<![CDATA[";
$data["objdata"] .= safe_output($content["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], '<li>');
$actions = explode('</li>', $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], '<li>');
$fireds= explode('</li>', $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], '<li>');
$actions = explode('</li>', $actionsHtml);
$objdata['action'] = array();
foreach ($actions as $action) {
$actionText = strip_tags($action);
if ($actionText == '') {
continue;
}
$objdata['action'][] = $actionText;
}
$firedHtml = strip_tags($row[3], '<li>');
$fireds= explode('</li>', $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 '</object>';