From b84bef854743210427b7bd271d062c5e60af8f7b Mon Sep 17 00:00:00 2001 From: Alejandro Gallardo Escobar Date: Thu, 12 Mar 2015 15:05:54 +0100 Subject: [PATCH] Fixes on the agent and monitor counter functions --- pandora_console/include/functions_groups.php | 102 +++++++++++++------ pandora_console/include/functions_tags.php | 94 ++++++++++++----- 2 files changed, 135 insertions(+), 61 deletions(-) diff --git a/pandora_console/include/functions_groups.php b/pandora_console/include/functions_groups.php index ac0aa4e541..f8a5728539 100644 --- a/pandora_console/include/functions_groups.php +++ b/pandora_console/include/functions_groups.php @@ -1206,6 +1206,7 @@ function groups_get_agents_counter ($group, $agent_filter = array(), $module_fil $module_name_filter = ""; $module_status_filter = ""; + $module_status_array = array(); if (!empty($module_filter)) { // IMPORTANT: The module filters will force the realtime search $realtime = true; @@ -1222,48 +1223,47 @@ function groups_get_agents_counter ($group, $agent_filter = array(), $module_fil else $module_status = array($module_status); - $status_array = ""; foreach ($module_status as $status) { switch ($status) { case AGENT_MODULE_STATUS_ALL: - $status_array[] = AGENT_MODULE_STATUS_CRITICAL_ALERT; - $status_array[] = AGENT_MODULE_STATUS_CRITICAL_BAD; - $status_array[] = AGENT_MODULE_STATUS_WARNING_ALERT; - $status_array[] = AGENT_MODULE_STATUS_WARNING; - $status_array[] = AGENT_MODULE_STATUS_UNKNOWN; - $status_array[] = AGENT_MODULE_STATUS_NO_DATA; - $status_array[] = AGENT_MODULE_STATUS_NOT_INIT; - $status_array[] = AGENT_MODULE_STATUS_NORMAL_ALERT; - $status_array[] = AGENT_MODULE_STATUS_NORMAL; + $module_status_array[] = AGENT_MODULE_STATUS_CRITICAL_ALERT; + $module_status_array[] = AGENT_MODULE_STATUS_CRITICAL_BAD; + $module_status_array[] = AGENT_MODULE_STATUS_WARNING_ALERT; + $module_status_array[] = AGENT_MODULE_STATUS_WARNING; + $module_status_array[] = AGENT_MODULE_STATUS_UNKNOWN; + $module_status_array[] = AGENT_MODULE_STATUS_NO_DATA; + $module_status_array[] = AGENT_MODULE_STATUS_NOT_INIT; + $module_status_array[] = AGENT_MODULE_STATUS_NORMAL_ALERT; + $module_status_array[] = AGENT_MODULE_STATUS_NORMAL; break; case AGENT_MODULE_STATUS_CRITICAL_ALERT: case AGENT_MODULE_STATUS_CRITICAL_BAD: - $status_array[] = AGENT_MODULE_STATUS_CRITICAL_ALERT; - $status_array[] = AGENT_MODULE_STATUS_CRITICAL_BAD; + $module_status_array[] = AGENT_MODULE_STATUS_CRITICAL_ALERT; + $module_status_array[] = AGENT_MODULE_STATUS_CRITICAL_BAD; break; case AGENT_MODULE_STATUS_WARNING_ALERT: case AGENT_MODULE_STATUS_WARNING: - $status_array[] = AGENT_MODULE_STATUS_WARNING_ALERT; - $status_array[] = AGENT_MODULE_STATUS_WARNING; + $module_status_array[] = AGENT_MODULE_STATUS_WARNING_ALERT; + $module_status_array[] = AGENT_MODULE_STATUS_WARNING; break; case AGENT_MODULE_STATUS_UNKNOWN: - $status_array[] = AGENT_MODULE_STATUS_UNKNOWN; + $module_status_array[] = AGENT_MODULE_STATUS_UNKNOWN; break; case AGENT_MODULE_STATUS_NO_DATA: case AGENT_MODULE_STATUS_NOT_INIT: - $status_array[] = AGENT_MODULE_STATUS_NO_DATA; - $status_array[] = AGENT_MODULE_STATUS_NOT_INIT; + $module_status_array[] = AGENT_MODULE_STATUS_NO_DATA; + $module_status_array[] = AGENT_MODULE_STATUS_NOT_INIT; break; case AGENT_MODULE_STATUS_NORMAL_ALERT: case AGENT_MODULE_STATUS_NORMAL: - $status_array[] = AGENT_MODULE_STATUS_NORMAL_ALERT; - $status_array[] = AGENT_MODULE_STATUS_NORMAL; + $module_status_array[] = AGENT_MODULE_STATUS_NORMAL_ALERT; + $module_status_array[] = AGENT_MODULE_STATUS_NORMAL; break; } } - if (!empty($status_array)) { - $status_array = array_unique($status_array); - $status_str = implode(",", $status_array); + if (!empty($module_status_array)) { + $module_status_array = array_unique($module_status_array); + $status_str = implode(",", $module_status_array); $module_status_filter = "INNER JOIN tagente_estado AS tae ON tam.id_agente_modulo = tae.id_agente_modulo @@ -1296,12 +1296,48 @@ function groups_get_agents_counter ($group, $agent_filter = array(), $module_fil foreach ($agents as $agent) { $agent_filter["id"] = $agent["id"]; - $total = (int) groups_get_total_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); - $critical = (int) groups_get_critical_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); - $warning = (int) groups_get_warning_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); - $unknown = (int) groups_get_unknown_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); - $not_init = (int) groups_get_not_init_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); - $normal = (int) groups_get_normal_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); + + $total = 0; + $critical = 0; + $warning = 0; + $unknown = 0; + $not_init = 0; + $normal = 0; + if (empty($module_status_array)) { + $total = (int) groups_get_total_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); + $critical = (int) groups_get_critical_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); + $warning = (int) groups_get_warning_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); + $unknown = (int) groups_get_unknown_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); + $not_init = (int) groups_get_not_init_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); + $normal = (int) groups_get_normal_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); + } + else { + foreach ($module_status_array as $status) { + switch ($status) { + case AGENT_MODULE_STATUS_CRITICAL_ALERT: + case AGENT_MODULE_STATUS_CRITICAL_BAD: + $critical = (int) groups_get_critical_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); + break; + case AGENT_MODULE_STATUS_WARNING_ALERT: + case AGENT_MODULE_STATUS_WARNING: + $warning = (int) groups_get_warning_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); + break; + case AGENT_MODULE_STATUS_UNKNOWN: + $unknown = (int) groups_get_unknown_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); + break; + case AGENT_MODULE_STATUS_NO_DATA: + case AGENT_MODULE_STATUS_NOT_INIT: + $not_init = (int) groups_get_not_init_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); + break; + case AGENT_MODULE_STATUS_NORMAL_ALERT: + case AGENT_MODULE_STATUS_NORMAL: + $normal = (int) groups_get_normal_monitors ($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime); + break; + } + } + + $total = $critical + $warning + $unknown + $not_init + $normal; + } if (!is_array($agent_status)) { switch ($agent_status) { @@ -1722,22 +1758,22 @@ function groups_get_monitors_counter ($group, $agent_filter = array(), $module_f switch ($status) { case AGENT_MODULE_STATUS_CRITICAL_ALERT: case AGENT_MODULE_STATUS_CRITICAL_BAD: - $status_columns_array = 'ta.critical_count'; + $status_columns_array[] = 'ta.critical_count'; break; case AGENT_MODULE_STATUS_WARNING_ALERT: case AGENT_MODULE_STATUS_WARNING: - $status_columns_array = 'ta.warning_count'; + $status_columns_array[] = 'ta.warning_count'; break; case AGENT_MODULE_STATUS_UNKNOWN: - $status_columns_array = 'ta.unknown_count'; + $status_columns_array[] = 'ta.unknown_count'; break; case AGENT_MODULE_STATUS_NO_DATA: case AGENT_MODULE_STATUS_NOT_INIT: - $status_columns_array = 'ta.notinit_count'; + $status_columns_array[] = 'ta.notinit_count'; break; case AGENT_MODULE_STATUS_NORMAL_ALERT: case AGENT_MODULE_STATUS_NORMAL: - $status_columns_array = 'ta.normal_count'; + $status_columns_array[] = 'ta.normal_count'; break; default: // The type doesn't exist diff --git a/pandora_console/include/functions_tags.php b/pandora_console/include/functions_tags.php index 6ac6476654..a7e10894be 100644 --- a/pandora_console/include/functions_tags.php +++ b/pandora_console/include/functions_tags.php @@ -1327,6 +1327,7 @@ function tags_get_agents_counter ($id_tag, $groups_and_tags = array(), $agent_fi $module_name_filter = ""; $module_status_filter = ""; + $module_status_array = array(); if (!empty($module_filter)) { // IMPORTANT: The module filters will force the realtime search $realtime = true; @@ -1343,48 +1344,47 @@ function tags_get_agents_counter ($id_tag, $groups_and_tags = array(), $agent_fi else $module_status = array($module_status); - $status_array = ""; foreach ($module_status as $status) { switch ($status) { case AGENT_MODULE_STATUS_ALL: - $status_array[] = AGENT_MODULE_STATUS_CRITICAL_ALERT; - $status_array[] = AGENT_MODULE_STATUS_CRITICAL_BAD; - $status_array[] = AGENT_MODULE_STATUS_WARNING_ALERT; - $status_array[] = AGENT_MODULE_STATUS_WARNING; - $status_array[] = AGENT_MODULE_STATUS_UNKNOWN; - $status_array[] = AGENT_MODULE_STATUS_NO_DATA; - $status_array[] = AGENT_MODULE_STATUS_NOT_INIT; - $status_array[] = AGENT_MODULE_STATUS_NORMAL_ALERT; - $status_array[] = AGENT_MODULE_STATUS_NORMAL; + $module_status_array[] = AGENT_MODULE_STATUS_CRITICAL_ALERT; + $module_status_array[] = AGENT_MODULE_STATUS_CRITICAL_BAD; + $module_status_array[] = AGENT_MODULE_STATUS_WARNING_ALERT; + $module_status_array[] = AGENT_MODULE_STATUS_WARNING; + $module_status_array[] = AGENT_MODULE_STATUS_UNKNOWN; + $module_status_array[] = AGENT_MODULE_STATUS_NO_DATA; + $module_status_array[] = AGENT_MODULE_STATUS_NOT_INIT; + $module_status_array[] = AGENT_MODULE_STATUS_NORMAL_ALERT; + $module_status_array[] = AGENT_MODULE_STATUS_NORMAL; break; case AGENT_MODULE_STATUS_CRITICAL_ALERT: case AGENT_MODULE_STATUS_CRITICAL_BAD: - $status_array[] = AGENT_MODULE_STATUS_CRITICAL_ALERT; - $status_array[] = AGENT_MODULE_STATUS_CRITICAL_BAD; + $module_status_array[] = AGENT_MODULE_STATUS_CRITICAL_ALERT; + $module_status_array[] = AGENT_MODULE_STATUS_CRITICAL_BAD; break; case AGENT_MODULE_STATUS_WARNING_ALERT: case AGENT_MODULE_STATUS_WARNING: - $status_array[] = AGENT_MODULE_STATUS_WARNING_ALERT; - $status_array[] = AGENT_MODULE_STATUS_WARNING; + $module_status_array[] = AGENT_MODULE_STATUS_WARNING_ALERT; + $module_status_array[] = AGENT_MODULE_STATUS_WARNING; break; case AGENT_MODULE_STATUS_UNKNOWN: - $status_array[] = AGENT_MODULE_STATUS_UNKNOWN; + $module_status_array[] = AGENT_MODULE_STATUS_UNKNOWN; break; case AGENT_MODULE_STATUS_NO_DATA: case AGENT_MODULE_STATUS_NOT_INIT: - $status_array[] = AGENT_MODULE_STATUS_NO_DATA; - $status_array[] = AGENT_MODULE_STATUS_NOT_INIT; + $module_status_array[] = AGENT_MODULE_STATUS_NO_DATA; + $module_status_array[] = AGENT_MODULE_STATUS_NOT_INIT; break; case AGENT_MODULE_STATUS_NORMAL_ALERT: case AGENT_MODULE_STATUS_NORMAL: - $status_array[] = AGENT_MODULE_STATUS_NORMAL_ALERT; - $status_array[] = AGENT_MODULE_STATUS_NORMAL; + $module_status_array[] = AGENT_MODULE_STATUS_NORMAL_ALERT; + $module_status_array[] = AGENT_MODULE_STATUS_NORMAL; break; } } - if (!empty($status_array)) { - $status_array = array_unique($status_array); - $status_str = implode(",", $status_array); + if (!empty($module_status_array)) { + $module_status_array = array_unique($module_status_array); + $status_str = implode(",", $module_status_array); $module_status_filter = "INNER JOIN tagente_estado AS tae ON tam.id_agente_modulo = tae.id_agente_modulo @@ -1418,12 +1418,50 @@ function tags_get_agents_counter ($id_tag, $groups_and_tags = array(), $agent_fi foreach ($agents as $agent) { $agent_filter["id"] = $agent["id"]; - $total = (int) tags_get_total_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); - $critical = (int) tags_get_critical_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); - $warning = (int) tags_get_warning_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); - $unknown = (int) tags_get_unknown_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); - $not_init = (int) tags_get_not_init_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); - $normal = (int) tags_get_normal_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); + + $total = 0; + $critical = 0; + $warning = 0; + $unknown = 0; + $not_init = 0; + $normal = 0; + // Without module filter + if (empty($module_status_array)) { + $total = (int) tags_get_total_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); + $critical = (int) tags_get_critical_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); + $warning = (int) tags_get_warning_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); + $unknown = (int) tags_get_unknown_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); + $not_init = (int) tags_get_not_init_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); + $normal = (int) tags_get_normal_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); + } + // With module filter + else { + foreach ($module_status_array as $status) { + switch ($status) { + case AGENT_MODULE_STATUS_CRITICAL_ALERT: + case AGENT_MODULE_STATUS_CRITICAL_BAD: + $critical = (int) tags_get_critical_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); + break; + case AGENT_MODULE_STATUS_WARNING_ALERT: + case AGENT_MODULE_STATUS_WARNING: + $warning = (int) tags_get_warning_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); + break; + case AGENT_MODULE_STATUS_UNKNOWN: + $unknown = (int) tags_get_unknown_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); + break; + case AGENT_MODULE_STATUS_NO_DATA: + case AGENT_MODULE_STATUS_NOT_INIT: + $not_init = (int) tags_get_not_init_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); + break; + case AGENT_MODULE_STATUS_NORMAL_ALERT: + case AGENT_MODULE_STATUS_NORMAL: + $normal = (int) tags_get_normal_monitors ($id_tag, $groups_and_tags, $agent_filter, $module_filter); + break; + } + } + + $total = $critical + $warning + $unknown + $not_init + $normal; + } if (!is_array($agent_status)) { switch ($agent_status) {