From 417dcbbe282596e18def3f7ff71ae1be93102934 Mon Sep 17 00:00:00 2001 From: zarzuelo Date: Mon, 26 Nov 2012 18:38:09 +0000 Subject: [PATCH] 2012-11-26 Sergio Martin * include/functions_agents.php include/functions_networkmap.php operation/agentes/status_monitor.php operation/netflow/nf_live_view.php: Improve the performance of networkmap with the new status counts. Modify some common code between console and metaconsole git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@7185 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_console/ChangeLog | 9 ++++ pandora_console/include/functions_agents.php | 38 ++++++++++++++ .../include/functions_networkmap.php | 6 +-- .../operation/agentes/status_monitor.php | 50 ++++++++++++++++--- .../operation/netflow/nf_live_view.php | 10 ++-- 5 files changed, 96 insertions(+), 17 deletions(-) diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index cfb02695e3..a75c37c56a 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,12 @@ +2012-11-26 Sergio Martin + + * include/functions_agents.php + include/functions_networkmap.php + operation/agentes/status_monitor.php + operation/netflow/nf_live_view.php: Improve the + performance of networkmap with the new status counts. + Modify some common code between console and metaconsole + 2012-11-26 Ramon Novoa * include/functions_groups.php, diff --git a/pandora_console/include/functions_agents.php b/pandora_console/include/functions_agents.php index fc37ec9741..cd6898140d 100644 --- a/pandora_console/include/functions_agents.php +++ b/pandora_console/include/functions_agents.php @@ -1565,6 +1565,44 @@ function agents_get_addresses ($id_agent) { return $ret_arr; } +/** + * Get the worst status of all modules of a given agent from the counts. + * + * @param array agent to check. + * + * @return int Worst status of an agent for all of its modules. + * return -1 if the data are wrong + */ +function agents_get_status_from_counts($agent) { + // Check if in the data there are all the necessary values + if(!isset($agent['normal_count']) && + !isset($agent['warning_count']) && + !isset($agent['critical_count']) && + !isset($agent['unknown_count']) && + !isset($agent['notinit_count']) && + !isset($agent['total_count'])) { + return -1; + } + + if($agent['critical_count'] > 0) { + return AGENT_MODULE_STATUS_CRITICAL_BAD; + } + else if($agent['warning_count'] > 0) { + return AGENT_MODULE_STATUS_WARNING; + } + else if($agent['unknown_count'] > 0) { + return AGENT_MODULE_STATUS_UNKNOW; + } + else if($agent['normal_count'] == $agent['total_count']) { + return AGENT_MODULE_STATUS_NORMAL; + } + //~ else if($agent['notinit_count'] == $agent['total_count']) { + //~ return AGENT_MODULE_STATUS_NORMAL; + //~ } + + return -1; +} + /** * Get the worst status of all modules of a given agent. * diff --git a/pandora_console/include/functions_networkmap.php b/pandora_console/include/functions_networkmap.php index a21001bbd9..afa498f1fb 100644 --- a/pandora_console/include/functions_networkmap.php +++ b/pandora_console/include/functions_networkmap.php @@ -77,14 +77,14 @@ function networkmap_generate_dot ($pandora_name, $group = 0, $simple = 0, $filter['id_grupo'] = $group; $agents = agents_get_agents ($filter, - array ('id_grupo, nombre, id_os, id_parent, id_agente')); + array ('id_grupo, nombre, id_os, id_parent, id_agente, normal_count, warning_count, critical_count, unknown_count, total_count, notinit_count')); } else if ($group == -666) { $agents = false; } else { $agents = agents_get_agents ($filter, - array ('id_grupo, nombre, id_os, id_parent, id_agente')); + array ('id_grupo, nombre, id_os, id_parent, id_agente, normal_count, warning_count, critical_count, unknown_count, total_count, notinit_count')); } if ($agents === false) @@ -492,7 +492,7 @@ function networkmap_create_agent_node ($agent, $simple = 0, $font_size = 10, $cu global $config; if (defined('METACONSOLE')) { - $status = agents_meta_get_status($id_server, $agent['id_agente']); + $status = agents_get_status_from_counts($agent); } else { $status = agents_get_status($agent['id_agente']); diff --git a/pandora_console/operation/agentes/status_monitor.php b/pandora_console/operation/agentes/status_monitor.php index c341e051cc..ad6ad3e79e 100644 --- a/pandora_console/operation/agentes/status_monitor.php +++ b/pandora_console/operation/agentes/status_monitor.php @@ -32,13 +32,22 @@ if (! check_acl ($config['id_user'], 0, "AR") require_once($config['homedir'] . '/include/functions_agents.php'); require_once($config['homedir'] . '/include/functions_modules.php'); require_once($config['homedir'] . '/include/functions_users.php'); +enterprise_include_once ('include/functions_metaconsole.php'); + $isFunctionPolicies = enterprise_include_once ('include/functions_policies.php'); // TODO: CLEAN extra_sql $extra_sql = ''; -ui_print_page_header ("Monitor detail", "images/brick.png", false); +if (! defined ('METACONSOLE')) { + //Header + ui_print_page_header ("Monitor detail", "images/brick.png", false); +} else { + $nav_bar = array(array('link' => 'index.php?sec=main', 'text' => __('Main')), + array('link' => 'index.php?sec=estado&sec2=operation/agentes/status_monitor', 'text' => __('Monitor view'))); + ui_meta_print_page_header($nav_bar); +} $ag_freestring = get_parameter ('ag_freestring'); $ag_modulename = (string) get_parameter ('ag_modulename'); @@ -565,14 +574,41 @@ switch ($config["dbtype"]) { $sql = oracle_recode_query ($sql, $set); break; } -$result = db_get_all_rows_sql ($sql); + +if (! defined ('METACONSOLE')) { + $result = db_get_all_rows_sql ($sql); -if ($count > $config["block_size"]) { - ui_pagination ($count, false, $offset); + if ($count > $config["block_size"]) { + ui_pagination ($count, false, $offset); + } + + if ($result === false) { + $result = array (); + } } - -if ($result === false) { - $result = array (); +else { + // For each server defined and not disabled: + $servers = db_get_all_rows_sql ("SELECT * FROM tmetaconsole_setup WHERE disabled = 0"); + if ($servers === false) + $servers = array(); + + $result = array(); + + foreach($servers as $server) { + // If connection was good then retrieve all data server + if (metaconsole_connect($server) == NOERR){ + $connection = true; + } + else{ + $connection = false; + } + + $result_server = db_get_all_rows_sql ($sql); + + if(!empty($result_server)) { + $result = array_merge($result, $result_server); + } + } } if (($config['dbtype'] == 'oracle') && ($result !== false)) { diff --git a/pandora_console/operation/netflow/nf_live_view.php b/pandora_console/operation/netflow/nf_live_view.php index d4a7341540..544b50657d 100644 --- a/pandora_console/operation/netflow/nf_live_view.php +++ b/pandora_console/operation/netflow/nf_live_view.php @@ -19,12 +19,8 @@ global $config; include_once($config['homedir'] . "/include/functions_graph.php"); include_once($config['homedir'] . "/include/functions_ui.php"); include_once($config['homedir'] . "/include/functions_netflow.php"); -if (defined ('METACONSOLE')) { - ui_require_javascript_file ('calendar', '../../include/javascript/'); -} else { - ui_require_javascript_file ('calendar'); -} +ui_require_javascript_file ('calendar'); // ACL check_login (); @@ -102,7 +98,7 @@ if (! defined ('METACONSOLE')) { ui_print_page_header (__('Netflow live view'), "images/networkmap/so_cisco_new.png", false, "", false, array ()); } else { $nav_bar = array(array('link' => 'index.php?sec=main', 'text' => __('Main')), - array('link' => 'index.php?sec=netf&sec2=' . $config['homedir'] . '/operation/netflow/nf_live_view', 'text' => __('Netflow live view'))); + array('link' => 'index.php?sec=netf&sec2=operation/netflow/nf_live_view', 'text' => __('Netflow live view'))); ui_meta_print_page_header($nav_bar); } @@ -140,7 +136,7 @@ else if ($update != '' && check_acl ($config["id_user"], 0, "AW")) { // The filter name will not be needed anymore $filter['id_name'] = ''; -echo '
'; +echo ''; // Chart options table $table->width = '100%';