From 1e4c570541b640c6705ea00bb4b03f38232b59dc Mon Sep 17 00:00:00 2001 From: Fermin Date: Fri, 5 Oct 2018 10:44:24 +0200 Subject: [PATCH] [Tags performance] check agents_get_modules in networkmap and removed unused code --- pandora_console/include/functions_graph.php | 4 +- .../include/functions_networkmap.php | 322 +----------------- .../functions_pandora_networkmap.js | 20 -- .../agentes/pandora_networkmap.view.php | 16 - 4 files changed, 14 insertions(+), 348 deletions(-) diff --git a/pandora_console/include/functions_graph.php b/pandora_console/include/functions_graph.php index f09bb04c45..feac091234 100644 --- a/pandora_console/include/functions_graph.php +++ b/pandora_console/include/functions_graph.php @@ -4183,16 +4183,14 @@ function graph_monitor_wheel ($width = 550, $height = 600, $filter = false) { if (!empty($agents)) { $agents_id = array(); $agents_aux = array(); - foreach ($agents as $key => $agent) { + foreach ($agents as $key => $agent) { $agents_aux[$agent['id_agente']] = $agent; } $agents = $agents_aux; $agents_aux = null; - $fields = array('id_agente_modulo', 'id_agente', 'id_module_group', 'nombre'); $module_groups = modules_get_modulegroups(); $module_groups[0] = __('Not assigned'); - // TODO TAGS agents_get_modules $modules = agents_get_modules(array_keys($agents), '*'); $data_agents = array(); diff --git a/pandora_console/include/functions_networkmap.php b/pandora_console/include/functions_networkmap.php index 9ea4e9ef11..8078fdfc59 100644 --- a/pandora_console/include/functions_networkmap.php +++ b/pandora_console/include/functions_networkmap.php @@ -260,7 +260,7 @@ function networkmap_generate_dot ($pandora_name, $group = 0, $relative = false, $text_filter = '', $ip_mask = null, $dont_show_subgroups = false, $strict_user = false, $size_canvas = null, $old_mode = false, $map_filter = array()) { - + global $config; $nooverlap = 1; @@ -271,17 +271,8 @@ function networkmap_generate_dot ($pandora_name, $group = 0, $filter['disabled'] = 0; if (!empty($text_filter)) { - switch ($config['dbtype']) { - case "mysql": - case "postgresql": - $filter[] = - '(nombre COLLATE utf8_general_ci LIKE "%' . $text_filter . '%")'; - break; - case "oracle": - $filter[] = - '(upper(nombre) LIKE upper(\'%' . $text_filter . '%\'))'; - break; - } + $filter[] = + '(nombre COLLATE utf8_general_ci LIKE "%' . $text_filter . '%")'; } if ($group >= 1) { @@ -305,33 +296,11 @@ function networkmap_generate_dot ($pandora_name, $group = 0, //foreach loop are without parent (id_parent = 0) // Get agents data - if ($strict_user) { - if ($dont_show_subgroups) - $filter['id_group'] = $group; - else { - if (!empty($childrens)) { - foreach ($childrens as $children) { - $filter_id_groups[$children] = $children; - } - } - $filter_id_groups[$group] = $group; - $filter['id_group'] = implode(',', $filter_id_groups); - } - - $filter['group_by'] = 'tagente.id_agente'; - $fields = array ('tagente.id_grupo, tagente.nombre, tagente.id_os, tagente.id_parent, tagente.id_agente, - tagente.normal_count, tagente.warning_count, tagente.critical_count, - tagente.unknown_count, tagente.total_count, tagente.notinit_count'); - $acltags = tags_get_user_groups_and_tags ($config['id_user'],'AR', $strict_user); - $agents = tags_get_all_user_agents (false, $config['id_user'], $acltags, $filter, $fields, false, $strict_user, true); - } - else { - $agents = agents_get_agents ($filter, - array ('id_grupo, nombre, id_os, id_parent, id_agente, - normal_count, warning_count, critical_count, - unknown_count, total_count, notinit_count'), 'AR', - array('field' => 'id_parent', 'order' => 'ASC')); - } + $agents = agents_get_agents ($filter, + array ('id_grupo, nombre, id_os, id_parent, id_agente, + normal_count, warning_count, critical_count, + unknown_count, total_count, notinit_count'), 'AR', + array('field' => 'id_parent', 'order' => 'ASC')); } else if ($group == -666) { $agents = false; @@ -343,21 +312,11 @@ function networkmap_generate_dot ($pandora_name, $group = 0, unknown_count, total_count, notinit_count'), $strict_user); } else { - if ($strict_user) { - $filter['group_by'] = 'tagente.id_agente'; - $fields = array ('tagente.id_grupo, tagente.nombre, tagente.id_os, tagente.id_parent, tagente.id_agente, - tagente.normal_count, tagente.warning_count, tagente.critical_count, - tagente.unknown_count, tagente.total_count, tagente.notinit_count'); - $acltags = tags_get_user_groups_and_tags ($config['id_user'],'AR', $strict_user); - $agents = tags_get_all_user_agents (false, $config['id_user'], $acltags, $filter, $fields, false, $strict_user, true); - } - else { - $agents = agents_get_agents ($filter, - array ('id_grupo, nombre, id_os, id_parent, id_agente, - normal_count, warning_count, critical_count, - unknown_count, total_count, notinit_count'), 'AR', - array('field' => 'id_parent', 'order' => 'ASC')); - } + $agents = agents_get_agents ($filter, + array ('id_grupo, nombre, id_os, id_parent, id_agente, + normal_count, warning_count, critical_count, + unknown_count, total_count, notinit_count'), 'AR', + array('field' => 'id_parent', 'order' => 'ASC')); } if ($agents === false) @@ -392,7 +351,6 @@ function networkmap_generate_dot ($pandora_name, $group = 0, $filter['disabled'] = 0; // Get agent modules data - // TODO TAGS agents_get_modules $modules = agents_get_modules($agent['id_agente'], '*', $filter, true, true); if ($modules === false) @@ -615,260 +573,6 @@ function networkmap_generate_dot ($pandora_name, $group = 0, return $graph; } -// Generate a dot graph definition for graphviz with groups -function networkmap_generate_dot_groups ($pandora_name, $group = 0, - $simple = 0, $font_size = 12, $layout = 'radial', $nooverlap = 0, - $zoom = 1, $ranksep = 2.5, $center = 0, $regen = 1, $pure = 0, - $modwithalerts = 0, $module_group = 0, $hidepolicymodules = 0, - $depth = 'all', $id_networkmap = 0, $dont_show_subgroups = 0, - $text_filter = '', $strict_user = false, $size_canvas = null) { - - global $config; - - if ($strict_user) { - $acltags = tags_get_user_groups_and_tags ($config['id_user'],'AR', $strict_user); - } - $parents = array(); - $orphans = array(); - - $filter = array (); - $filter['disabled'] = 0; - - if (!empty($text_filter)) { - switch ($config['dbtype']) { - case "mysql": - case "postgresql": - $filter[] = - '(nombre COLLATE utf8_general_ci LIKE "%' . $text_filter . '%")'; - break; - case "oracle": - $filter[] = - '(upper(nombre) LIKE upper(\'%' . $text_filter . '%\'))'; - break; - } - } - - // Get groups data - if ($group > 0) { - $groups = array(); - $id_groups = groups_get_id_recursive($group, true); - - foreach($id_groups as $id_group) { - $add = false; - if (check_acl($config["id_user"], $id_group, 'AR')) { - $add = true; - } - - if ($add) { - $groups[] = db_get_row ('tgrupo', 'id_grupo', $id_group); - } - } - - $filter['id_grupo'] = $id_groups; - } - else { - if ($strict_user) { - $groups = users_get_groups ($config['id_user'],"AR", false, true); - } - else { - $groups = db_get_all_rows_in_table ('tgrupo'); - } - if ($groups === false) { - $groups = array(); - } - } - - // Open Graph - $graph = networkmap_open_graph ($layout, $nooverlap, $pure, $zoom, - $ranksep, $font_size, $size_canvas); - - $node_count = 0; - - // Parse groups - $nodes = array (); - $nodes_groups = array(); - foreach ($groups as $group2) { - $node_count ++; - $group2['type'] = 'group'; - $group2['id_node'] = $node_count; - - // Add node - $nodes_groups[$group2['id_grupo']] = $group2; - } - - $node_count = 0; - - $groups_hiden = array(); - foreach ($nodes_groups as $node_group) { - - $node_count++; - - // Save node parent information to define edges later - if ($node_group['parent'] != "0" && $node_group['id_grupo'] != $group) { - if ((!$dont_show_subgroups) || ($group == 0)) { - $parents[$node_count] = $nodes_groups[$node_group['parent']]['id_node']; - } - else { - $groups_hiden[$node_group['id_grupo']] = 1; - continue; - } - } - else { - $orphans[$node_count] = 1; - } - - $nodes[$node_count] = $node_group; - } - - if ($depth != 'group') { - if ($strict_user) { - $filter['group_by'] = 'tagente.nombre'; - $filter['id_group'] = $filter['id_grupo']; - $fields = array ('tagente.id_grupo, tagente.nombre, tagente.id_os, tagente.id_agente, - tagente.normal_count, tagente.warning_count, tagente.critical_count, - tagente.unknown_count, tagente.total_count, tagente.notinit_count'); - $agents = tags_get_all_user_agents (false, $config['id_user'], $acltags, $filter, $fields, false, $strict_user, true); - unset($filter['id_group']); - } - else { - // Get agents data - $agents = agents_get_agents ($filter, - array ('id_grupo, nombre, id_os, id_agente, - normal_count, warning_count, critical_count, - unknown_count, total_count, notinit_count')); - } - if ($agents === false) - $agents = array(); - - // Parse agents - $nodes_agents = array(); - foreach ($agents as $agent) { - if ($dont_show_subgroups) { - if (!empty($groups_hiden[$agent['id_grupo']])) { - continue; - } - } - - // If only agents with alerts => agents without alerts discarded - $alert_agent = agents_get_alerts($agent['id_agente']); - - if ($modwithalerts and empty($alert_agent['simple'])) { - continue; - } - - $node_count ++; - // Save node parent information to define edges later - $parents[$node_count] = $agent['parent'] = $nodes_groups[$agent['id_grupo']]['id_node']; - - $agent['id_node'] = $node_count; - $agent['type'] = 'agent'; - // Add node - $nodes[$node_count] = $nodes_agents[$agent['id_agente']] = $agent; - - if ($depth == 'agent') { - continue; - } - - // Get agent modules data - // TODO TAGS agents_get_modules - $modules = agents_get_modules ($agent['id_agente'], false, array('disabled' => 0), true, false); - - // Parse modules - foreach ($modules as $key => $module) { - $node_count ++; - $agent_module = modules_get_agentmodule($key); - $alerts_module = db_get_sql('SELECT count(*) AS num - FROM talert_template_modules - WHERE id_agent_module = ' . $key); - - if ($alerts_module == 0 && $modwithalerts) { - continue; - } - - if ($agent_module['id_module_group'] != $module_group && - $module_group != 0) { - continue; - } - - if ($hidepolicymodules && $config['enterprise_installed']) { - enterprise_include_once('include/functions_policies.php'); - if (policies_is_module_in_policy($key)) { - continue; - } - } - - // Save node parent information to define edges later - $parents[$node_count] = $agent_module['parent'] = $agent['id_node']; - - $agent_module['id_node'] = $node_count; - - $agent_module['type'] = 'module'; - // Add node - $nodes[$node_count] = $agent_module; - } - } - } - - if (empty ($nodes)) { - return false; - } - - // Create void statistics array - $stats = array(); - - // Create nodes - foreach ($nodes as $node_id => $node) { - if ($center > 0 && ! networkmap_is_descendant ($node_id, $center, $parents)) { - unset ($parents[$node_id]); - unset ($orphans[$node_id]); - unset ($nodes[$node_id]); - continue; - } - switch ($node['type']) { - case 'group': - $graph .= networkmap_create_group_node ($node , $simple, $font_size, $metaconsole = false, null, $strict_user) . - "\n\t\t"; - $stats['groups'][] = $node['id_grupo']; - break; - case 'agent': - $graph .= networkmap_create_agent_node ($node , $simple, $font_size, true, true) . - "\n\t\t"; - $stats['agents'][] = $node['id_agente']; - break; - case 'module': - $graph .= networkmap_create_module_node ($node , $simple, $font_size) . - "\n\t\t"; - $stats['modules'][] = $node['id_agente_modulo']; - break; - } - } - // Define edges - foreach ($parents as $node => $parent_id) { - // Verify that the parent is in the graph - if (isset ($nodes[$parent_id])) { - $graph .= networkmap_create_edge ($node, $parent_id, $layout, $nooverlap, $pure, $zoom, $ranksep, $simple, $regen, $font_size, $group, 'operation/agentes/networkmap', 'groups', $id_networkmap); - } - else { - $orphans[$node] = 1; - } - } - - // Create a central node if orphan nodes exist - if (count ($orphans)) { - $graph .= networkmap_create_pandora_node ($pandora_name, $font_size, $simple, $stats); - } - - // Define edges for orphan nodes - foreach (array_keys($orphans) as $node) { - $graph .= networkmap_create_edge ('0', $node, $layout, $nooverlap, $pure, $zoom, $ranksep, $simple, $regen, $font_size, $group, 'operation/agentes/networkmap', 'groups', $id_networkmap); - } - - // Close graph - $graph .= networkmap_close_graph (); - - return $graph; -} - // Returns an edge definition function networkmap_create_edge ($head, $tail, $layout, $nooverlap, $pure, $zoom, $ranksep, $simple, $regen, $font_size, $group, $sec2 = 'operation/agentes/networkmap', $tab = 'topology', $id_networkmap = 0) { if (defined("METACONSOLE")) { diff --git a/pandora_console/include/javascript/functions_pandora_networkmap.js b/pandora_console/include/javascript/functions_pandora_networkmap.js index 7edc029f68..83418f97c1 100644 --- a/pandora_console/include/javascript/functions_pandora_networkmap.js +++ b/pandora_console/include/javascript/functions_pandora_networkmap.js @@ -3958,26 +3958,6 @@ function get_status_module() { }); } -function check_changes_num_modules() { - var params = []; - params.push("check_changes_num_modules=1"); - params.push("id=" + id_agent); - params.push("page=operation/agentes/pandora_networkmap.view"); - jQuery.ajax({ - data: params.join("&"), - dataType: 'json', - type: 'POST', - url: action = "../../../ajax.php", - success: function (data) { - if (data['correct']) { - if (module_count != data['count']) { - //location.reload(true); - } - } - } - }); -} - function show_networkmap_node(id_agent_param, refresh_state) { id_agent = id_agent_param; diff --git a/pandora_console/operation/agentes/pandora_networkmap.view.php b/pandora_console/operation/agentes/pandora_networkmap.view.php index f15c49e28d..738f9ed5df 100644 --- a/pandora_console/operation/agentes/pandora_networkmap.view.php +++ b/pandora_console/operation/agentes/pandora_networkmap.view.php @@ -563,8 +563,6 @@ if (is_ajax ()) { $get_status_node = (bool)get_parameter('get_status_node', false); $get_status_module = (bool)get_parameter('get_status_module', false); - $check_changes_num_modules = (bool)get_parameter( - 'check_changes_num_modules', false); if ($get_status_node) { $id = (int)get_parameter('id', 0); @@ -593,20 +591,6 @@ if (is_ajax ()) { return; } - if ($check_changes_num_modules) { - $id = (int)get_parameter('id', 0); - // TODO TAGS agents_get_modules - $modules = agents_get_modules($id); - - $return = array(); - $return['correct'] = true; - $return['count'] = count($modules); - - echo json_encode($return); - - return; - } - if ($update_node_alert) { $map_id = (int)get_parameter('map_id', 0);