diff --git a/pandora_console/include/functions_modules.php b/pandora_console/include/functions_modules.php index 410cc036f7..07690151e4 100755 --- a/pandora_console/include/functions_modules.php +++ b/pandora_console/include/functions_modules.php @@ -4784,6 +4784,7 @@ function service_level_module_data($datetime_from, $datetime_to, $id_agentmodule $data['availability'] = false; $availability = 0; + $type = ''; $uncompressed_data = db_uncompress_module_data( $id_agentmodule, @@ -4796,6 +4797,10 @@ function service_level_module_data($datetime_from, $datetime_to, $id_agentmodule foreach ($data_module['data'] as $subdata) { if (!empty($subdata['datos'])) { $first_utimestamp = $subdata['utimestamp']; + if (isset($subdata['type'])) { + $type = $subdata['type']; + } + break; } } @@ -4862,8 +4867,19 @@ function service_level_module_data($datetime_from, $datetime_to, $id_agentmodule } // hd($availability, true); - $mtbf = round(( $total_time_failed / count($mtbf_array))); - $mtrs = round((array_sum($mtrs_array) / count($mtrs_array))); + if (count($mtbf_array) > 1) { + $mtbf = round(( $total_time_failed / count($mtbf_array))); + } else { + $mtbf = false; + } + + if (count($mtrs_array) === 1 && (string) $first_utimestamp !== '0' && $type === 0) { + $mtrs = round($total_time_failed / count($mtrs_array)); + } else if (count($mtrs_array) > 1 && (string) $first_utimestamp !== '0') { + $mtrs = round((array_sum($mtrs_array) / count($mtrs_array))); + } else { + $mtrs = false; + } $data['mtbf'] = $mtbf; $data['mtrs'] = $mtrs; diff --git a/pandora_console/include/lib/Dashboard/Widgets/service_level.php b/pandora_console/include/lib/Dashboard/Widgets/service_level.php index 2d570685b7..5758e99cec 100644 --- a/pandora_console/include/lib/Dashboard/Widgets/service_level.php +++ b/pandora_console/include/lib/Dashboard/Widgets/service_level.php @@ -1,10 +1,10 @@ name()]['mtrs'] = human_milliseconds_to_string(($module_data['mtrs'] * 100), 'short'); - $visualData[$agent_id]['modules'][$module->name()]['mtbf'] = human_milliseconds_to_string(($module_data['mtbf'] * 100), 'short'); - $visualData[$agent_id]['modules'][$module->name()]['availability'] = $module_data['availability']; - } else { - $visualData[$agent_id]['modules'][$module->name()]['mtrs'] = '-'; - $visualData[$agent_id]['modules'][$module->name()]['mtbf'] = '-'; - $visualData[$agent_id]['modules'][$module->name()]['availability'] = '100'; - } - + $visualData[$agent_id]['modules'][$module->name()]['mtrs'] = ($module_data['mtrs'] !== false) ? human_milliseconds_to_string(($module_data['mtrs'] * 100), 'short') : '-'; + $visualData[$agent_id]['modules'][$module->name()]['mtbf'] = ($module_data['mtbf'] !== false) ? human_milliseconds_to_string(($module_data['mtbf'] * 100), 'short') : '-'; + $visualData[$agent_id]['modules'][$module->name()]['availability'] = ($module_data['availability'] !== false) ? $module_data['availability'] : '100'; // Count events. $sql = 'SELECT COUNT(*) as critical_events FROM tevento WHERE id_agentmodule= '.$data_module_array['id_agente_modulo'].'