mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-31 01:35:36 +02:00
Improvements on the performance for the metaconsole
This commit is contained in:
parent
90d5d3cae3
commit
311fd99811
@ -185,12 +185,6 @@ if ($search_agents && ((!defined('METACONSOLE')) || $force_local)) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
elseif ($search_agents && ($config['metaconsole'] == 1) && defined('METACONSOLE')) {
|
elseif ($search_agents && ($config['metaconsole'] == 1) && defined('METACONSOLE')) {
|
||||||
$servers = db_get_all_rows_sql ("SELECT *
|
|
||||||
FROM tmetaconsole_setup
|
|
||||||
WHERE disabled = 0");
|
|
||||||
if (!isset($servers)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$id_agent = (int) get_parameter ('id_agent');
|
$id_agent = (int) get_parameter ('id_agent');
|
||||||
$string = (string) get_parameter ('q'); /* q is what autocomplete plugin gives */
|
$string = (string) get_parameter ('q'); /* q is what autocomplete plugin gives */
|
||||||
@ -204,7 +198,7 @@ elseif ($search_agents && ($config['metaconsole'] == 1) && defined('METACONSOLE'
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$filter = array ();
|
$filter = array();
|
||||||
|
|
||||||
if ($id_group != -1) {
|
if ($id_group != -1) {
|
||||||
if ($id_group == 0) {
|
if ($id_group == 0) {
|
||||||
@ -217,90 +211,63 @@ elseif ($search_agents && ($config['metaconsole'] == 1) && defined('METACONSOLE'
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = array();
|
if (!empty($id_agent)) {
|
||||||
foreach ($servers as $server) {
|
$filter['id_agente'] = $id_agent;
|
||||||
if (metaconsole_load_external_db ($server) != NOERR) {
|
}
|
||||||
continue;
|
|
||||||
}
|
if (!empty($string)) {
|
||||||
|
$search_filters = array();
|
||||||
|
|
||||||
//Get agents for only the name.
|
//Get agents for only the name.
|
||||||
$filter_agents = $filter;
|
|
||||||
switch ($config['dbtype']) {
|
switch ($config['dbtype']) {
|
||||||
case "mysql":
|
case "mysql":
|
||||||
$filter_agents[] = '(nombre COLLATE utf8_general_ci LIKE "%'.$string.'%")';
|
//Get agents for only the name.
|
||||||
|
$search_filters[] = "(nombre COLLATE utf8_general_ci LIKE '%$string%')";
|
||||||
|
//Get agents for only the address
|
||||||
|
$search_filters[] = "(direccion LIKE '%$string%')";
|
||||||
|
//Get agents for only the description
|
||||||
|
$search_filters[] = "(comentarios LIKE '%$string%')";
|
||||||
break;
|
break;
|
||||||
case "postgresql":
|
case "postgresql":
|
||||||
$filter_agents[] = '(nombre LIKE \'%'.$string.'%\')';
|
//Get agents for only the name.
|
||||||
|
$search_filters[] = "(nombre LIKE '%$string%')";
|
||||||
|
//Get agents for only the address
|
||||||
|
$search_filters[] = "(direccion LIKE '%$string%')";
|
||||||
|
//Get agents for only the description
|
||||||
|
$search_filters[] = "(comentarios LIKE '%$string%')";
|
||||||
break;
|
break;
|
||||||
case "oracle":
|
case "oracle":
|
||||||
$filter_agents[] = '(UPPER(nombre) LIKE UPPER(\'%'.$string.'%\')';
|
//Get agents for only the name.
|
||||||
|
$search_filters[] = "(UPPER(nombre) LIKE UPPER('%$string%')";
|
||||||
|
//Get agents for only the address
|
||||||
|
$search_filters[] = "(UPPER(direccion) LIKE UPPER('%$string%'))";
|
||||||
|
//Get agents for only the description
|
||||||
|
$search_filters[] = "(UPPER(comentarios) LIKE UPPER('%$string%'))";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$agents = agents_get_agents($filter_agents, array ('id_agente', 'nombre', 'direccion'));
|
|
||||||
if ($agents !== false) {
|
|
||||||
foreach ($agents as $agent) {
|
|
||||||
$data[] = array('id' => $agent['id_agente'],
|
|
||||||
'name' => io_safe_output($agent['nombre']),
|
|
||||||
'ip' => io_safe_output($agent['direccion']),
|
|
||||||
'filter' => 'agent',
|
|
||||||
'id_server' => $server['id']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Get agents for only the address
|
$search_filters_str = implode($search_filters, ' OR ');
|
||||||
$filter_address = $filter;
|
|
||||||
switch ($config['dbtype']) {
|
|
||||||
case "mysql":
|
|
||||||
$filter_address[] = '(nombre COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND direccion LIKE "%'.$string.'%")';
|
|
||||||
break;
|
|
||||||
case "postgresql":
|
|
||||||
$filter_address[] = '(nombre NOT LIKE \'%'.$string.'%\' AND direccion LIKE \'%'.$string.'%\')';
|
|
||||||
break;
|
|
||||||
case "oracle":
|
|
||||||
$filter_address[] = '(UPPER(nombre) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(direccion) LIKE UPPER(\'%'.$string.'%\'))';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
$agents = agents_get_agents($filter_address, array ('id_agente', 'nombre', 'direccion'));
|
|
||||||
if ($agents !== false) {
|
|
||||||
foreach ($agents as $agent) {
|
|
||||||
$data[] = array('id' => $agent['id_agente'],
|
|
||||||
'name' => io_safe_output($agent['nombre']),
|
|
||||||
'ip' => io_safe_output($agent['direccion']),
|
|
||||||
'filter' => 'address',
|
|
||||||
'id_server' => $server['id']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Get agents for only the description
|
if (!empty($search_filters_str))
|
||||||
$filter_description = $filter;
|
$filter[] = "($search_filters_str)";
|
||||||
switch ($config['dbtype']) {
|
}
|
||||||
case "mysql":
|
|
||||||
$filter_description[] =
|
|
||||||
'(nombre COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND direccion NOT LIKE "%'.$string.'%" AND comentarios LIKE "%'.$string.'%")';
|
|
||||||
break;
|
|
||||||
case "postgresql":
|
|
||||||
$filter_description[] =
|
|
||||||
'(nombre NOT LIKE \'%'.$string.'%\' AND direccion NOT LIKE \'%'.$string.'%\' AND comentarios LIKE \'%'.$string.'%\')';
|
|
||||||
break;
|
|
||||||
case "oracle":
|
|
||||||
$filter_description[] =
|
|
||||||
'(UPPER(nombre) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(direccion) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(comentarios) LIKE UPPER(\'%'.$string.'%\'))';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
$agents = agents_get_agents($filter_description,
|
|
||||||
array ('id_agente', 'nombre', 'direccion'));
|
|
||||||
if ($agents !== false) {
|
|
||||||
foreach ($agents as $agent) {
|
|
||||||
$data[] = array('id' => $agent['id_agente'],
|
|
||||||
'name' => io_safe_output($agent['nombre']),
|
|
||||||
'ip' => io_safe_output($agent['direccion']),
|
|
||||||
'filter' => 'description',
|
|
||||||
'id_server' => $server['id']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//Restore db connection
|
|
||||||
metaconsole_restore_db();
|
|
||||||
|
|
||||||
|
$fields = array(
|
||||||
|
'id_tagente AS id_agente', 'nombre',
|
||||||
|
'direccion', 'id_tmetaconsole_setup AS id_server'
|
||||||
|
);
|
||||||
|
$agents = db_get_all_rows_filter('tmetaconsole_agent', $filter, $fields);
|
||||||
|
|
||||||
|
$data = array();
|
||||||
|
|
||||||
|
if ($agents !== false) {
|
||||||
|
foreach ($agents as $agent) {
|
||||||
|
$data[] = array('id' => $agent['id_agente'],
|
||||||
|
'name' => io_safe_output($agent['nombre']),
|
||||||
|
'ip' => io_safe_output($agent['direccion']),
|
||||||
|
'filter' => 'description',
|
||||||
|
'id_server' => $agent['id_server']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
echo json_encode($data);
|
echo json_encode($data);
|
||||||
|
@ -423,6 +423,9 @@ if (is_ajax ()) {
|
|||||||
($filter != '' ? $filter : false), $indexed);
|
($filter != '' ? $filter : false), $indexed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty($agent_modules))
|
||||||
|
$agent_modules = array();
|
||||||
|
|
||||||
foreach ($agent_modules as $key => $module) {
|
foreach ($agent_modules as $key => $module) {
|
||||||
$agent_modules[$key]['nombre'] = io_safe_output($module['nombre']);
|
$agent_modules[$key]['nombre'] = io_safe_output($module['nombre']);
|
||||||
}
|
}
|
||||||
@ -438,28 +441,24 @@ if (is_ajax ()) {
|
|||||||
|
|
||||||
if ($get_agent_status_tooltip) {
|
if ($get_agent_status_tooltip) {
|
||||||
$id_agent = (int) get_parameter ('id_agent');
|
$id_agent = (int) get_parameter ('id_agent');
|
||||||
$metaconsole = (bool)get_parameter('metaconsole', false);
|
$metaconsole = (bool) get_parameter('metaconsole', false);
|
||||||
$id_server = (int)get_parameter('id_server', 0); //Metaconsole
|
$id_server = (int) get_parameter('id_server', 0); //Metaconsole
|
||||||
|
|
||||||
$server = null;
|
$server = null;
|
||||||
if ($metaconsole) {
|
if ($metaconsole) {
|
||||||
$strict_user = (bool) db_get_value('strict_acl', 'tusuario', 'id_user', $config['id_user']);
|
$filter = array();
|
||||||
$server = db_get_row('tmetaconsole_setup', 'id', $id_server);
|
if (!empty($id_agent))
|
||||||
|
$filter['id_tagente'] = $id_agent;
|
||||||
|
if (!empty($id_server))
|
||||||
|
$filter['id_tmetaconsole_setup'] = $id_server;
|
||||||
|
|
||||||
if (metaconsole_connect($server) != NOERR) {
|
$agent = db_get_row_filter('tmetaconsole_agent', $filter);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$agent = db_get_row ('tagente', 'id_agente', $id_agent);
|
|
||||||
|
|
||||||
metaconsole_restore_db();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$agent = db_get_row ('tagente', 'id_agente', $id_agent);
|
$agent = db_get_row ('tagente', 'id_agente', $id_agent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($agent === false) { return; }
|
||||||
|
|
||||||
|
|
||||||
echo '<h3>'.$agent['nombre'].'</h3>';
|
echo '<h3>'.$agent['nombre'].'</h3>';
|
||||||
echo '<strong>'.__('Main IP').':</strong> '.$agent['direccion'].'<br />';
|
echo '<strong>'.__('Main IP').':</strong> '.$agent['direccion'].'<br />';
|
||||||
@ -474,130 +473,91 @@ if (is_ajax ()) {
|
|||||||
|
|
||||||
echo '<strong>'.__('Last contact').':</strong> '.human_time_comparation($agent['ultimo_contacto']).'<br />';
|
echo '<strong>'.__('Last contact').':</strong> '.human_time_comparation($agent['ultimo_contacto']).'<br />';
|
||||||
echo '<strong>'.__('Last remote contact').':</strong> '.human_time_comparation($agent['ultimo_contacto_remoto']).'<br />';
|
echo '<strong>'.__('Last remote contact').':</strong> '.human_time_comparation($agent['ultimo_contacto_remoto']).'<br />';
|
||||||
|
|
||||||
# Fix : Only show agents with module with tags of user profile
|
|
||||||
$_user_tags = tags_get_user_tags($config['id_user'], 'RR');
|
|
||||||
|
|
||||||
$_sql_post = '';
|
if (!$metaconsole) {
|
||||||
if (is_array($_user_tags) && !empty($_user_tags)) {
|
# Fix : Only show agents with module with tags of user profile
|
||||||
|
$_user_tags = tags_get_user_tags($config['id_user'], 'RR');
|
||||||
|
|
||||||
$_tags = implode(',', array_keys($_user_tags));
|
$_sql_post = '';
|
||||||
|
if (is_array($_user_tags) && !empty($_user_tags)) {
|
||||||
$_sql_post .= ' AND tagente_modulo.id_agente_modulo IN (SELECT a.id_agente_modulo FROM tagente_modulo a, ttag_module b WHERE a.id_agente_modulo=b.id_agente_modulo AND b.id_tag IN (' . $_tags . ')) ';
|
|
||||||
|
$_tags = implode(',', array_keys($_user_tags));
|
||||||
}
|
|
||||||
|
$_sql_post .= ' AND tagente_modulo.id_agente_modulo IN (SELECT a.id_agente_modulo FROM tagente_modulo a, ttag_module b WHERE a.id_agente_modulo=b.id_agente_modulo AND b.id_tag IN (' . $_tags . ')) ';
|
||||||
$sql = sprintf ('SELECT tagente_modulo.descripcion,
|
|
||||||
tagente_modulo.nombre
|
|
||||||
FROM tagente_estado, tagente_modulo
|
|
||||||
WHERE tagente_modulo.id_agente = %d
|
|
||||||
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
|
|
||||||
AND tagente_modulo.disabled = 0
|
|
||||||
AND tagente_estado.estado = 1', $id_agent);
|
|
||||||
|
|
||||||
$sql .= $_sql_post;
|
|
||||||
|
|
||||||
if ($metaconsole) {
|
|
||||||
if (metaconsole_connect($server) != NOERR) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$sql = sprintf ('SELECT tagente_modulo.descripcion,
|
||||||
|
tagente_modulo.nombre
|
||||||
|
FROM tagente_estado, tagente_modulo
|
||||||
|
WHERE tagente_modulo.id_agente = %d
|
||||||
|
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
|
||||||
|
AND tagente_modulo.disabled = 0
|
||||||
|
AND tagente_estado.estado = 1', $id_agent);
|
||||||
|
|
||||||
|
$sql .= $_sql_post;
|
||||||
|
|
||||||
$bad_modules = db_get_all_rows_sql ($sql);
|
$bad_modules = db_get_all_rows_sql ($sql);
|
||||||
|
|
||||||
metaconsole_restore_db();
|
$sql = sprintf ('SELECT COUNT(*)
|
||||||
}
|
FROM tagente_modulo
|
||||||
else {
|
WHERE id_agente = %d
|
||||||
$bad_modules = db_get_all_rows_sql ($sql);
|
AND disabled = 0', $id_agent);
|
||||||
}
|
|
||||||
|
|
||||||
$sql = sprintf ('SELECT COUNT(*)
|
|
||||||
FROM tagente_modulo
|
|
||||||
WHERE id_agente = %d
|
|
||||||
AND disabled = 0', $id_agent);
|
|
||||||
if ($metaconsole) {
|
|
||||||
if (metaconsole_connect($server) != NOERR) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$total_modules = db_get_sql ($sql);
|
$total_modules = db_get_sql ($sql);
|
||||||
|
|
||||||
metaconsole_restore_db();
|
if ($bad_modules === false)
|
||||||
}
|
$size_bad_modules = 0;
|
||||||
else {
|
else
|
||||||
$total_modules = db_get_sql ($sql);
|
$size_bad_modules = sizeof ($bad_modules);
|
||||||
}
|
|
||||||
|
|
||||||
if ($bad_modules === false)
|
|
||||||
$size_bad_modules = 0;
|
|
||||||
else
|
|
||||||
$size_bad_modules = sizeof ($bad_modules);
|
|
||||||
|
|
||||||
// Modules down
|
|
||||||
if ($size_bad_modules > 0 && (!$metaconsole || !$strict_user)) {
|
|
||||||
echo '<strong>'.__('Monitors down').':</strong> '.$size_bad_modules.' / '.$total_modules;
|
|
||||||
echo '<ul>';
|
|
||||||
foreach ($bad_modules as $module) {
|
|
||||||
echo '<li>';
|
|
||||||
echo ui_print_truncate_text($module['nombre'], 'module_small');
|
|
||||||
echo '</li>';
|
|
||||||
}
|
|
||||||
echo '</ul>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Alerts (if present)
|
|
||||||
$sql = sprintf ('SELECT COUNT(talert_template_modules.id)
|
|
||||||
FROM talert_template_modules, tagente_modulo, tagente
|
|
||||||
WHERE tagente.id_agente = %d
|
|
||||||
AND tagente.disabled = 0
|
|
||||||
AND tagente.id_agente = tagente_modulo.id_agente
|
|
||||||
AND tagente_modulo.disabled = 0
|
|
||||||
AND tagente_modulo.id_agente_modulo = talert_template_modules.id_agent_module
|
|
||||||
AND talert_template_modules.times_fired > 0 ',
|
|
||||||
$id_agent);
|
|
||||||
if ($metaconsole) {
|
|
||||||
if (metaconsole_connect($server) != NOERR) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$alert_modules = db_get_sql ($sql);
|
// Modules down
|
||||||
|
if ($size_bad_modules > 0) {
|
||||||
metaconsole_restore_db();
|
echo '<strong>'.__('Monitors down').':</strong> '.$size_bad_modules.' / '.$total_modules;
|
||||||
}
|
echo '<ul>';
|
||||||
else {
|
foreach ($bad_modules as $module) {
|
||||||
$alert_modules = db_get_sql ($sql);
|
echo '<li>';
|
||||||
}
|
echo ui_print_truncate_text($module['nombre'], 'module_small');
|
||||||
|
echo '</li>';
|
||||||
if ($alert_modules > 0 && (!$metaconsole || !$strict_user)) {
|
|
||||||
$sql = sprintf ('SELECT tagente_modulo.nombre, talert_template_modules.last_fired
|
|
||||||
FROM talert_template_modules, tagente_modulo, tagente
|
|
||||||
WHERE tagente.id_agente = %d
|
|
||||||
AND tagente.disabled = 0
|
|
||||||
AND tagente.id_agente = tagente_modulo.id_agente
|
|
||||||
AND tagente_modulo.disabled = 0
|
|
||||||
AND tagente_modulo.id_agente_modulo = talert_template_modules.id_agent_module
|
|
||||||
AND talert_template_modules.times_fired > 0 ',
|
|
||||||
$id_agent);
|
|
||||||
if ($metaconsole) {
|
|
||||||
if (metaconsole_connect($server) != NOERR) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
echo '</ul>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Alerts (if present)
|
||||||
|
$sql = sprintf ('SELECT COUNT(talert_template_modules.id)
|
||||||
|
FROM talert_template_modules, tagente_modulo, tagente
|
||||||
|
WHERE tagente.id_agente = %d
|
||||||
|
AND tagente.disabled = 0
|
||||||
|
AND tagente.id_agente = tagente_modulo.id_agente
|
||||||
|
AND tagente_modulo.disabled = 0
|
||||||
|
AND tagente_modulo.id_agente_modulo = talert_template_modules.id_agent_module
|
||||||
|
AND talert_template_modules.times_fired > 0 ',
|
||||||
|
$id_agent);
|
||||||
|
|
||||||
|
$alert_modules = (int) db_get_sql ($sql);
|
||||||
|
|
||||||
|
if ($alert_modules > 0) {
|
||||||
|
$sql = sprintf ('SELECT tagente_modulo.nombre, talert_template_modules.last_fired
|
||||||
|
FROM talert_template_modules, tagente_modulo, tagente
|
||||||
|
WHERE tagente.id_agente = %d
|
||||||
|
AND tagente.disabled = 0
|
||||||
|
AND tagente.id_agente = tagente_modulo.id_agente
|
||||||
|
AND tagente_modulo.disabled = 0
|
||||||
|
AND tagente_modulo.id_agente_modulo = talert_template_modules.id_agent_module
|
||||||
|
AND talert_template_modules.times_fired > 0 ',
|
||||||
|
$id_agent);
|
||||||
|
|
||||||
$alerts = db_get_all_rows_sql ($sql);
|
$alerts = db_get_all_rows_sql ($sql);
|
||||||
|
|
||||||
metaconsole_restore_db();
|
echo '<strong>'.__('Alerts fired').':</strong>';
|
||||||
|
echo "<ul>";
|
||||||
|
foreach ($alerts as $alert_item) {
|
||||||
|
echo '<li>';
|
||||||
|
echo ui_print_truncate_text($alert_item['nombre']).' -> ';
|
||||||
|
echo human_time_comparation($alert_item['last_fired']);
|
||||||
|
echo '</li>';
|
||||||
|
}
|
||||||
|
echo '</ul>';
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
$alerts = db_get_all_rows_sql ($sql);
|
|
||||||
}
|
|
||||||
echo '<strong>'.__('Alerts fired').':</strong>';
|
|
||||||
echo "<ul>";
|
|
||||||
foreach ($alerts as $alert_item) {
|
|
||||||
echo '<li>';
|
|
||||||
echo ui_print_truncate_text($alert_item['nombre']).' -> ';
|
|
||||||
echo human_time_comparation($alert_item['last_fired']);
|
|
||||||
echo '</li>';
|
|
||||||
}
|
|
||||||
echo '</ul>';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user