From c15357dc03d235e0e0225b7527784831529b1ef7 Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Mon, 4 Feb 2019 19:16:30 +0100 Subject: [PATCH] Servers get server string name Former-commit-id: 6988fc5972c72c23131704e9dcb45328755b0ee8 --- pandora_console/include/functions_servers.php | 1425 +++++++++-------- 1 file changed, 788 insertions(+), 637 deletions(-) diff --git a/pandora_console/include/functions_servers.php b/pandora_console/include/functions_servers.php index 6bd255e88d..856864b4a3 100644 --- a/pandora_console/include/functions_servers.php +++ b/pandora_console/include/functions_servers.php @@ -1,24 +1,32 @@ 0, 'status' => 1); - db_process_sql_update('trecon_task', $values, array('id_rt' => $id_recon_task)); +function servers_force_recon_task($id_recon_task) +{ + $values = [ + 'utimestamp' => 0, + 'status' => 1, + ]; + db_process_sql_update('trecon_task', $values, ['id_rt' => $id_recon_task]); } + /** * This function will get several metrics from the database to get info about server performance - * @return array with several data + * + * @return array with several data */ -function servers_get_performance () { - - global $config; - - $data = array(); - $data["total_modules"] = 0; - $data["total_remote_modules"] = 0; - $data["total_local_modules"] = 0; - $data["avg_interval_total_modules"] = array(); - $data["avg_interval_remote_modules"] = array(); - $data["avg_interval_local_modules"] = 0; - $data["local_modules_rate"] = 0; - $data["network_modules_rate"] = 0; - - if ($config["realtimestats"] == 1) { - - $counts = db_get_all_rows_sql (" +function servers_get_performance() +{ + global $config; + + $data = []; + $data['total_modules'] = 0; + $data['total_remote_modules'] = 0; + $data['total_local_modules'] = 0; + $data['avg_interval_total_modules'] = []; + $data['avg_interval_remote_modules'] = []; + $data['avg_interval_local_modules'] = 0; + $data['local_modules_rate'] = 0; + $data['network_modules_rate'] = 0; + + if ($config['realtimestats'] == 1) { + $counts = db_get_all_rows_sql( + ' SELECT tagente_modulo.id_modulo, COUNT(tagente_modulo.id_agente_modulo) modules FROM tagente_modulo, tagente_estado, tagente @@ -95,94 +119,108 @@ function servers_get_performance () { AND (utimestamp > 0 OR (id_tipo_modulo = 100 OR (id_tipo_modulo > 21 AND id_tipo_modulo < 23))) AND tagente.disabled = 0 - GROUP BY tagente_modulo.id_modulo"); - - if (empty($counts)) { - $counts = array(); - } - - foreach($counts as $c) { - switch($c['id_modulo']) { - case MODULE_DATA: - $data["total_local_modules"] = $c['modules']; - break; - case MODULE_NETWORK: - $data["total_network_modules"] = $c['modules']; - break; - case MODULE_PLUGIN: - $data["total_plugin_modules"] = $c['modules']; - break; - case MODULE_PREDICTION: - $data["total_prediction_modules"] = $c['modules']; - break; - case MODULE_WMI: - $data["total_wmi_modules"] = $c['modules']; - break; - case MODULE_WEB: - $data["total_web_modules"] = $c['modules']; - break; - } - - if($c['id_modulo'] != MODULE_DATA) { - $data["total_remote_modules"] += $c['modules']; - } - - $data["total_modules"] += $c['modules']; - } - } - else { - $counts = db_get_all_rows_sql (" + GROUP BY tagente_modulo.id_modulo' + ); + + if (empty($counts)) { + $counts = []; + } + + foreach ($counts as $c) { + switch ($c['id_modulo']) { + case MODULE_DATA: + $data['total_local_modules'] = $c['modules']; + break; + + case MODULE_NETWORK: + $data['total_network_modules'] = $c['modules']; + break; + + case MODULE_PLUGIN: + $data['total_plugin_modules'] = $c['modules']; + break; + + case MODULE_PREDICTION: + $data['total_prediction_modules'] = $c['modules']; + break; + + case MODULE_WMI: + $data['total_wmi_modules'] = $c['modules']; + break; + + case MODULE_WEB: + $data['total_web_modules'] = $c['modules']; + break; + } + + if ($c['id_modulo'] != MODULE_DATA) { + $data['total_remote_modules'] += $c['modules']; + } + + $data['total_modules'] += $c['modules']; + } + } else { + $counts = db_get_all_rows_sql( + ' SELECT server_type, my_modules modules FROM tserver - GROUP BY server_type"); - - if (empty($counts)) { - $counts = array(); - } - - foreach ($counts as $c) { - switch ($c['server_type']) { - case SERVER_TYPE_DATA: - $data["total_local_modules"] = $c['modules']; - break; - case SERVER_TYPE_NETWORK: - case SERVER_TYPE_SNMP: - case SERVER_TYPE_ENTERPRISE_ICMP: - case SERVER_TYPE_ENTERPRISE_SNMP: - $data["total_network_modules"] = $c['modules']; - break; - case SERVER_TYPE_PLUGIN: - $data["total_plugin_modules"] = $c['modules']; - break; - case SERVER_TYPE_PREDICTION: - $data["total_prediction_modules"] = $c['modules']; - break; - case SERVER_TYPE_WMI: - $data["total_wmi_modules"] = $c['modules']; - break; - case SERVER_TYPE_WEB: - $data["total_web_modules"] = $c['modules']; - break; - case SERVER_TYPE_EXPORT: - case SERVER_TYPE_INVENTORY: - case SERVER_TYPE_EVENT: - case SERVER_TYPE_RECON: - case SERVER_TYPE_SYSLOG: - break; - } - - if ($c['server_type'] != SERVER_TYPE_DATA) { - $data["total_remote_modules"] += $c['modules']; - } - - $data["total_modules"] += $c['modules']; - } - } - - $interval_avgs = array(); - - // Avg of modules interval when modules have module_interval > 0 - $interval_avgs_modules = db_get_all_rows_sql (" + GROUP BY server_type' + ); + + if (empty($counts)) { + $counts = []; + } + + foreach ($counts as $c) { + switch ($c['server_type']) { + case SERVER_TYPE_DATA: + $data['total_local_modules'] = $c['modules']; + break; + + case SERVER_TYPE_NETWORK: + case SERVER_TYPE_SNMP: + case SERVER_TYPE_ENTERPRISE_ICMP: + case SERVER_TYPE_ENTERPRISE_SNMP: + $data['total_network_modules'] = $c['modules']; + break; + + case SERVER_TYPE_PLUGIN: + $data['total_plugin_modules'] = $c['modules']; + break; + + case SERVER_TYPE_PREDICTION: + $data['total_prediction_modules'] = $c['modules']; + break; + + case SERVER_TYPE_WMI: + $data['total_wmi_modules'] = $c['modules']; + break; + + case SERVER_TYPE_WEB: + $data['total_web_modules'] = $c['modules']; + break; + + case SERVER_TYPE_EXPORT: + case SERVER_TYPE_INVENTORY: + case SERVER_TYPE_EVENT: + case SERVER_TYPE_RECON: + case SERVER_TYPE_SYSLOG: + break; + } + + if ($c['server_type'] != SERVER_TYPE_DATA) { + $data['total_remote_modules'] += $c['modules']; + } + + $data['total_modules'] += $c['modules']; + } + } + + $interval_avgs = []; + + // Avg of modules interval when modules have module_interval > 0 + $interval_avgs_modules = db_get_all_rows_sql( + ' SELECT count(tagente_modulo.id_modulo) modules , tagente_modulo.id_modulo, AVG(tagente_modulo.module_interval) avg_interval @@ -194,20 +232,22 @@ function servers_get_performance () { AND delete_pending = 0 AND tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente - GROUP BY tagente_modulo.id_modulo"); - - if (empty($interval_avgs_modules)) { - $interval_avgs_modules = array(); - } - - // Transform into a easily format - foreach ($interval_avgs_modules as $iamodules) { - $interval_avgs[$iamodules['id_modulo']]['avg_interval'] = $iamodules['avg_interval']; - $interval_avgs[$iamodules['id_modulo']]['modules'] = $iamodules['modules']; - } - - // Avg of agents interval when modules have module_interval == 0 - $interval_avgs_agents = db_get_all_rows_sql (" + GROUP BY tagente_modulo.id_modulo' + ); + + if (empty($interval_avgs_modules)) { + $interval_avgs_modules = []; + } + + // Transform into a easily format + foreach ($interval_avgs_modules as $iamodules) { + $interval_avgs[$iamodules['id_modulo']]['avg_interval'] = $iamodules['avg_interval']; + $interval_avgs[$iamodules['id_modulo']]['modules'] = $iamodules['modules']; + } + + // Avg of agents interval when modules have module_interval == 0 + $interval_avgs_agents = db_get_all_rows_sql( + ' SELECT count(tagente_modulo.id_modulo) modules , tagente_modulo.id_modulo, AVG(tagente.intervalo) avg_interval FROM tagente_modulo, tagente_estado, tagente @@ -218,82 +258,86 @@ function servers_get_performance () { AND delete_pending = 0 AND tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente - GROUP BY tagente_modulo.id_modulo"); - - if (empty($interval_avgs_agents)) { - $interval_avgs_agents = array(); - } - - // Merge with the previous calculated array - foreach ($interval_avgs_agents as $iaagents) { - if (!isset($interval_avgs[$iaagents['id_modulo']]['modules'])) { - $interval_avgs[$iaagents['id_modulo']]['avg_interval'] = $iaagents['avg_interval']; - $interval_avgs[$iaagents['id_modulo']]['modules'] = $iaagents['modules']; - } - else { - $interval_avgs[$iaagents['id_modulo']]['avg_interval'] = servers_get_avg_interval($interval_avgs[$iaagents['id_modulo']], $iaagents); - $interval_avgs[$iaagents['id_modulo']]['modules'] += $iaagents['modules']; - } - } - - foreach ($interval_avgs as $id_modulo => $ia) { - switch($id_modulo) { - case MODULE_DATA: - $data["avg_interval_local_modules"] = $ia['avg_interval']; - $data["local_modules_rate"] = - servers_get_rate($data["avg_interval_local_modules"], $data["total_local_modules"]); - break; - case MODULE_NETWORK: - $data["avg_interval_network_modules"] = $ia['avg_interval']; - $data["network_modules_rate"] = - servers_get_rate($data["avg_interval_network_modules"], - $data["total_network_modules"]); - break; - case MODULE_PLUGIN: - $data["avg_interval_plugin_modules"] = $ia['avg_interval']; - $data["plugin_modules_rate"] = servers_get_rate($data["avg_interval_plugin_modules"], $data["total_plugin_modules"]); - break; - case MODULE_PREDICTION: - $data["avg_interval_prediction_modules"] = $ia['avg_interval']; - $data["prediction_modules_rate"] = servers_get_rate($data["avg_interval_prediction_modules"], $data["total_prediction_modules"]); - break; - case MODULE_WMI: - $data["avg_interval_wmi_modules"] = $ia['avg_interval']; - $data["wmi_modules_rate"] = servers_get_rate($data["avg_interval_wmi_modules"], $data["total_wmi_modules"]); - break; - case MODULE_WEB: - $data["avg_interval_web_modules"] = $ia['avg_interval']; - $data["web_modules_rate"] = servers_get_rate($data["avg_interval_web_modules"], $data["total_web_modules"]); - break; - } - - if ($id_modulo != MODULE_DATA) { - $data["avg_interval_remote_modules"][] = $ia['avg_interval']; - } - - $data["avg_interval_total_modules"][] = $ia['avg_interval']; - } - - if (empty($data["avg_interval_remote_modules"])) { - $data["avg_interval_remote_modules"] = 0; - } - else { - $data["avg_interval_remote_modules"] = array_sum($data["avg_interval_remote_modules"]) / count($data["avg_interval_remote_modules"]); - } - - if (empty($data["avg_interval_total_modules"])) { - $data["avg_interval_total_modules"] = 0; - } - else { - $data["avg_interval_total_modules"] = array_sum($data["avg_interval_total_modules"]) / count($data["avg_interval_total_modules"]); - } - - $data["remote_modules_rate"] = servers_get_rate($data["avg_interval_remote_modules"], $data["total_remote_modules"]); - $data["total_modules_rate"] = servers_get_rate($data["avg_interval_total_modules"], $data["total_modules"]); - - return ($data); + GROUP BY tagente_modulo.id_modulo' + ); + + if (empty($interval_avgs_agents)) { + $interval_avgs_agents = []; + } + + // Merge with the previous calculated array + foreach ($interval_avgs_agents as $iaagents) { + if (!isset($interval_avgs[$iaagents['id_modulo']]['modules'])) { + $interval_avgs[$iaagents['id_modulo']]['avg_interval'] = $iaagents['avg_interval']; + $interval_avgs[$iaagents['id_modulo']]['modules'] = $iaagents['modules']; + } else { + $interval_avgs[$iaagents['id_modulo']]['avg_interval'] = servers_get_avg_interval($interval_avgs[$iaagents['id_modulo']], $iaagents); + $interval_avgs[$iaagents['id_modulo']]['modules'] += $iaagents['modules']; + } + } + + foreach ($interval_avgs as $id_modulo => $ia) { + switch ($id_modulo) { + case MODULE_DATA: + $data['avg_interval_local_modules'] = $ia['avg_interval']; + $data['local_modules_rate'] = servers_get_rate($data['avg_interval_local_modules'], $data['total_local_modules']); + break; + + case MODULE_NETWORK: + $data['avg_interval_network_modules'] = $ia['avg_interval']; + $data['network_modules_rate'] = servers_get_rate( + $data['avg_interval_network_modules'], + $data['total_network_modules'] + ); + break; + + case MODULE_PLUGIN: + $data['avg_interval_plugin_modules'] = $ia['avg_interval']; + $data['plugin_modules_rate'] = servers_get_rate($data['avg_interval_plugin_modules'], $data['total_plugin_modules']); + break; + + case MODULE_PREDICTION: + $data['avg_interval_prediction_modules'] = $ia['avg_interval']; + $data['prediction_modules_rate'] = servers_get_rate($data['avg_interval_prediction_modules'], $data['total_prediction_modules']); + break; + + case MODULE_WMI: + $data['avg_interval_wmi_modules'] = $ia['avg_interval']; + $data['wmi_modules_rate'] = servers_get_rate($data['avg_interval_wmi_modules'], $data['total_wmi_modules']); + break; + + case MODULE_WEB: + $data['avg_interval_web_modules'] = $ia['avg_interval']; + $data['web_modules_rate'] = servers_get_rate($data['avg_interval_web_modules'], $data['total_web_modules']); + break; + } + + if ($id_modulo != MODULE_DATA) { + $data['avg_interval_remote_modules'][] = $ia['avg_interval']; + } + + $data['avg_interval_total_modules'][] = $ia['avg_interval']; + } + + if (empty($data['avg_interval_remote_modules'])) { + $data['avg_interval_remote_modules'] = 0; + } else { + $data['avg_interval_remote_modules'] = (array_sum($data['avg_interval_remote_modules']) / count($data['avg_interval_remote_modules'])); + } + + if (empty($data['avg_interval_total_modules'])) { + $data['avg_interval_total_modules'] = 0; + } else { + $data['avg_interval_total_modules'] = (array_sum($data['avg_interval_total_modules']) / count($data['avg_interval_total_modules'])); + } + + $data['remote_modules_rate'] = servers_get_rate($data['avg_interval_remote_modules'], $data['total_remote_modules']); + $data['total_modules_rate'] = servers_get_rate($data['avg_interval_total_modules'], $data['total_modules']); + + return ($data); } + /** * Get avg interval * @@ -302,15 +346,19 @@ function servers_get_performance () { * * @return float number of avg modules between two parts */ - -function servers_get_avg_interval($modules_avg_interval1, $modules_avg_interval2) { - $total_modules = $modules_avg_interval1['modules'] + $modules_avg_interval2['modules']; - - $parcial1 = $modules_avg_interval1['avg_interval'] * $modules_avg_interval1['modules']; - $parcial2 = $modules_avg_interval2['avg_interval'] * $modules_avg_interval2['modules']; - - return ($parcial1 + $parcial2) / $total_modules; + + +function servers_get_avg_interval($modules_avg_interval1, $modules_avg_interval2) +{ + $total_modules = ($modules_avg_interval1['modules'] + $modules_avg_interval2['modules']); + + $parcial1 = ($modules_avg_interval1['avg_interval'] * $modules_avg_interval1['modules']); + $parcial2 = ($modules_avg_interval2['avg_interval'] * $modules_avg_interval2['modules']); + + return (($parcial1 + $parcial2) / $total_modules); } + + /** * Get server rate * @@ -319,13 +367,12 @@ function servers_get_avg_interval($modules_avg_interval1, $modules_avg_interval2 * * @return float number of modules processed by second */ -function servers_get_rate($avg_interval, $num_modules) { - - return $avg_interval > 0 ? - ($num_modules / $avg_interval) : - 0; +function servers_get_rate($avg_interval, $num_modules) +{ + return $avg_interval > 0 ? ($num_modules / $avg_interval) : 0; } + /** * This function will get all the server information in an array or a specific server * @@ -333,300 +380,321 @@ function servers_get_rate($avg_interval, $num_modules) { * * @return mixed False in case the server doesn't exist or an array with info. */ -function servers_get_info ($id_server = -1) { - global $config; - - if (is_array ($id_server)) { - $select_id = " WHERE id_server IN (".implode (",", $id_server).")"; - } - elseif ($id_server > 0) { - $select_id = " WHERE id_server IN (".(int) $id_server.")"; - } - else { - $select_id = ""; - } - - $sql = " +function servers_get_info($id_server=-1) +{ + global $config; + + if (is_array($id_server)) { + $select_id = ' WHERE id_server IN ('.implode(',', $id_server).')'; + } else if ($id_server > 0) { + $select_id = ' WHERE id_server IN ('.(int) $id_server.')'; + } else { + $select_id = ''; + } + + $sql = ' SELECT * - FROM tserver " . $select_id . " - ORDER BY server_type"; - $result = db_get_all_rows_sql ($sql); - $time = get_system_time (); - - if (empty ($result)) { - return false; - } - - $return = array (); - foreach ($result as $server) { - switch ($server['server_type']) { - case SERVER_TYPE_DATA: - $server["img"] = html_print_image ("images/data.png", true, array ("title" => __('Data server'))); - $server["type"] = "data"; - $id_modulo = 1; - break; - case SERVER_TYPE_NETWORK: - $server["img"] = html_print_image ("images/network.png", true, array ("title" => __('Network server'))); - $server["type"] = "network"; - $id_modulo = 2; - break; - case SERVER_TYPE_SNMP: - $server["img"] = html_print_image ("images/snmp.png", true, array ("title" => __('SNMP Trap server'))); - $server["type"] = "snmp"; - $id_modulo = 0; - break; - case SERVER_TYPE_RECON: - $server["img"] = html_print_image ("images/recon.png", true, array ("title" => __('Recon server'))); - $server["type"] = "recon"; - $id_modulo = 0; - break; - case SERVER_TYPE_PLUGIN: - $server["img"] = html_print_image ("images/plugin.png", true, array ("title" => __('Plugin server'))); - $server["type"] = "plugin"; - $id_modulo = 4; - break; - case SERVER_TYPE_PREDICTION: - $server["img"] = html_print_image ("images/chart_bar.png", true, array ("title" => __('Prediction server'))); - $server["type"] = "prediction"; - $id_modulo = 5; - break; - case SERVER_TYPE_WMI: - $server["img"] = html_print_image ("images/wmi.png", true, array ("title" => __('WMI server'))); - $server["type"] = "wmi"; - $id_modulo = 6; - break; - case SERVER_TYPE_EXPORT: - $server["img"] = html_print_image ("images/server_export.png", true, array ("title" => __('Export server'))); - $server["type"] = "export"; - $id_modulo = 0; - break; - case SERVER_TYPE_INVENTORY: - $server["img"] = html_print_image ("images/page_white_text.png", true, array ("title" => __('Inventory server'))); - $server["type"] = "inventory"; - $id_modulo = 0; - break; - case SERVER_TYPE_WEB: - $server["img"] = html_print_image ("images/world.png", true, array ("title" => __('Web server'))); - $server["type"] = "web"; - $id_modulo = 0; - break; - case SERVER_TYPE_EVENT: - $server["img"] = html_print_image ("images/lightning_go.png", true, array ("title" => __('Event server'))); - $server["type"] = "event"; - $id_modulo = 2; - break; - case SERVER_TYPE_ENTERPRISE_ICMP: - $server["img"] = html_print_image ("images/network.png", true, array ("title" => __('Enterprise ICMP server'))); - $server["type"] = "enterprise icmp"; - $id_modulo = 2; - break; - case SERVER_TYPE_ENTERPRISE_SNMP: - $server["img"] = html_print_image ("images/network.png", true, array ("title" => __('Enterprise SNMP server'))); - $server["type"] = "enterprise snmp"; - $id_modulo = 2; - break; - case SERVER_TYPE_ENTERPRISE_SATELLITE: - $server["img"] = html_print_image ("images/satellite.png", true, array ("title" => __('Enterprise Satellite server'))); - $server["type"] = "enterprise satellite"; - $id_modulo = 0; - break; - case SERVER_TYPE_ENTERPRISE_TRANSACTIONAL: - $server["img"] = html_print_image ("images/transactional_map.png", true, array ("title" => __('Enterprise Transactional server'))); - $server["type"] = "enterprise transactional"; - $id_modulo = 0; - break; - case SERVER_TYPE_MAINFRAME: - $server["img"] = html_print_image ("images/mainframe.png", true, array ("title" => __('Mainframe server'))); - $server["type"] = "mainframe"; - $id_modulo = 0; - break; - case SERVER_TYPE_SYNC: - $server["img"] = html_print_image ("images/sync.png", true, array ("title" => __('Sync server'))); - $server["type"] = "sync"; - $id_modulo = 0; - break; - case SERVER_TYPE_WUX: - $server["img"] = html_print_image ("images/icono-wux.png", true, array ("title" => __('Wux server'))); - $server["type"] = "wux"; - $id_modulo = 0; - break; - case SERVER_TYPE_SYSLOG: - $server["img"] = html_print_image ("images/syslog.png", true, array ("title" => __('Syslog server'))); - $server["type"] = "syslog"; - $id_modulo = 0; - break; - case SERVER_TYPE_AUTOPROVISION: - $server["img"] = html_print_image ("images/autoprovision.png", true, array ("title" => __('Autoprovision server'))); - $server["type"] = "autoprovision"; - $id_modulo = 0; - break; - case SERVER_TYPE_MIGRATION: - $server["img"] = html_print_image ("images/migration.png", true, array ("title" => __('Migration server'))); - $server["type"] = "migration"; - $id_modulo = 0; - break; - default: - $server["img"] = ''; - $server["type"] = "unknown"; - $id_modulo = 0; - break; - } - - if ($config["realtimestats"] == 0) { - // --------------------------------------------------------------- - // Take data from database if not realtime stats - // --------------------------------------------------------------- - - $server["lag"] = db_get_sql ("SELECT lag_time FROM tserver WHERE id_server = ".$server["id_server"]); - $server["module_lag"] = db_get_sql ("SELECT lag_modules FROM tserver WHERE id_server = ".$server["id_server"]); - $server["modules"] = db_get_sql ("SELECT my_modules FROM tserver WHERE id_server = ".$server["id_server"]); - $server["modules_total"] = db_get_sql ("SELECT total_modules_running FROM tserver WHERE id_server = ".$server["id_server"]); - - } - else { - - // --------------------------------------------------------------- - // Take data in realtime - // --------------------------------------------------------------- - - - - $server["module_lag"] = 0; - $server["lag"] = 0; - - // Inventory server - if ($server["server_type"] == SERVER_TYPE_INVENTORY) { - - // Get modules exported by this server - $server["modules"] = db_get_sql ("SELECT COUNT(tagent_module_inventory.id_agent_module_inventory) FROM tagente, tagent_module_inventory WHERE tagente.disabled=0 AND tagent_module_inventory.id_agente = tagente.id_agente AND tagente.server_name = '" . $server["name"] . "'"); - - // Get total exported modules - $server["modules_total"] = db_get_sql ("SELECT COUNT(tagent_module_inventory.id_agent_module_inventory) FROM tagente, tagent_module_inventory WHERE tagente.disabled=0 AND tagent_module_inventory.id_agente = tagente.id_agente"); - - $interval_esc = db_escape_key_identifier ("interval"); - - // Get the module lag - $server["module_lag"] = db_get_sql ("SELECT COUNT(tagent_module_inventory.id_agent_module_inventory) AS module_lag + FROM tserver '.$select_id.' + ORDER BY server_type'; + $result = db_get_all_rows_sql($sql); + $time = get_system_time(); + + if (empty($result)) { + return false; + } + + $return = []; + foreach ($result as $server) { + switch ($server['server_type']) { + case SERVER_TYPE_DATA: + $server['img'] = html_print_image('images/data.png', true, ['title' => __('Data server')]); + $server['type'] = 'data'; + $id_modulo = 1; + break; + + case SERVER_TYPE_NETWORK: + $server['img'] = html_print_image('images/network.png', true, ['title' => __('Network server')]); + $server['type'] = 'network'; + $id_modulo = 2; + break; + + case SERVER_TYPE_SNMP: + $server['img'] = html_print_image('images/snmp.png', true, ['title' => __('SNMP Trap server')]); + $server['type'] = 'snmp'; + $id_modulo = 0; + break; + + case SERVER_TYPE_RECON: + $server['img'] = html_print_image('images/recon.png', true, ['title' => __('Recon server')]); + $server['type'] = 'recon'; + $id_modulo = 0; + break; + + case SERVER_TYPE_PLUGIN: + $server['img'] = html_print_image('images/plugin.png', true, ['title' => __('Plugin server')]); + $server['type'] = 'plugin'; + $id_modulo = 4; + break; + + case SERVER_TYPE_PREDICTION: + $server['img'] = html_print_image('images/chart_bar.png', true, ['title' => __('Prediction server')]); + $server['type'] = 'prediction'; + $id_modulo = 5; + break; + + case SERVER_TYPE_WMI: + $server['img'] = html_print_image('images/wmi.png', true, ['title' => __('WMI server')]); + $server['type'] = 'wmi'; + $id_modulo = 6; + break; + + case SERVER_TYPE_EXPORT: + $server['img'] = html_print_image('images/server_export.png', true, ['title' => __('Export server')]); + $server['type'] = 'export'; + $id_modulo = 0; + break; + + case SERVER_TYPE_INVENTORY: + $server['img'] = html_print_image('images/page_white_text.png', true, ['title' => __('Inventory server')]); + $server['type'] = 'inventory'; + $id_modulo = 0; + break; + + case SERVER_TYPE_WEB: + $server['img'] = html_print_image('images/world.png', true, ['title' => __('Web server')]); + $server['type'] = 'web'; + $id_modulo = 0; + break; + + case SERVER_TYPE_EVENT: + $server['img'] = html_print_image('images/lightning_go.png', true, ['title' => __('Event server')]); + $server['type'] = 'event'; + $id_modulo = 2; + break; + + case SERVER_TYPE_ENTERPRISE_ICMP: + $server['img'] = html_print_image('images/network.png', true, ['title' => __('Enterprise ICMP server')]); + $server['type'] = 'enterprise icmp'; + $id_modulo = 2; + break; + + case SERVER_TYPE_ENTERPRISE_SNMP: + $server['img'] = html_print_image('images/network.png', true, ['title' => __('Enterprise SNMP server')]); + $server['type'] = 'enterprise snmp'; + $id_modulo = 2; + break; + + case SERVER_TYPE_ENTERPRISE_SATELLITE: + $server['img'] = html_print_image('images/satellite.png', true, ['title' => __('Enterprise Satellite server')]); + $server['type'] = 'enterprise satellite'; + $id_modulo = 0; + break; + + case SERVER_TYPE_ENTERPRISE_TRANSACTIONAL: + $server['img'] = html_print_image('images/transactional_map.png', true, ['title' => __('Enterprise Transactional server')]); + $server['type'] = 'enterprise transactional'; + $id_modulo = 0; + break; + + case SERVER_TYPE_MAINFRAME: + $server['img'] = html_print_image('images/mainframe.png', true, ['title' => __('Mainframe server')]); + $server['type'] = 'mainframe'; + $id_modulo = 0; + break; + + case SERVER_TYPE_SYNC: + $server['img'] = html_print_image('images/sync.png', true, ['title' => __('Sync server')]); + $server['type'] = 'sync'; + $id_modulo = 0; + break; + + case SERVER_TYPE_WUX: + $server['img'] = html_print_image('images/icono-wux.png', true, ['title' => __('Wux server')]); + $server['type'] = 'wux'; + $id_modulo = 0; + break; + + case SERVER_TYPE_SYSLOG: + $server['img'] = html_print_image('images/syslog.png', true, ['title' => __('Syslog server')]); + $server['type'] = 'syslog'; + $id_modulo = 0; + break; + + case SERVER_TYPE_AUTOPROVISION: + $server['img'] = html_print_image('images/autoprovision.png', true, ['title' => __('Autoprovision server')]); + $server['type'] = 'autoprovision'; + $id_modulo = 0; + break; + + case SERVER_TYPE_MIGRATION: + $server['img'] = html_print_image('images/migration.png', true, ['title' => __('Migration server')]); + $server['type'] = 'migration'; + $id_modulo = 0; + break; + + default: + $server['img'] = ''; + $server['type'] = 'unknown'; + $id_modulo = 0; + break; + } + + if ($config['realtimestats'] == 0) { + // --------------------------------------------------------------- + // Take data from database if not realtime stats + // --------------------------------------------------------------- + $server['lag'] = db_get_sql('SELECT lag_time FROM tserver WHERE id_server = '.$server['id_server']); + $server['module_lag'] = db_get_sql('SELECT lag_modules FROM tserver WHERE id_server = '.$server['id_server']); + $server['modules'] = db_get_sql('SELECT my_modules FROM tserver WHERE id_server = '.$server['id_server']); + $server['modules_total'] = db_get_sql('SELECT total_modules_running FROM tserver WHERE id_server = '.$server['id_server']); + } else { + // --------------------------------------------------------------- + // Take data in realtime + // --------------------------------------------------------------- + $server['module_lag'] = 0; + $server['lag'] = 0; + + // Inventory server + if ($server['server_type'] == SERVER_TYPE_INVENTORY) { + // Get modules exported by this server + $server['modules'] = db_get_sql("SELECT COUNT(tagent_module_inventory.id_agent_module_inventory) FROM tagente, tagent_module_inventory WHERE tagente.disabled=0 AND tagent_module_inventory.id_agente = tagente.id_agente AND tagente.server_name = '".$server['name']."'"); + + // Get total exported modules + $server['modules_total'] = db_get_sql('SELECT COUNT(tagent_module_inventory.id_agent_module_inventory) FROM tagente, tagent_module_inventory WHERE tagente.disabled=0 AND tagent_module_inventory.id_agente = tagente.id_agente'); + + $interval_esc = db_escape_key_identifier('interval'); + + // Get the module lag + $server['module_lag'] = db_get_sql( + 'SELECT COUNT(tagent_module_inventory.id_agent_module_inventory) AS module_lag FROM tagente, tagent_module_inventory WHERE utimestamp > 0 AND tagent_module_inventory.id_agente = tagente.id_agente - AND tagent_module_inventory." . $interval_esc . " > 0 - AND tagente.server_name = '" . $server["name"] . "' - AND (UNIX_TIMESTAMP() - utimestamp) < (tagent_module_inventory." . $interval_esc . " * 10) - AND (UNIX_TIMESTAMP() - utimestamp) > tagent_module_inventory." . $interval_esc); - - // Get the lag - $server["lag"] = db_get_sql ("SELECT AVG(UNIX_TIMESTAMP() - utimestamp - tagent_module_inventory." . $interval_esc . ") + AND tagent_module_inventory.'.$interval_esc." > 0 + AND tagente.server_name = '".$server['name']."' + AND (UNIX_TIMESTAMP() - utimestamp) < (tagent_module_inventory.".$interval_esc.' * 10) + AND (UNIX_TIMESTAMP() - utimestamp) > tagent_module_inventory.'.$interval_esc + ); + + // Get the lag + $server['lag'] = db_get_sql( + 'SELECT AVG(UNIX_TIMESTAMP() - utimestamp - tagent_module_inventory.'.$interval_esc.') FROM tagente, tagent_module_inventory WHERE utimestamp > 0 AND tagent_module_inventory.id_agente = tagente.id_agente - AND tagent_module_inventory." . $interval_esc . " > 0 - AND tagente.server_name = '" . $server["name"] . "' - AND (UNIX_TIMESTAMP() - utimestamp) < (tagent_module_inventory." . $interval_esc . " * 10) - AND (UNIX_TIMESTAMP() - utimestamp) > tagent_module_inventory." . $interval_esc); - // Export server - } - else if ($server["server_type"] == SERVER_TYPE_EXPORT) { - - // Get modules exported by this server - $server["modules"] = db_get_sql ("SELECT COUNT(tagente_modulo.id_agente_modulo) FROM tagente, tagente_modulo, tserver_export WHERE tagente.disabled=0 AND tagente_modulo.id_agente = tagente.id_agente AND tagente_modulo.id_export = tserver_export.id AND tserver_export.id_export_server = " . $server["id_server"]); - - // Get total exported modules - $server["modules_total"] = db_get_sql ("SELECT COUNT(tagente_modulo.id_agente_modulo) FROM tagente, tagente_modulo WHERE tagente.disabled=0 AND tagente_modulo.id_agente = tagente.id_agente AND tagente_modulo.id_export != 0"); - - $server["lag"] = 0; - $server["module_lag"] = 0; - - } - // Recon server - else if ($server["server_type"] == SERVER_TYPE_RECON) { - - $server["name"] = ''.$server["name"].''; - - //Total jobs running on this recon server - $server["modules"] = db_get_sql ("SELECT COUNT(id_rt) + AND tagent_module_inventory.'.$interval_esc." > 0 + AND tagente.server_name = '".$server['name']."' + AND (UNIX_TIMESTAMP() - utimestamp) < (tagent_module_inventory.".$interval_esc.' * 10) + AND (UNIX_TIMESTAMP() - utimestamp) > tagent_module_inventory.'.$interval_esc + ); + // Export server + } else if ($server['server_type'] == SERVER_TYPE_EXPORT) { + // Get modules exported by this server + $server['modules'] = db_get_sql('SELECT COUNT(tagente_modulo.id_agente_modulo) FROM tagente, tagente_modulo, tserver_export WHERE tagente.disabled=0 AND tagente_modulo.id_agente = tagente.id_agente AND tagente_modulo.id_export = tserver_export.id AND tserver_export.id_export_server = '.$server['id_server']); + + // Get total exported modules + $server['modules_total'] = db_get_sql('SELECT COUNT(tagente_modulo.id_agente_modulo) FROM tagente, tagente_modulo WHERE tagente.disabled=0 AND tagente_modulo.id_agente = tagente.id_agente AND tagente_modulo.id_export != 0'); + + $server['lag'] = 0; + $server['module_lag'] = 0; + } + // Recon server + else if ($server['server_type'] == SERVER_TYPE_RECON) { + $server['name'] = ''.$server['name'].''; + + // Total jobs running on this recon server + $server['modules'] = db_get_sql( + 'SELECT COUNT(id_rt) FROM trecon_task - WHERE id_recon_server = ".$server["id_server"]); - - //Total recon jobs (all servers) - $server["modules_total"] = db_get_sql ("SELECT COUNT(status) FROM trecon_task"); - - //Lag (take average active time of all active tasks) - $server["module_lag"] = 0; - - switch ($config["dbtype"]) { - case "mysql": - $server["lag"] = db_get_sql ("SELECT UNIX_TIMESTAMP() - utimestamp from trecon_task WHERE UNIX_TIMESTAMP() > (utimestamp + interval_sweep) AND id_recon_server = ".$server["id_server"]); - - $server["module_lag"] = db_get_sql ("SELECT COUNT(id_rt) FROM trecon_task WHERE UNIX_TIMESTAMP() > (utimestamp + interval_sweep) AND id_recon_server = ".$server["id_server"]); - break; - case "postgresql": - $server["lag"] = db_get_sql ("SELECT ceil(date_part('epoch', CURRENT_TIMESTAMP)) - utimestamp from trecon_task WHERE ceil(date_part('epoch', CURRENT_TIMESTAMP)) > (utimestamp + interval_sweep) AND id_recon_server = ".$server["id_server"]); - - $server["module_lag"] = db_get_sql ("SELECT COUNT(id_rt) FROM trecon_task WHERE ceil(date_part('epoch', CURRENT_TIMESTAMP)) > (utimestamp + interval_sweep) AND id_recon_server = ".$server["id_server"]); - break; - case "oracle": - $server["lag"] = db_get_sql ("SELECT ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (" . SECONDS_1DAY . ")) - utimestamp from trecon_task WHERE ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (" . SECONDS_1DAY . ")) > (utimestamp + interval_sweep) AND id_recon_server = ".$server["id_server"]); - - $server["module_lag"] = db_get_sql ("SELECT COUNT(id_rt) FROM trecon_task WHERE ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (" . SECONDS_1DAY . ")) > (utimestamp + interval_sweep) AND id_recon_server = ".$server["id_server"]); - break; - } - } - else { - - // --------------------------------------------------------------- - // Data, Plugin, WMI, Network and Others - - $server["modules"] = db_get_sql ("SELECT count(tagente_estado.id_agente_modulo) FROM tagente_estado, tagente_modulo, tagente WHERE tagente.disabled=0 AND tagente_modulo.id_agente = tagente.id_agente AND tagente_modulo.disabled = 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_estado.running_by = ".$server["id_server"]); - - $server["modules_total"] = db_get_sql ("SELECT count(tagente_estado.id_agente_modulo) FROM tserver, tagente_estado, tagente_modulo, tagente WHERE tagente.disabled=0 AND tagente_modulo.id_agente = tagente.id_agente AND tagente_modulo.disabled = 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_estado.running_by = tserver.id_server AND tserver.server_type = ".$server["server_type"]); - - // Remote servers LAG Calculation (server_type != 0) - if ($server["server_type"] != 0) { - switch ($config["dbtype"]) { - case "mysql": - $result = db_get_row_sql ("SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, AVG(UNIX_TIMESTAMP() - utimestamp - current_interval) AS lag FROM tagente_estado, tagente_modulo, tagente + WHERE id_recon_server = '.$server['id_server'] + ); + + // Total recon jobs (all servers) + $server['modules_total'] = db_get_sql('SELECT COUNT(status) FROM trecon_task'); + + // Lag (take average active time of all active tasks) + $server['module_lag'] = 0; + + switch ($config['dbtype']) { + case 'mysql': + $server['lag'] = db_get_sql('SELECT UNIX_TIMESTAMP() - utimestamp from trecon_task WHERE UNIX_TIMESTAMP() > (utimestamp + interval_sweep) AND id_recon_server = '.$server['id_server']); + + $server['module_lag'] = db_get_sql('SELECT COUNT(id_rt) FROM trecon_task WHERE UNIX_TIMESTAMP() > (utimestamp + interval_sweep) AND id_recon_server = '.$server['id_server']); + break; + + case 'postgresql': + $server['lag'] = db_get_sql("SELECT ceil(date_part('epoch', CURRENT_TIMESTAMP)) - utimestamp from trecon_task WHERE ceil(date_part('epoch', CURRENT_TIMESTAMP)) > (utimestamp + interval_sweep) AND id_recon_server = ".$server['id_server']); + + $server['module_lag'] = db_get_sql("SELECT COUNT(id_rt) FROM trecon_task WHERE ceil(date_part('epoch', CURRENT_TIMESTAMP)) > (utimestamp + interval_sweep) AND id_recon_server = ".$server['id_server']); + break; + + case 'oracle': + $server['lag'] = db_get_sql("SELECT ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.")) - utimestamp from trecon_task WHERE ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.')) > (utimestamp + interval_sweep) AND id_recon_server = '.$server['id_server']); + + $server['module_lag'] = db_get_sql("SELECT COUNT(id_rt) FROM trecon_task WHERE ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.')) > (utimestamp + interval_sweep) AND id_recon_server = '.$server['id_server']); + break; + } + } else { + // --------------------------------------------------------------- + // Data, Plugin, WMI, Network and Others + $server['modules'] = db_get_sql('SELECT count(tagente_estado.id_agente_modulo) FROM tagente_estado, tagente_modulo, tagente WHERE tagente.disabled=0 AND tagente_modulo.id_agente = tagente.id_agente AND tagente_modulo.disabled = 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_estado.running_by = '.$server['id_server']); + + $server['modules_total'] = db_get_sql('SELECT count(tagente_estado.id_agente_modulo) FROM tserver, tagente_estado, tagente_modulo, tagente WHERE tagente.disabled=0 AND tagente_modulo.id_agente = tagente.id_agente AND tagente_modulo.disabled = 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_estado.running_by = tserver.id_server AND tserver.server_type = '.$server['server_type']); + + // Remote servers LAG Calculation (server_type != 0) + if ($server['server_type'] != 0) { + switch ($config['dbtype']) { + case 'mysql': + $result = db_get_row_sql( + 'SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, AVG(UNIX_TIMESTAMP() - utimestamp - current_interval) AS lag FROM tagente_estado, tagente_modulo, tagente WHERE utimestamp > 0 AND tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente AND tagente_modulo.disabled = 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND current_interval > 0 - AND running_by = ".$server["id_server"]." + AND running_by = '.$server['id_server'].' AND (UNIX_TIMESTAMP() - utimestamp) < ( current_interval * 10) - AND (UNIX_TIMESTAMP() - utimestamp) > current_interval"); - break; - case "postgresql": - $result = db_get_row_sql ("SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, AVG(ceil(date_part('epoch', CURRENT_TIMESTAMP)) - utimestamp - current_interval) AS lag FROM tagente_estado, tagente_modulo, tagente + AND (UNIX_TIMESTAMP() - utimestamp) > current_interval' + ); + break; + + case 'postgresql': + $result = db_get_row_sql( + "SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, AVG(ceil(date_part('epoch', CURRENT_TIMESTAMP)) - utimestamp - current_interval) AS lag FROM tagente_estado, tagente_modulo, tagente WHERE utimestamp > 0 AND tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente AND tagente_modulo.disabled = 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND current_interval > 0 - AND running_by = ".$server["id_server"]." + AND running_by = ".$server['id_server']." AND (ceil(date_part('epoch', CURRENT_TIMESTAMP)) - utimestamp) < ( current_interval * 10) - AND (ceil(date_part('epoch', CURRENT_TIMESTAMP)) - utimestamp) > current_interval"); - break; - case "oracle": - $result = db_get_row_sql ("SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, AVG(ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (" . SECONDS_1DAY . ")) - utimestamp - current_interval) AS lag FROM tagente_estado, tagente_modulo, tagente + AND (ceil(date_part('epoch', CURRENT_TIMESTAMP)) - utimestamp) > current_interval" + ); + break; + + case 'oracle': + $result = db_get_row_sql( + "SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, AVG(ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.')) - utimestamp - current_interval) AS lag FROM tagente_estado, tagente_modulo, tagente WHERE utimestamp > 0 AND tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente AND tagente_modulo.disabled = 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND current_interval > 0 - AND running_by = ".$server["id_server"]." - AND (ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (" . SECONDS_1DAY . ")) - utimestamp) < ( current_interval * 10) - AND (ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) - utimestamp) * (" . SECONDS_1DAY . ")) > current_interval"); - break; - } - } - else { - // Local/Dataserver server LAG calculation: - switch ($config["dbtype"]) { - case "mysql": - $result = db_get_row_sql ("SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, AVG(UNIX_TIMESTAMP() - utimestamp - current_interval) AS lag FROM tagente_estado, tagente_modulo, tagente + AND running_by = '.$server['id_server']." + AND (ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.")) - utimestamp) < ( current_interval * 10) + AND (ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) - utimestamp) * (".SECONDS_1DAY.')) > current_interval' + ); + break; + } + } else { + // Local/Dataserver server LAG calculation: + switch ($config['dbtype']) { + case 'mysql': + $result = db_get_row_sql( + 'SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, AVG(UNIX_TIMESTAMP() - utimestamp - current_interval) AS lag FROM tagente_estado, tagente_modulo, tagente WHERE utimestamp > 0 AND tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente @@ -635,11 +703,14 @@ function servers_get_info ($id_server = -1) { AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND current_interval > 0 AND (UNIX_TIMESTAMP() - utimestamp) < ( current_interval * 10) - AND running_by = ".$server["id_server"]." - AND (UNIX_TIMESTAMP() - utimestamp) > (current_interval * 1.1)"); - break; - case "postgresql": - $result = db_get_row_sql ("SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, AVG(ceil(date_part('epoch', CURRENT_TIMESTAMP)) - utimestamp - current_interval) AS lag FROM tagente_estado, tagente_modulo, tagente + AND running_by = '.$server['id_server'].' + AND (UNIX_TIMESTAMP() - utimestamp) > (current_interval * 1.1)' + ); + break; + + case 'postgresql': + $result = db_get_row_sql( + "SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, AVG(ceil(date_part('epoch', CURRENT_TIMESTAMP)) - utimestamp - current_interval) AS lag FROM tagente_estado, tagente_modulo, tagente WHERE utimestamp > 0 AND tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente @@ -648,11 +719,14 @@ function servers_get_info ($id_server = -1) { AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND current_interval > 0 AND (ceil(date_part('epoch', CURRENT_TIMESTAMP)) - utimestamp) < ( current_interval * 10) - AND running_by = ".$server["id_server"]." - AND (ceil(date_part('epoch', CURRENT_TIMESTAMP)) - utimestamp) > (current_interval * 1.1)"); - break; - case "oracle": - $result = db_get_row_sql ("SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, AVG(ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (" . SECONDS_1DAY . ")) - utimestamp - current_interval) AS lag FROM tagente_estado, tagente_modulo, tagente + AND running_by = ".$server['id_server']." + AND (ceil(date_part('epoch', CURRENT_TIMESTAMP)) - utimestamp) > (current_interval * 1.1)" + ); + break; + + case 'oracle': + $result = db_get_row_sql( + "SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, AVG(ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.")) - utimestamp - current_interval) AS lag FROM tagente_estado, tagente_modulo, tagente WHERE utimestamp > 0 AND tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente @@ -660,52 +734,51 @@ function servers_get_info ($id_server = -1) { AND tagente_modulo.id_tipo_modulo < 5 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND current_interval > 0 - AND (ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (" . SECONDS_1DAY . ")) - utimestamp) < ( current_interval * 10) - AND running_by = ".$server["id_server"]." - AND (ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (" . SECONDS_1DAY . ")) - utimestamp) > (current_interval * 1.1)"); - break; - } - } - - // Lag over current_interval * 2 is not lag, it's a timed out module - - if (!empty ($result["lag"])) { - $server["lag"] = $result["lag"]; - } - - if (!empty ($result["module_lag"])) { - $server["module_lag"] = $result["module_lag"]; - } - } - } // Take data for realtime mode - - if (isset($server["module_lag"])) - $server["lag_txt"] = - ($server["lag"] == 0 ? - '-' - : - human_time_description_raw($server["lag"])) . " / " . $server["module_lag"]; - else - $server["lag_txt"] = ""; - - if ($server["modules_total"] > 0) { - $server["load"] = round ($server["modules"] / $server["modules_total"] * 100); - } - else { - $server["load"] = 0; - } - - //Push the raw data on the return stack - $return[$server["id_server"]] = $server; - } // Main foreach - - return $return; + AND (ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.')) - utimestamp) < ( current_interval * 10) + AND running_by = '.$server['id_server']." + AND (ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.')) - utimestamp) > (current_interval * 1.1)' + ); + break; + } + } + + // Lag over current_interval * 2 is not lag, it's a timed out module + if (!empty($result['lag'])) { + $server['lag'] = $result['lag']; + } + + if (!empty($result['module_lag'])) { + $server['module_lag'] = $result['module_lag']; + } + } + } //end if + + if (isset($server['module_lag'])) { + $server['lag_txt'] = ($server['lag'] == 0 ? '-' : human_time_description_raw($server['lag'])).' / '.$server['module_lag']; + } else { + $server['lag_txt'] = ''; + } + + if ($server['modules_total'] > 0) { + $server['load'] = round(($server['modules'] / $server['modules_total'] * 100)); + } else { + $server['load'] = 0; + } + + // Push the raw data on the return stack + $return[$server['id_server']] = $server; + } //end foreach + + return $return; } -function servers_get_servers_type($type) { - return db_get_all_rows_filter('tserver', array('server_type' => $type)); + +function servers_get_servers_type($type) +{ + return db_get_all_rows_filter('tserver', ['server_type' => $type]); } + /** * Get the server name. * @@ -713,41 +786,46 @@ function servers_get_servers_type($type) { * * @return string Name of the given server */ -function servers_get_name ($id_server) { - return (string) db_get_value ('name', 'tserver', 'id_server', (int) $id_server); +function servers_get_name($id_server) +{ + return (string) db_get_value('name', 'tserver', 'id_server', (int) $id_server); } + /** * Get the presence of .conf and .md5 into remote_config dir - * + * * @param string Agent name - * + * * @return true if files exist and are writable */ -function servers_check_remote_config ($server_name) { - global $config; - - $server_md5 = md5 ($server_name, false); - - $filenames = array(); - $filenames['md5'] = io_safe_output($config["remote_config"]) - . "/md5/" . $server_md5 . ".srv.md5"; - $filenames['conf'] = io_safe_output($config["remote_config"]) - . "/conf/" . $server_md5 . ".srv.conf"; - - if (! isset ($filenames['conf'])) - return false; - if (! isset ($filenames['md5'])) - return false; - - return (file_exists ($filenames['conf']) - && is_writable ($filenames['conf']) - && file_exists ($filenames['md5']) - && is_writable ($filenames['md5'])); +function servers_check_remote_config($server_name) +{ + global $config; + + $server_md5 = md5($server_name, false); + + $filenames = []; + $filenames['md5'] = io_safe_output($config['remote_config']).'/md5/'.$server_md5.'.srv.md5'; + $filenames['conf'] = io_safe_output($config['remote_config']).'/conf/'.$server_md5.'.srv.conf'; + + if (! isset($filenames['conf'])) { + return false; + } + + if (! isset($filenames['md5'])) { + return false; + } + + return (file_exists($filenames['conf']) + && is_writable($filenames['conf']) + && file_exists($filenames['md5']) + && is_writable($filenames['md5'])); } + /** * Return a string containing image tag for a given target id (server) * TODO: Make this print_servertype_icon and move to functions_ui.php. Make XHTML compatible. Make string translatable @@ -758,72 +836,87 @@ function servers_check_remote_config ($server_name) { * * @return string Fully formatted IMG HTML tag with icon */ -function servers_show_type ($id) { - global $config; - - switch ($id) { - case 1: - return html_print_image("images/database.png", true, array("title" => get_product_name() . " Data server")); - break; - case 2: - return html_print_image("images/network.png", true, array("title" => get_product_name() . " Network server")); - break; - case 4: - return html_print_image("images/plugin.png", true, array("title" => get_product_name() . " Plugin server")); - break; - case 5: - return html_print_image("images/chart_bar.png", true, array("title" => get_product_name() . " Prediction server")); - break; - case 6: - return html_print_image("images/wmi.png", true, array("title" => get_product_name() . " WMI server")); - break; - case 7: - return html_print_image("images/server_web.png", true, array("title" => get_product_name() . " WEB server")); - break; - case 8: - return html_print_image("images/module-wux.png", true, array("title" => get_product_name() . " WUX server")); - break; - default: - return "--"; - break; - } +function servers_show_type($id) +{ + global $config; + + switch ($id) { + case 1: + return html_print_image('images/database.png', true, ['title' => get_product_name().' Data server']); + + break; + case 2: + return html_print_image('images/network.png', true, ['title' => get_product_name().' Network server']); + + break; + case 4: + return html_print_image('images/plugin.png', true, ['title' => get_product_name().' Plugin server']); + + break; + case 5: + return html_print_image('images/chart_bar.png', true, ['title' => get_product_name().' Prediction server']); + + break; + case 6: + return html_print_image('images/wmi.png', true, ['title' => get_product_name().' WMI server']); + + break; + case 7: + return html_print_image('images/server_web.png', true, ['title' => get_product_name().' WEB server']); + + break; + case 8: + return html_print_image('images/module-wux.png', true, ['title' => get_product_name().' WUX server']); + + break; + default: + return '--'; + break; + } } + /** * Get the numbers of servers up. * * This check assumes that server_keepalive should be at least 15 minutes. * - * @return int The number of servers alive. + * @return integer The number of servers alive. */ -function servers_check_status () { - global $config; - - switch ($config["dbtype"]) { - case "mysql": - $sql = "SELECT COUNT(id_server) +function servers_check_status() +{ + global $config; + + switch ($config['dbtype']) { + case 'mysql': + $sql = 'SELECT COUNT(id_server) FROM tserver WHERE status = 1 - AND keepalive > NOW() - INTERVAL server_keepalive*2 SECOND"; - break; - case "postgresql": - $sql = "SELECT COUNT(id_server) + AND keepalive > NOW() - INTERVAL server_keepalive*2 SECOND'; + break; + + case 'postgresql': + $sql = "SELECT COUNT(id_server) FROM tserver WHERE status = 1 AND keepalive > NOW() - INTERVAL 'server_keepalive*2 SECOND'"; - break; - case "oracle": - $sql = "SELECT COUNT(id_server) + break; + + case 'oracle': + $sql = "SELECT COUNT(id_server) FROM tserver WHERE status = 1 AND keepalive > systimestamp - INTERVAL 'server_keepalive*2' SECOND"; - break; - } - $status = (int) db_get_sql ($sql); //Cast as int will assure a number value - // This function should just ack of server down, not set it down. - return $status; + break; + } + + $status = (int) db_get_sql($sql); + // Cast as int will assure a number value + // This function should just ack of server down, not set it down. + return $status; } + /** * @deprecated use servers_get_info instead * Get statistical information for a given server @@ -832,8 +925,66 @@ function servers_check_status () { * * @return array Server info array */ -function servers_get_status ($id_server) { - $serverinfo = servers_get_info ($id_server); - return $serverinfo[$id_server]; +function servers_get_status($id_server) +{ + $serverinfo = servers_get_info($id_server); + return $serverinfo[$id_server]; +} + + +/** + * Return server name based on identifier. + * + * @param integer $server Server identifier. + * + * @return string Server name + */ +function get_server_string_name(int $server) +{ + switch ($server) { + case SERVER_TYPE_DATA: + return __('Data server'); + + case SERVER_TYPE_NETWORK: + return __('Network server'); + + case SERVER_TYPE_SNMP: + return __('SNMP server'); + + case SERVER_TYPE_ENTERPRISE_ICMP: + return __('Enterprise ICMP server'); + + case SERVER_TYPE_ENTERPRISE_SNMP: + return __('Enterprise SNMP server'); + + case SERVER_TYPE_PLUGIN: + return __('Plugin server'); + + case SERVER_TYPE_PREDICTION: + return __('Prediction Server'); + + case SERVER_TYPE_WMI: + return __('WMI server'); + + case SERVER_TYPE_WEB: + return __('Web server'); + + case SERVER_TYPE_EXPORT: + return __('Export server'); + + case SERVER_TYPE_INVENTORY: + return __('Inventory server'); + + case SERVER_TYPE_EVENT: + return __('Event server'); + + case SERVER_TYPE_RECON: + return __('Discovery server'); + + case SERVER_TYPE_SYSLOG: + return __('Syslog server'); + + default: + return __('N/A'); + } } -?>