Added nt top N HTML report

Former-commit-id: b9151e9eb32f6da305cb9b061746ecbe7c8cb763
This commit is contained in:
fermin831 2019-01-29 15:47:20 +01:00
parent 775ebfe1d2
commit d7b25fa65d
2 changed files with 95 additions and 0 deletions

View File

@ -675,6 +675,12 @@ function reporting_make_reporting_data($report = null, $id_report,
$content,
$pdf);
break;
case 'nt_top_n':
$report['contents'][] = reporting_nt_top_n_report(
$report,
$content,
$pdf);
break;
}
$index_content++;
}
@ -10518,4 +10524,36 @@ function reporting_translate_sla_status_for_graph ($status) {
);
return $sts[$status];
}
/**
* Build the required data to build network traffic top N report
*
* @param int Period (time window).
* @param array Information about the item of report.
* @param bool Pdf or not
*
* @return array With report presentation info and report data.
*/
function reporting_nt_top_n_report ($period, $content, $pdf) {
$return['type'] = 'nt_top_n';
$return['title'] = $content["name"];
$return["description"] = $content["description"];
// Get the data sent and received
$return["data"] = array();
$start_time = $period['datetime'] - (int)$content['period'];
$sql = "SELECT SUM(bytes) sum_bytes, SUM(pkts) sum_pkts, %s host
FROM tnetwork_matrix
WHERE utimestamp > {$start_time} AND utimestamp < {$period['datetime']}
GROUP BY %s
ORDER BY sum_bytes DESC
LIMIT {$content['top_n_value']}";
$return["data"]["send"] = db_get_all_rows_sql(
sprintf($sql, "source", "source")
);
$return["data"]["recv"] = db_get_all_rows_sql(
sprintf($sql, "destination", "destination")
);
return $return;
}
?>

View File

@ -319,6 +319,9 @@ function reporting_html_print_report($report, $mini = false, $report_info = 1) {
case 'SLA':
reporting_html_SLA($table, $item, $mini);
break;
case 'nt_top_n':
reporting_html_nt_top_n($table, $item, $mini);
break;
case 'SLA_monthly':
reporting_enterprise_html_SLA_monthly($table, $item, $mini);
break;
@ -3922,4 +3925,58 @@ function reporting_html_planned_downtimes_table ($planned_downtimes) {
return $downtimes_table;
}
/**
* Print network traffic data into top n tables
* (one for received data and another for sent)
*
* @param stdClass Table class to paint the report
* @param array Associative array with info about
* @param bool Unused
*/
function reporting_html_nt_top_n ($table, $item, $mini) {
// Prepare the table
$table_top = new stdClass();
$table_top->cellpadding = 0;
$table_top->cellspacing = 0;
$table_top->width = "100%";
$table_top->class = "databox data";
$table_top->cellpadding = 0;
$table_top->cellspacing = 0;
$table_top->width = "100%";
$table_top->class = "databox data";
$table_top->head['host'] = __('Agent');
$table_top->head['bytes'] = __('Bytes');
$table_top->head['pkts'] = __('Packages');
// Build the table for sent packages
if (empty($item["data"]["send"])) {
$table->data["send_title"] = "<h3>" . __("No network traffic sent data") . "</h3>";
} else {
foreach ($item["data"]["send"] as $s_item) {
$table_top->data[] = array(
'host' => $s_item["host"],
'bytes' => $s_item["sum_bytes"],
'pkts' => $s_item["sum_pkts"]
);
}
$table->data["send"] = html_print_table($table_top, true);
}
// Reset the table and build the table for received packages
$table_top->data = array();
if (empty($item["data"]["send"])) {
$table->data["recv_title"] = "<h3>" . __("No network traffic received data") . "</h3>";
} else {
foreach ($item["data"]["recv"] as $s_item) {
$table_top->data[] = array(
'host' => $s_item["host"],
'bytes' => $s_item["sum_bytes"],
'pkts' => $s_item["sum_pkts"]
);
}
$table->data["recv_title"] = "<h3>" . __("Network traffic received") . "</h3>";
$table->data["recv"] = html_print_table($table_top, true);
}
}
?>