mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-29 08:45:12 +02:00
convert histogram in SLA + warning pandora_enterprise#9720
This commit is contained in:
parent
9881cd82fc
commit
9cfdcc765c
@ -15096,10 +15096,24 @@ function reporting_module_histogram_graph($report, $content, $pdf=0)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$uncompress_module = db_uncompress_module_data(
|
$module_interval = modules_get_interval(
|
||||||
|
$content['id_agent_module']
|
||||||
|
);
|
||||||
|
$slice = ($content['period'] / $module_interval);
|
||||||
|
|
||||||
|
$result_sla = reporting_advanced_sla(
|
||||||
$content['id_agent_module'],
|
$content['id_agent_module'],
|
||||||
($report['datetime'] - $content['period']),
|
($report['datetime'] - $content['period']),
|
||||||
$report['datetime']
|
$report['datetime'],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
0,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
$slice,
|
||||||
|
1,
|
||||||
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
// Select Warning and critical values.
|
// Select Warning and critical values.
|
||||||
@ -15148,114 +15162,92 @@ function reporting_module_histogram_graph($report, $content, $pdf=0)
|
|||||||
|
|
||||||
$inverse_warning = $agentmodule_info['warning_inverse'];
|
$inverse_warning = $agentmodule_info['warning_inverse'];
|
||||||
|
|
||||||
// Initialize vars.
|
$data = [];
|
||||||
$tstart = 0;
|
$data['time_total'] = 0;
|
||||||
$tend = 0;
|
$data['time_ok'] = 0;
|
||||||
$tacum = 0;
|
$data['time_error'] = 0;
|
||||||
$tacum_data = 0;
|
$data['time_warning'] = 0;
|
||||||
|
$data['time_unknown'] = 0;
|
||||||
|
$data['time_not_init'] = 0;
|
||||||
|
$data['time_downtime'] = 0;
|
||||||
|
$data['checks_total'] = 0;
|
||||||
|
$data['checks_ok'] = 0;
|
||||||
|
$data['checks_error'] = 0;
|
||||||
|
$data['checks_unknown'] = 0;
|
||||||
|
$data['checks_not_init'] = 0;
|
||||||
|
|
||||||
$array_graph = [];
|
$array_graph = [];
|
||||||
|
$i = 0;
|
||||||
|
foreach ($result_sla as $value_sla) {
|
||||||
|
$data['time_total'] += $value_sla['time_total'];
|
||||||
|
$data['time_ok'] += $value_sla['time_ok'];
|
||||||
|
$data['time_error'] += $value_sla['time_error'];
|
||||||
|
$data['time_warning'] += $value_sla['time_warning'];
|
||||||
|
$data['time_unknown'] += $value_sla['time_unknown'];
|
||||||
|
$data['time_downtime'] += $value_sla['time_downtime'];
|
||||||
|
$data['time_not_init'] += $value_sla['time_not_init'];
|
||||||
|
$data['checks_total'] += $value_sla['checks_total'];
|
||||||
|
$data['checks_ok'] += $value_sla['checks_ok'];
|
||||||
|
$data['checks_error'] += $value_sla['checks_error'];
|
||||||
|
$data['checks_warning'] += $value_sla['checks_warning'];
|
||||||
|
$data['checks_unknown'] += $value_sla['checks_unknown'];
|
||||||
|
$data['checks_not_init'] += $value_sla['checks_not_init'];
|
||||||
|
|
||||||
$data_not_init = 0;
|
// Generate raw data for graph.
|
||||||
$data_unknown = 0;
|
if ($value_sla['time_total'] != 0) {
|
||||||
$data_critical = 0;
|
if ($value_sla['time_error'] > 0) {
|
||||||
$data_warning = 0;
|
// ERR.
|
||||||
$data_ok = 0;
|
$array_graph[$i]['data'] = 3;
|
||||||
$data_total = 0;
|
} else if ($value_sla['time_warning'] > 0) {
|
||||||
|
// Warning.
|
||||||
$time_not_init = 0;
|
$array_graph[$i]['data'] = 2;
|
||||||
$time_unknown = 0;
|
} else if ($value_sla['time_unknown'] > 0) {
|
||||||
$time_critical = 0;
|
// UNKNOWN.
|
||||||
$time_warning = 0;
|
$array_graph[$i]['data'] = 4;
|
||||||
$time_ok = 0;
|
} else if ($value_sla['time_not_init'] == $value_sla['time_total']
|
||||||
|
) {
|
||||||
$legend = [];
|
// NOT INIT.
|
||||||
foreach ($uncompress_module as $data) {
|
$array_graph[$i]['data'] = 6;
|
||||||
foreach ($data['data'] as $key => $value) {
|
|
||||||
if ($tacum == 0) {
|
|
||||||
// Initialize the accumulators.
|
|
||||||
$tacum = $value['utimestamp'];
|
|
||||||
$tacum_data = $value['datos'];
|
|
||||||
} else {
|
} else {
|
||||||
// Utimestand end and final.
|
$array_graph[$i]['data'] = 1;
|
||||||
$tstart = $tacum;
|
}
|
||||||
$tend = $value['utimestamp'];
|
} else {
|
||||||
|
$array_graph[$i]['data'] = 7;
|
||||||
|
}
|
||||||
|
|
||||||
// Module type isn't string.
|
$array_graph[$i]['utimestamp'] = (
|
||||||
$sla_check_value_critical = sla_check_value(
|
$value_sla['date_to'] - $value_sla['date_from']);
|
||||||
$tacum_data,
|
|
||||||
$min_value_critical,
|
|
||||||
$max_value_critical,
|
|
||||||
$inverse_critical
|
|
||||||
);
|
|
||||||
$sla_check_value_warning = sla_check_value(
|
|
||||||
$tacum_data,
|
|
||||||
$min_value_warning,
|
|
||||||
$max_value_warning,
|
|
||||||
$inverse_warning
|
|
||||||
);
|
|
||||||
|
|
||||||
// Module type is string.
|
if (isset($planned_downtimes)) {
|
||||||
$string_check_value_critical = preg_match('/'.$max_value_critical.'/', $tacum_data);
|
foreach ($planned_downtimes as $pd) {
|
||||||
$string_check_value_warning = preg_match('/'.$max_value_warning.'/', $tacum_data);
|
if (($value_sla['date_from'] >= $pd['date_from'])
|
||||||
|
&& ($value_sla['date_to'] <= $pd['date_to'])
|
||||||
if ($inverse_critical) {
|
|
||||||
$string_check_value_critical = !preg_match('/'.$max_value_critical.'/', $tacum_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($string_check_value_warning) {
|
|
||||||
$string_check_value_warning = !preg_match('/'.$max_value_warning.'/', $tacum_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Contruct array period and data.
|
|
||||||
if ($tacum_data === false) {
|
|
||||||
$array_graph[$data_total]['data'] = AGENT_MODULE_STATUS_NOT_INIT;
|
|
||||||
// NOT INIT.
|
|
||||||
$time_not_init = ($time_not_init + ($tend - $tstart));
|
|
||||||
$data_not_init++;
|
|
||||||
} else if ($tacum_data === null) {
|
|
||||||
$array_graph[$data_total]['data'] = AGENT_MODULE_STATUS_UNKNOWN;
|
|
||||||
// UNKNOWN.
|
|
||||||
$time_unknown = ($time_unknown + ($tend - $tstart));
|
|
||||||
$data_unknown++;
|
|
||||||
} else if (( (isset($min_value_critical) || isset($max_value_critical)) && ($modules_is_string === false) && ($sla_check_value_critical == true) )
|
|
||||||
|| ( isset($max_value_critical) && ($modules_is_string === true) && $string_check_value_critical )
|
|
||||||
) {
|
) {
|
||||||
$array_graph[$data_total]['data'] = AGENT_MODULE_STATUS_CRITICAL_BAD;
|
$array_graph[$i]['data'] = 5;
|
||||||
// CRITICAL.
|
// In scheduled downtime.
|
||||||
$time_critical = ($time_critical + ($tend - $tstart));
|
break;
|
||||||
$data_critical++;
|
|
||||||
} else if (( (isset($min_value_warning) || isset($max_value_warning)) && ($modules_is_string === false) && ($sla_check_value_warning == true) )
|
|
||||||
|| ( isset($max_value_warning) && ($modules_is_string === true) && $sla_check_value_warning )
|
|
||||||
) {
|
|
||||||
$array_graph[$data_total]['data'] = AGENT_MODULE_STATUS_WARNING;
|
|
||||||
// WARNING.
|
|
||||||
$time_warning = ($time_warning + ($tend - $tstart));
|
|
||||||
$data_warning++;
|
|
||||||
} else {
|
|
||||||
$array_graph[$data_total]['data'] = AGENT_MODULE_STATUS_NORMAL;
|
|
||||||
// OK.
|
|
||||||
$time_ok = ($time_ok + ($tend - $tstart));
|
|
||||||
$data_ok++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$array_graph[$data_total]['utimestamp'] = ($tend - $tstart);
|
|
||||||
$array_graph[$data_total]['real_data'] = $tacum_data;
|
|
||||||
|
|
||||||
// Reassign accumulators.
|
|
||||||
$tacum = $value['utimestamp'];
|
|
||||||
$tacum_data = $value['datos'];
|
|
||||||
$data_total++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$data['sla_value'] = reporting_sla_get_compliance_from_array(
|
||||||
|
$data
|
||||||
|
);
|
||||||
|
|
||||||
|
$data['sla_fixed'] = sla_truncate(
|
||||||
|
$data['sla_value'],
|
||||||
|
$config['graph_precision']
|
||||||
|
);
|
||||||
|
|
||||||
$data_init = -1;
|
$data_init = -1;
|
||||||
$acum = 0;
|
$acum = 0;
|
||||||
$sum = 0;
|
$sum = 0;
|
||||||
$array_result = [];
|
$array_result = [];
|
||||||
$i = 0;
|
$i = 0;
|
||||||
foreach ($array_graph as $key => $value) {
|
foreach ($array_graph as $value) {
|
||||||
if ($data_init == -1) {
|
if ($data_init == -1) {
|
||||||
$data_init = $value['data'];
|
$data_init = $value['data'];
|
||||||
$acum = $value['utimestamp'];
|
$acum = $value['utimestamp'];
|
||||||
@ -15287,39 +15279,42 @@ function reporting_module_histogram_graph($report, $content, $pdf=0)
|
|||||||
$array_result[$i]['real_data'] = $sum;
|
$array_result[$i]['real_data'] = $sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
$time_total = ($time_not_init + $time_unknown + $time_critical + $time_warning + $time_ok);
|
$time_total = $data['time_total'];
|
||||||
// Slice graphs calculation.
|
// Slice graphs calculation.
|
||||||
$return['agent'] = modules_get_agentmodule_agent_alias(
|
$return['agent'] = modules_get_agentmodule_agent_alias(
|
||||||
$content['id_agent_module']
|
$content['id_agent_module']
|
||||||
);
|
);
|
||||||
$return['module'] = modules_get_agentmodule_name(
|
$return['module'] = modules_get_agentmodule_name(
|
||||||
$content['id_agent_module']
|
$content['id_agent_module']
|
||||||
);
|
);
|
||||||
$return['max_critical'] = $max_value_critical;
|
|
||||||
$return['min_critical'] = $min_value_critical;
|
$return['max_critical'] = $max_value_critical;
|
||||||
|
$return['min_critical'] = $min_value_critical;
|
||||||
$return['critical_inverse'] = $inverse_critical;
|
$return['critical_inverse'] = $inverse_critical;
|
||||||
$return['max_warning'] = $max_value_warning;
|
$return['max_warning'] = $max_value_warning;
|
||||||
$return['min_warning'] = $min_value_warning;
|
$return['min_warning'] = $min_value_warning;
|
||||||
$return['warning_inverse'] = $inverse_warning;
|
$return['warning_inverse'] = $inverse_warning;
|
||||||
$return['data_not_init'] = $data_not_init;
|
$return['data_not_init'] = $data['checks_not_init'];
|
||||||
$return['data_unknown'] = $data_unknown;
|
$return['data_unknown'] = $data['checks_unknown'];
|
||||||
$return['data_critical'] = $data_critical;
|
$return['data_critical'] = $data['checks_error'];
|
||||||
$return['data_warning'] = $data_warning;
|
$return['data_warning'] = $data['checks_warning'];
|
||||||
$return['data_ok'] = $data_ok;
|
$return['data_ok'] = $data['checks_ok'];
|
||||||
$return['data_total'] = $data_total;
|
$return['data_total'] = $data['checks_total'];
|
||||||
$return['time_not_init'] = $time_not_init;
|
$return['time_not_init'] = $data['time_not_init'];
|
||||||
$return['time_unknown'] = $time_unknown;
|
$return['time_unknown'] = $data['time_unknown'];
|
||||||
$return['time_critical'] = $time_critical;
|
$return['time_critical'] = $data['time_error'];
|
||||||
$return['time_warning'] = $time_warning;
|
$return['time_warning'] = $data['time_warning'];
|
||||||
$return['time_ok'] = $time_ok;
|
$return['time_ok'] = $data['time_ok'];
|
||||||
$return['percent_ok'] = (($data_ok * 100) / $data_total);
|
$return['percent_ok'] = (($data['checks_ok'] * 100) / $data['checks_total']);
|
||||||
|
|
||||||
$colors = [
|
$colors = [
|
||||||
AGENT_MODULE_STATUS_NORMAL => COL_NORMAL,
|
1 => COL_NORMAL,
|
||||||
AGENT_MODULE_STATUS_WARNING => COL_WARNING,
|
2 => COL_WARNING,
|
||||||
AGENT_MODULE_STATUS_CRITICAL_BAD => COL_CRITICAL,
|
3 => COL_CRITICAL,
|
||||||
AGENT_MODULE_STATUS_UNKNOWN => COL_UNKNOWN,
|
4 => COL_UNKNOWN,
|
||||||
AGENT_MODULE_STATUS_NOT_INIT => COL_NOTINIT,
|
5 => COL_DOWNTIME,
|
||||||
|
6 => COL_NOTINIT,
|
||||||
|
7 => COL_IGNORED,
|
||||||
];
|
];
|
||||||
|
|
||||||
$width_graph = 100;
|
$width_graph = 100;
|
||||||
@ -15329,7 +15324,7 @@ function reporting_module_histogram_graph($report, $content, $pdf=0)
|
|||||||
$time_total,
|
$time_total,
|
||||||
$width_graph,
|
$width_graph,
|
||||||
$height_graph,
|
$height_graph,
|
||||||
$legend,
|
[],
|
||||||
$colors,
|
$colors,
|
||||||
$config['fontpath'],
|
$config['fontpath'],
|
||||||
$config['round_corner'],
|
$config['round_corner'],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user