wip reports alert actions
This commit is contained in:
parent
e3d6d52c14
commit
a02c8a7988
|
@ -1702,30 +1702,12 @@ $class = 'databox filters';
|
|||
<td class="bolder"><?php echo __('Agents'); ?></td>
|
||||
<td>
|
||||
<?php
|
||||
$all_agent_log = agents_get_agents(['id_grupo' => $group], ['id_agente', 'alias']);
|
||||
foreach ($all_agent_log as $key => $value) {
|
||||
$agents2[$value['id_agente']] = $value['alias'];
|
||||
}
|
||||
|
||||
if ((empty($agents2)) || $agents2 == -1) {
|
||||
$agents = [];
|
||||
}
|
||||
|
||||
$agents_select = [];
|
||||
if (is_array($id_agents) || is_object($id_agents)) {
|
||||
foreach ($id_agents as $id) {
|
||||
foreach ($agents2 as $key => $a) {
|
||||
if ($key == (int) $id) {
|
||||
$agents_select[$key] = $key;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$all_agents = agents_get_agents_selected($group);
|
||||
|
||||
html_print_select(
|
||||
$agents2,
|
||||
$all_agents,
|
||||
'id_agents2[]',
|
||||
$agents_select,
|
||||
$id_agents,
|
||||
$script = '',
|
||||
'',
|
||||
0,
|
||||
|
@ -1789,39 +1771,20 @@ $class = 'databox filters';
|
|||
<?php
|
||||
if (empty($id_agents) === true) {
|
||||
$all_modules = [];
|
||||
$modules_select = [];
|
||||
$idAgentModule = [];
|
||||
} else {
|
||||
$all_modules = db_get_all_rows_sql(
|
||||
sprintf(
|
||||
'SELECT nombre as `name`,
|
||||
id_agente_modulo as id
|
||||
FROM tagente_modulo
|
||||
WHERE id_agente IN (%s)',
|
||||
implode(',', array_values($id_agents))
|
||||
)
|
||||
);
|
||||
|
||||
$all_modules = array_reduce(
|
||||
$all_modules,
|
||||
function ($carry, $item) {
|
||||
$carry[$item['id']] = $item['name'];
|
||||
return $carry;
|
||||
},
|
||||
[]
|
||||
);
|
||||
|
||||
$all_modules = array_unique($all_modules);
|
||||
|
||||
$modules_select = get_same_modules(
|
||||
array_values($id_agents),
|
||||
array_values($idAgentModule)
|
||||
$all_modules = get_modules_agents(
|
||||
$modulegroup,
|
||||
$id_agents,
|
||||
!$selection_a_m,
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
html_print_select(
|
||||
$all_modules,
|
||||
'module[]',
|
||||
$modules_select,
|
||||
$idAgentModule,
|
||||
$script = '',
|
||||
'',
|
||||
0,
|
||||
|
@ -1830,7 +1793,7 @@ $class = 'databox filters';
|
|||
true,
|
||||
'',
|
||||
false,
|
||||
'min-width: 500px; max-height: 100px',
|
||||
'min-width: 500px; max-width: 500px; max-height: 100px',
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
|
@ -4593,7 +4556,8 @@ $(document).ready (function () {
|
|||
"get_modules_group_json" : 1,
|
||||
"id_module_group" : this.value,
|
||||
"id_agents" : $("#id_agents2").val(),
|
||||
"selection" : $("#selection_agent_module").val()
|
||||
"selection" : $("#selection_agent_module").val(),
|
||||
"select_mode": 1
|
||||
},
|
||||
function (data, status) {
|
||||
$("#module").html('');
|
||||
|
@ -4618,7 +4582,8 @@ $(document).ready (function () {
|
|||
"get_modules_group_json" : 1,
|
||||
"selection" : $("#selection_agent_module").val(),
|
||||
"id_module_group" : $("#combo_modulegroup").val(),
|
||||
"id_agents" : $("#id_agents2").val()
|
||||
"id_agents" : $("#id_agents2").val(),
|
||||
"select_mode": 1
|
||||
},
|
||||
function (data, status) {
|
||||
$("#module").html('');
|
||||
|
@ -4645,7 +4610,8 @@ $(document).ready (function () {
|
|||
"get_modules_group_json" : 1,
|
||||
"id_module_group" : $("#combo_modulegroup").val(),
|
||||
"id_agents" : $("#id_agents2").val(),
|
||||
"selection" : $("#selection_agent_module").val()
|
||||
"selection" : $("#selection_agent_module").val(),
|
||||
"select_mode": 1
|
||||
},
|
||||
function (data, status) {
|
||||
$("#module").html('');
|
||||
|
|
|
@ -1689,7 +1689,7 @@ switch ($action) {
|
|||
true
|
||||
);
|
||||
|
||||
$es['module'] = get_same_modules(
|
||||
$es['module'] = get_same_modules_all(
|
||||
$agents_to_report,
|
||||
$modules_to_report
|
||||
);
|
||||
|
@ -1721,7 +1721,7 @@ switch ($action) {
|
|||
true
|
||||
);
|
||||
|
||||
$es['module'] = get_same_modules(
|
||||
$es['module'] = get_same_modules_all(
|
||||
$agents_to_report,
|
||||
$modules_to_report
|
||||
);
|
||||
|
@ -2489,7 +2489,7 @@ switch ($action) {
|
|||
true
|
||||
);
|
||||
|
||||
$es['module'] = get_same_modules(
|
||||
$es['module'] = get_same_modules_all(
|
||||
$agents_to_report,
|
||||
$modules_to_report
|
||||
);
|
||||
|
@ -2522,7 +2522,7 @@ switch ($action) {
|
|||
true
|
||||
);
|
||||
|
||||
$es['module'] = get_same_modules(
|
||||
$es['module'] = get_same_modules_all(
|
||||
$agents_to_report,
|
||||
$modules_to_report
|
||||
);
|
||||
|
|
|
@ -733,6 +733,63 @@ function agents_get_agents(
|
|||
}
|
||||
|
||||
|
||||
function agents_get_agents_selected($group)
|
||||
{
|
||||
if (is_metaconsole() === true) {
|
||||
$all = agents_get_agents(
|
||||
['id_grupo' => $group],
|
||||
[
|
||||
'id_tagente',
|
||||
'id_tmetaconsole_setup',
|
||||
'id_agente',
|
||||
'alias',
|
||||
],
|
||||
'AR',
|
||||
[
|
||||
'field' => 'alias',
|
||||
'order' => 'ASC',
|
||||
],
|
||||
false,
|
||||
0,
|
||||
true
|
||||
);
|
||||
|
||||
$all = array_reduce(
|
||||
$all,
|
||||
function ($carry, $item) {
|
||||
$carry[$item['id_tmetaconsole_setup'].'|'.$item['id_tagente']] = $item['alias'];
|
||||
return $carry;
|
||||
},
|
||||
[]
|
||||
);
|
||||
} else {
|
||||
$all = agents_get_agents(
|
||||
['id_grupo' => $group],
|
||||
[
|
||||
'id_agente',
|
||||
'alias',
|
||||
],
|
||||
'AR',
|
||||
[
|
||||
'field' => 'alias',
|
||||
'order' => 'ASC',
|
||||
]
|
||||
);
|
||||
|
||||
$all = array_reduce(
|
||||
$all,
|
||||
function ($carry, $item) {
|
||||
$carry[$item['id_agente']] = $item['alias'];
|
||||
return $carry;
|
||||
},
|
||||
[]
|
||||
);
|
||||
}
|
||||
|
||||
return $all;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get all the alerts of an agent, simple and combined.
|
||||
*
|
||||
|
@ -1662,27 +1719,67 @@ function agents_get_alias_array($array_ids)
|
|||
return [];
|
||||
}
|
||||
|
||||
$sql = sprintf(
|
||||
'SELECT id_agente as id, alias as `name`
|
||||
FROM tagente
|
||||
WHERE id_agente IN (%s)',
|
||||
implode(',', $array_ids)
|
||||
);
|
||||
if ((bool) is_metaconsole() === true) {
|
||||
$agents = array_reduce(
|
||||
$array_ids,
|
||||
function ($carry, $item) {
|
||||
$explode = explode('|', $item);
|
||||
|
||||
$result = db_get_all_rows_sql($sql);
|
||||
$carry[$explode[0]][] = $explode[1];
|
||||
return $carry;
|
||||
}
|
||||
);
|
||||
|
||||
if ($result === false) {
|
||||
$result = [];
|
||||
}
|
||||
foreach ($agents as $tserver => $id_agents) {
|
||||
$sql = sprintf(
|
||||
'SELECT id_tagente as id, alias as `name`
|
||||
FROM tmetaconsole_agent
|
||||
WHERE id_tagente IN (%s) AND id_tmetaconsole_setup = %d',
|
||||
implode(',', $id_agents),
|
||||
$tserver
|
||||
);
|
||||
|
||||
$result = array_reduce(
|
||||
$result,
|
||||
function ($carry, $item) {
|
||||
$carry[$item['id']] = $item['name'];
|
||||
return $carry;
|
||||
},
|
||||
[]
|
||||
);
|
||||
$data_server = db_get_all_rows_sql($sql);
|
||||
|
||||
if ($data_server === false) {
|
||||
$data_server = [];
|
||||
}
|
||||
|
||||
$data_server = array_reduce(
|
||||
$data_server,
|
||||
function ($carry, $item) {
|
||||
$carry[$item['id']] = $item['name'];
|
||||
return $carry;
|
||||
},
|
||||
[]
|
||||
);
|
||||
|
||||
$result[$tserver] = $data_server;
|
||||
}
|
||||
} else {
|
||||
$sql = sprintf(
|
||||
'SELECT id_agente as id, alias as `name`
|
||||
FROM tagente
|
||||
WHERE id_agente IN (%s)',
|
||||
implode(',', $array_ids)
|
||||
);
|
||||
|
||||
$result = db_get_all_rows_sql($sql);
|
||||
|
||||
if ($result === false) {
|
||||
$result = [];
|
||||
}
|
||||
|
||||
$result = array_reduce(
|
||||
$result,
|
||||
function ($carry, $item) {
|
||||
$carry[$item['id']] = $item['name'];
|
||||
return $carry;
|
||||
},
|
||||
[]
|
||||
);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
|
|
@ -2887,12 +2887,18 @@ function alerts_get_alert_fired($filters=[], $groupsBy=[], $total=false)
|
|||
|
||||
hd(5);
|
||||
|
||||
$table = 'tevento';
|
||||
if (is_metaconsole() === true) {
|
||||
$table = 'tmetaconsole_event';
|
||||
}
|
||||
|
||||
$filter_date = '';
|
||||
if (isset($filters['period']) === true
|
||||
&& empty($filters['period']) === false
|
||||
) {
|
||||
$filter_date = sprintf(
|
||||
'AND tevento.utimestamp > %d',
|
||||
'AND %s.utimestamp > %d',
|
||||
$table,
|
||||
(time() - $filters['period'])
|
||||
);
|
||||
}
|
||||
|
@ -2902,7 +2908,8 @@ function alerts_get_alert_fired($filters=[], $groupsBy=[], $total=false)
|
|||
&& empty($filters['group']) === false
|
||||
) {
|
||||
$filter_group = sprintf(
|
||||
'AND tevento.id_grupo = %d',
|
||||
'AND %s.id_grupo = %d',
|
||||
$table,
|
||||
$filters['group']
|
||||
);
|
||||
}
|
||||
|
@ -2911,30 +2918,98 @@ function alerts_get_alert_fired($filters=[], $groupsBy=[], $total=false)
|
|||
if (isset($filters['agents']) === true
|
||||
&& empty($filters['agents']) === false
|
||||
) {
|
||||
$filter_agents = sprintf(
|
||||
'AND tevento.id_agente IN (%s)',
|
||||
implode(',', $filters['agents'])
|
||||
);
|
||||
if (is_metaconsole() === true) {
|
||||
$agents = array_reduce(
|
||||
$filters['agents'],
|
||||
function ($carry, $item) {
|
||||
$explode = explode('|', $item);
|
||||
|
||||
$carry[$explode[0]][] = $explode[1];
|
||||
return $carry;
|
||||
}
|
||||
);
|
||||
|
||||
$filter_agents .= ' AND ( ';
|
||||
$i = 0;
|
||||
foreach ($agents as $tserver => $agent) {
|
||||
if ($i !== 0) {
|
||||
$filter_agents .= ' OR ';
|
||||
}
|
||||
|
||||
$filter_agents .= sprintf(
|
||||
'( %s.id_agente IN (%s) AND %s.server_id = %d )',
|
||||
$table,
|
||||
implode(',', $agent),
|
||||
$table,
|
||||
(int) $tserver
|
||||
);
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
$filter_agents .= ' )';
|
||||
} else {
|
||||
$filter_agents = sprintf(
|
||||
'AND %s.id_agente IN (%s)',
|
||||
$table,
|
||||
implode(',', $filters['agents'])
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$filter_modules = '';
|
||||
if (isset($filters['modules']) === true
|
||||
&& empty($filters['modules']) === false
|
||||
) {
|
||||
$filter_modules = sprintf(
|
||||
'AND tevento.id_agentmodule IN (%s)',
|
||||
implode(',', $filters['modules'])
|
||||
);
|
||||
if (is_metaconsole() === true) {
|
||||
$modules = array_reduce(
|
||||
$filters['modules'],
|
||||
function ($carry, $item) {
|
||||
$explode = explode('|', $item);
|
||||
|
||||
$carry[$explode[0]][] = $explode[1];
|
||||
return $carry;
|
||||
}
|
||||
);
|
||||
|
||||
$filter_modules .= ' AND ( ';
|
||||
$i = 0;
|
||||
foreach ($modules as $tserver => $module) {
|
||||
if ($i !== 0) {
|
||||
$filter_modules .= ' OR ';
|
||||
}
|
||||
|
||||
$filter_modules .= sprintf(
|
||||
'( %s.id_agentmodule IN (%s) AND %s.server_id = %d )',
|
||||
$table,
|
||||
implode(',', $module),
|
||||
$table,
|
||||
(int) $tserver
|
||||
);
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
$filter_modules .= ' )';
|
||||
} else {
|
||||
$filter_modules = sprintf(
|
||||
'AND %s.id_agentmodule IN (%s)',
|
||||
$table,
|
||||
implode(',', $filters['modules'])
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$filter_templates = '';
|
||||
if (isset($filters['templates']) === true
|
||||
&& empty($filters['templates']) === false
|
||||
) {
|
||||
$filter_templates = sprintf(
|
||||
'AND talert_template_modules.id_alert_template IN (%s)',
|
||||
implode(',', $filters['templates'])
|
||||
);
|
||||
if (is_metaconsole() === false) {
|
||||
$filter_templates = sprintf(
|
||||
'AND talert_template_modules.id_alert_template IN (%s)',
|
||||
implode(',', $filters['templates'])
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$actions_names = alerts_get_actions_names($filters['actions'], true);
|
||||
|
@ -2954,12 +3029,14 @@ function alerts_get_alert_fired($filters=[], $groupsBy=[], $total=false)
|
|||
}
|
||||
|
||||
$filter_actions .= sprintf(
|
||||
"JSON_CONTAINS(tevento.custom_data, '\"%s\"', '\$.actions')",
|
||||
"JSON_CONTAINS(%s.custom_data, '\"%s\"', '\$.actions')",
|
||||
$table,
|
||||
io_safe_output($name_action)
|
||||
);
|
||||
|
||||
$fields_actions[$name_action] = sprintf(
|
||||
"SUM(JSON_CONTAINS(tevento.custom_data, '\"%s\"', '\$.actions')) as '%s'",
|
||||
"SUM(JSON_CONTAINS(%s.custom_data, '\"%s\"', '\$.actions')) as '%s'",
|
||||
$table,
|
||||
io_safe_output($name_action),
|
||||
io_safe_output($name_action)
|
||||
);
|
||||
|
@ -2971,7 +3048,8 @@ function alerts_get_alert_fired($filters=[], $groupsBy=[], $total=false)
|
|||
} else {
|
||||
foreach ($actions_names as $name_action) {
|
||||
$fields[] = sprintf(
|
||||
"SUM(JSON_CONTAINS(tevento.custom_data, '\"%s\"', '\$.actions')) as '%s'",
|
||||
"SUM(JSON_CONTAINS(%s.custom_data, '\"%s\"', '\$.actions')) as '%s'",
|
||||
$table,
|
||||
io_safe_output($name_action),
|
||||
io_safe_output($name_action)
|
||||
);
|
||||
|
@ -2987,35 +3065,49 @@ function alerts_get_alert_fired($filters=[], $groupsBy=[], $total=false)
|
|||
}
|
||||
|
||||
$names_search = [];
|
||||
$names_server = [];
|
||||
if (isset($groupsBy['group_by']) === true) {
|
||||
switch ($groupsBy['group_by']) {
|
||||
case 'module':
|
||||
$fields[] = 'tevento.id_agentmodule as module';
|
||||
$group_array[] = 'tevento.id_agentmodule';
|
||||
$fields[] = $table.'.id_agentmodule as module';
|
||||
$group_array[] = $table.'.id_agentmodule';
|
||||
$names_search = modules_get_agentmodule_name_array(
|
||||
array_values($filters['modules'])
|
||||
);
|
||||
|
||||
if (is_metaconsole() === true && $total === false) {
|
||||
$fields[] = $table.'.server_id as server';
|
||||
$group_array[] = $table.'.server_id';
|
||||
$names_server = metaconsole_get_names();
|
||||
}
|
||||
break;
|
||||
|
||||
case 'template':
|
||||
$fields[] = 'talert_template_modules.id_alert_template as template';
|
||||
$group_array[] = 'talert_template_modules.id_alert_template';
|
||||
$names_search = alerts_get_templates_name_array(
|
||||
array_values($filters['templates'])
|
||||
);
|
||||
if (is_metaconsole() === false) {
|
||||
$fields[] = 'talert_template_modules.id_alert_template as template';
|
||||
$group_array[] = 'talert_template_modules.id_alert_template';
|
||||
$names_search = alerts_get_templates_name_array(
|
||||
array_values($filters['templates'])
|
||||
);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'agent':
|
||||
$fields[] = 'tevento.id_agente as agent';
|
||||
$group_array[] = 'tevento.id_agente';
|
||||
$fields[] = $table.'.id_agente as agent';
|
||||
$group_array[] = $table.'.id_agente';
|
||||
$names_search = agents_get_alias_array(
|
||||
array_values($filters['agents'])
|
||||
);
|
||||
if (is_metaconsole() === true && $total === false) {
|
||||
$fields[] = $table.'.server_id as server';
|
||||
$group_array[] = $table.'.server_id';
|
||||
$names_server = metaconsole_get_names();
|
||||
}
|
||||
break;
|
||||
|
||||
case 'group':
|
||||
$fields[] = 'tevento.id_grupo as `group`';
|
||||
$group_array[] = 'tevento.id_grupo';
|
||||
$fields[] = $table.'.id_grupo as `group`';
|
||||
$group_array[] = $table.'.id_grupo';
|
||||
$names_search = users_get_groups($config['user'], 'AR', false);
|
||||
break;
|
||||
|
||||
|
@ -3030,7 +3122,8 @@ function alerts_get_alert_fired($filters=[], $groupsBy=[], $total=false)
|
|||
&& empty($groupsBy['lapse']) === false
|
||||
) {
|
||||
$fields[] = sprintf(
|
||||
'tevento.utimestamp AS Period'
|
||||
'%s.utimestamp AS Period',
|
||||
$table
|
||||
);
|
||||
$group_array[] = 'period';
|
||||
}
|
||||
|
@ -3041,16 +3134,22 @@ function alerts_get_alert_fired($filters=[], $groupsBy=[], $total=false)
|
|||
$group_by = sprintf(' GROUP BY %s', implode(", \n", $group_array));
|
||||
}
|
||||
|
||||
$innerJoin = '';
|
||||
if (is_metaconsole() === false) {
|
||||
$innerJoin = sprintf(
|
||||
'INNER JOIN talert_template_modules
|
||||
ON talert_template_modules.id = %s.id_alert_am',
|
||||
$table
|
||||
);
|
||||
}
|
||||
|
||||
$query = sprintf(
|
||||
'SELECT
|
||||
%s
|
||||
FROM tevento
|
||||
INNER JOIN talert_template_modules
|
||||
ON talert_template_modules.id = tevento.id_alert_am
|
||||
INNER JOIN talert_templates
|
||||
ON talert_templates.id = talert_template_modules.id_alert_template
|
||||
FROM %s
|
||||
%s
|
||||
WHERE custom_data != ""
|
||||
AND tevento.event_type="alert_fired"
|
||||
AND %s.event_type="alert_fired"
|
||||
%s
|
||||
%s
|
||||
%s
|
||||
|
@ -3059,6 +3158,9 @@ function alerts_get_alert_fired($filters=[], $groupsBy=[], $total=false)
|
|||
%s
|
||||
%s',
|
||||
implode(", \n", $fields),
|
||||
$table,
|
||||
$innerJoin,
|
||||
$table,
|
||||
$filter_date,
|
||||
$filter_group,
|
||||
$filter_agents,
|
||||
|
@ -3080,10 +3182,23 @@ function alerts_get_alert_fired($filters=[], $groupsBy=[], $total=false)
|
|||
$data,
|
||||
function ($carry, $item) use ($groupsBy) {
|
||||
$period = (isset($item['Period']) === true) ? (int) $item['Period'] : 0;
|
||||
$grby = $item[$groupsBy['group_by']];
|
||||
unset($item['Period']);
|
||||
unset($item[$groupsBy['group_by']]);
|
||||
$carry[$period][$grby] = $item;
|
||||
if (is_metaconsole() === true
|
||||
&& ($groupsBy['group_by'] === 'agent'
|
||||
|| $groupsBy['group_by'] === 'module')
|
||||
) {
|
||||
$grby = $item[$groupsBy['group_by']];
|
||||
$server = $item['server'];
|
||||
unset($item['Period']);
|
||||
unset($item[$groupsBy['group_by']]);
|
||||
unset($item['server']);
|
||||
$carry[$period][$server][$grby] = $item;
|
||||
} else {
|
||||
$grby = $item[$groupsBy['group_by']];
|
||||
unset($item['Period']);
|
||||
unset($item[$groupsBy['group_by']]);
|
||||
$carry[$period][$grby] = $item;
|
||||
}
|
||||
|
||||
return $carry;
|
||||
},
|
||||
[]
|
||||
|
@ -3095,13 +3210,20 @@ function alerts_get_alert_fired($filters=[], $groupsBy=[], $total=false)
|
|||
) {
|
||||
$tend = time();
|
||||
$tstart = ($tend - (int) $filters['period']);
|
||||
for ($current_time = $tstart; $current_time <= $tend; ($current_time += $groupsBy['lapse'])) {
|
||||
for ($current_time = $tstart; $current_time < $tend; ($current_time += $groupsBy['lapse'])) {
|
||||
$intervals[] = (int) $current_time;
|
||||
}
|
||||
}
|
||||
|
||||
$first_element = reset($data);
|
||||
$first_element = reset($first_element);
|
||||
if (is_metaconsole() === true
|
||||
&& ($groupsBy['group_by'] === 'agent'
|
||||
|| $groupsBy['group_by'] === 'module')
|
||||
) {
|
||||
$first_element = reset($first_element);
|
||||
}
|
||||
|
||||
$clone = [];
|
||||
foreach ($first_element as $key_clone => $value_clone) {
|
||||
$clone[$key_clone] = 0;
|
||||
|
@ -3110,13 +3232,30 @@ function alerts_get_alert_fired($filters=[], $groupsBy=[], $total=false)
|
|||
$result = [];
|
||||
if (empty($intervals) === true) {
|
||||
foreach ($data as $period => $array_data) {
|
||||
foreach ($names_search as $id => $name) {
|
||||
if (isset($array_data[$id]) === true) {
|
||||
$result[$period][$id] = $array_data[$id];
|
||||
$result[$period][$id][$groupsBy['group_by']] = $name;
|
||||
} else {
|
||||
$clone[$groupsBy['group_by']] = $name;
|
||||
$result[$period][$id] = $clone;
|
||||
if (is_metaconsole() === true
|
||||
&& ($groupsBy['group_by'] === 'agent'
|
||||
|| $groupsBy['group_by'] === 'module')
|
||||
) {
|
||||
foreach ($names_search as $server => $names) {
|
||||
foreach ($names as $id => $name) {
|
||||
if (isset($array_data[$server][$id]) === true) {
|
||||
$result[$period][$server.'|'.$id] = $array_data[$server][$id];
|
||||
$result[$period][$server.'|'.$id][$groupsBy['group_by']] = $name;
|
||||
} else {
|
||||
$clone[$groupsBy['group_by']] = $name;
|
||||
$result[$period][$server.'|'.$id] = $clone;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach ($names_search as $id => $name) {
|
||||
if (isset($array_data[$id]) === true) {
|
||||
$result[$period][$id] = $array_data[$id];
|
||||
$result[$period][$id][$groupsBy['group_by']] = $name;
|
||||
} else {
|
||||
$clone[$groupsBy['group_by']] = $name;
|
||||
$result[$period][$id] = $clone;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3125,21 +3264,54 @@ function alerts_get_alert_fired($filters=[], $groupsBy=[], $total=false)
|
|||
foreach ($intervals as $interval) {
|
||||
$start_interval = $interval;
|
||||
$end_interval = ($interval + $period_lapse);
|
||||
foreach ($names_search as $id => $name) {
|
||||
$result[$start_interval][$id] = $clone;
|
||||
$result[$start_interval][$id][$groupsBy['group_by']] = $name;
|
||||
|
||||
if (is_metaconsole() === true
|
||||
&& ($groupsBy['group_by'] === 'agent'
|
||||
|| $groupsBy['group_by'] === 'module')
|
||||
) {
|
||||
foreach ($names_search as $server => $names) {
|
||||
foreach ($names as $id => $name) {
|
||||
$result_name = $names_server[$server].' » '.$name;
|
||||
$result[$start_interval][$server.'|'.$id] = $clone;
|
||||
$result[$start_interval][$server.'|'.$id][$groupsBy['group_by']] = $result_name;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach ($names_search as $id => $name) {
|
||||
$result[$start_interval][$id] = $clone;
|
||||
$result[$start_interval][$id][$groupsBy['group_by']] = $name;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($data as $period => $array_data) {
|
||||
$period_time = (int) $period;
|
||||
if ($start_interval < $period_time && $period_time <= $end_interval) {
|
||||
foreach ($array_data as $id_data => $value_data) {
|
||||
foreach ($value_data as $key_data => $v) {
|
||||
if ($key_data !== $groupsBy['group_by']) {
|
||||
if (isset($result[$start_interval][$id_data][$key_data])) {
|
||||
$result[$start_interval][$id_data][$key_data] += $v;
|
||||
} else {
|
||||
$result[$start_interval][$id_data][$key_data] = $v;
|
||||
if (is_metaconsole() === true
|
||||
&& ($groupsBy['group_by'] === 'agent'
|
||||
|| $groupsBy['group_by'] === 'module')
|
||||
) {
|
||||
foreach ($array_data as $server => $datas) {
|
||||
foreach ($datas as $id_data => $value_data) {
|
||||
foreach ($value_data as $key_data => $v) {
|
||||
if ($key_data !== $groupsBy['group_by']) {
|
||||
if (isset($result[$start_interval][$server.'|'.$id_data][$key_data])) {
|
||||
$result[$start_interval][$server.'|'.$id_data][$key_data] += $v;
|
||||
} else {
|
||||
$result[$start_interval][$server.'|'.$id_data][$key_data] = $v;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach ($array_data as $id_data => $value_data) {
|
||||
foreach ($value_data as $key_data => $v) {
|
||||
if ($key_data !== $groupsBy['group_by']) {
|
||||
if (isset($result[$start_interval][$id_data][$key_data])) {
|
||||
$result[$start_interval][$id_data][$key_data] += $v;
|
||||
} else {
|
||||
$result[$start_interval][$id_data][$key_data] = $v;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
* ============================================================================
|
||||
*/
|
||||
|
||||
use PandoraFMS\Enterprise\Metaconsole\Node;
|
||||
|
||||
// Begin.
|
||||
require_once $config['homedir'].'/include/functions_agents.php';
|
||||
require_once $config['homedir'].'/include/functions_users.php';
|
||||
|
@ -1448,6 +1450,51 @@ function modules_get_agentmodule_name_array($array_ids)
|
|||
return [];
|
||||
}
|
||||
|
||||
if ((bool) is_metaconsole() === true) {
|
||||
$modules = array_reduce(
|
||||
$array_ids,
|
||||
function ($carry, $item) {
|
||||
$explode = explode('|', $item);
|
||||
|
||||
$carry[$explode[0]][] = $explode[1];
|
||||
return $carry;
|
||||
}
|
||||
);
|
||||
|
||||
$result = [];
|
||||
foreach ($modules as $tserver => $id_modules) {
|
||||
if (metaconsole_connect(null, $tserver) == NOERR) {
|
||||
$result_modules = modules_get_agentmodule_name_array_data(
|
||||
$id_modules
|
||||
);
|
||||
|
||||
$result[$tserver] = $result_modules;
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$result = modules_get_agentmodule_name_array_data(
|
||||
$array_ids
|
||||
);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Data names.
|
||||
*
|
||||
* @param array $array_ids Ids.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function modules_get_agentmodule_name_array_data($array_ids)
|
||||
{
|
||||
if (is_array($array_ids) === false || empty($array_ids) === true) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$sql = sprintf(
|
||||
'SELECT id_agente_modulo as id, nombre as `name`
|
||||
FROM tagente_modulo
|
||||
|
@ -3508,6 +3555,145 @@ function modules_get_agentmodule_mininterval_no_async($id_agent)
|
|||
}
|
||||
|
||||
|
||||
function get_modules_agents($id_module_group, $id_agents, $selection, $select_mode=true)
|
||||
{
|
||||
if ((bool) is_metaconsole() === true) {
|
||||
if ($select_mode === true) {
|
||||
$agents = array_reduce(
|
||||
$id_agents,
|
||||
function ($carry, $item) {
|
||||
$explode = explode('|', $item);
|
||||
|
||||
$carry[$explode[0]][] = $explode[1];
|
||||
return $carry;
|
||||
}
|
||||
);
|
||||
} else {
|
||||
if (count($id_agents) > 0) {
|
||||
$rows = db_get_all_rows_sql(
|
||||
sprintf(
|
||||
'SELECT `id_agente`, `id_tagente`, `id_tmetaconsole_setup`
|
||||
FROM `tmetaconsole_agent`
|
||||
WHERE `id_agente` IN (%s)',
|
||||
implode(',', $id_agents)
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$rows = [];
|
||||
}
|
||||
|
||||
$agents = array_reduce(
|
||||
$rows,
|
||||
function ($carry, $item) {
|
||||
if ($carry[$item['id_tmetaconsole_setup']] === null) {
|
||||
$carry[$item['id_tmetaconsole_setup']] = [];
|
||||
}
|
||||
|
||||
$carry[$item['id_tmetaconsole_setup']][] = $item['id_tagente'];
|
||||
return $carry;
|
||||
},
|
||||
[]
|
||||
);
|
||||
}
|
||||
|
||||
$modules = [];
|
||||
foreach ($agents as $tserver => $id_agents) {
|
||||
if (metaconsole_connect(null, $tserver) == NOERR) {
|
||||
$modules[$tserver] = select_modules_for_agent_group(
|
||||
$id_module_group,
|
||||
$id_agents,
|
||||
$selection,
|
||||
false,
|
||||
false,
|
||||
true
|
||||
);
|
||||
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
}
|
||||
|
||||
if (!$selection) {
|
||||
// Common modules.
|
||||
$final_modules = [];
|
||||
$nodes_consulted = count($modules);
|
||||
|
||||
foreach ($modules as $tserver => $mods) {
|
||||
foreach ($mods as $module) {
|
||||
if ($final_modules[$module['nombre']] === null) {
|
||||
$final_modules[$module['nombre']] = 0;
|
||||
}
|
||||
|
||||
$final_modules[$module['nombre']]++;
|
||||
}
|
||||
}
|
||||
|
||||
$modules = [];
|
||||
foreach ($final_modules as $module_name => $occurrences) {
|
||||
if ($occurrences === $nodes_consulted) {
|
||||
// Module already present in ALL nodes.
|
||||
$modules[] = [
|
||||
'id_agente_modulo' => $module_name,
|
||||
'nombre' => $module_name,
|
||||
];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// All modules.
|
||||
$return = [];
|
||||
$nodes = [];
|
||||
foreach ($agents as $tserver => $id_agents) {
|
||||
try {
|
||||
$nodes[$tserver] = new Node($tserver);
|
||||
} catch (Exception $e) {
|
||||
hd($e);
|
||||
}
|
||||
|
||||
$return = array_reduce(
|
||||
$modules[$tserver],
|
||||
function ($carry, $item) use ($tserver, $nodes) {
|
||||
$t = [];
|
||||
foreach ($item as $k => $v) {
|
||||
$t[$k] = $v;
|
||||
}
|
||||
|
||||
$t['id_node'] = $tserver;
|
||||
if ($nodes[$tserver] !== null) {
|
||||
$t['nombre'] = io_safe_output(
|
||||
$nodes[$tserver]->server_name().' » '.$t['nombre']
|
||||
);
|
||||
}
|
||||
|
||||
$carry[] = $t;
|
||||
return $carry;
|
||||
},
|
||||
$return
|
||||
);
|
||||
}
|
||||
|
||||
$modules = $return;
|
||||
}
|
||||
|
||||
$modules = array_reduce(
|
||||
$modules,
|
||||
function ($carry, $item) {
|
||||
$carry[$item['id_node'].'|'.$item['id_agente_modulo']] = $item['nombre'];
|
||||
return $carry;
|
||||
},
|
||||
[]
|
||||
);
|
||||
} else {
|
||||
$modules = select_modules_for_agent_group(
|
||||
$id_module_group,
|
||||
$id_agents,
|
||||
$selection,
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
return $modules;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* List all modules in agents selection.
|
||||
*
|
||||
|
@ -3522,7 +3708,9 @@ function get_same_modules($agents, $modules)
|
|||
return [];
|
||||
}
|
||||
|
||||
$name_modules = modules_get_agentmodule_name_array(array_values($modules));
|
||||
$name_modules = modules_get_agentmodule_name_array_data(
|
||||
array_values($modules)
|
||||
);
|
||||
|
||||
$sql = sprintf(
|
||||
'SELECT id_agente_modulo as id,
|
||||
|
@ -3557,6 +3745,84 @@ function get_same_modules($agents, $modules)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* List all modules in agents selection to metaconsole or node.
|
||||
*
|
||||
* @param array $agents Agents ids array.
|
||||
* @param array $modules Modules ids array.
|
||||
*
|
||||
* @return array List modules [server|id_module, ...].
|
||||
*/
|
||||
function get_same_modules_all($agents, $modules, $select_mode=true)
|
||||
{
|
||||
if (is_array($agents) === false || empty($agents) === true) {
|
||||
return [];
|
||||
}
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
$modules = array_reduce(
|
||||
$modules,
|
||||
function ($carry, $item) {
|
||||
$explode = explode('|', $item);
|
||||
|
||||
$carry[$explode[0]][] = $explode[1];
|
||||
return $carry;
|
||||
}
|
||||
);
|
||||
|
||||
if ($select_mode === true) {
|
||||
$agents = array_reduce(
|
||||
$agents,
|
||||
function ($carry, $item) {
|
||||
$explode = explode('|', $item);
|
||||
|
||||
$carry[$explode[0]][] = $explode[1];
|
||||
return $carry;
|
||||
}
|
||||
);
|
||||
} else {
|
||||
$rows = db_get_all_rows_sql(
|
||||
sprintf(
|
||||
'SELECT `id_agente`, `id_tagente`, `id_tmetaconsole_setup`
|
||||
FROM `tmetaconsole_agent`
|
||||
WHERE `id_agente` IN (%s)',
|
||||
implode(',', $agents)
|
||||
)
|
||||
);
|
||||
|
||||
$agents = array_reduce(
|
||||
$rows,
|
||||
function ($carry, $item) {
|
||||
if ($carry[$item['id_tmetaconsole_setup']] === null) {
|
||||
$carry[$item['id_tmetaconsole_setup']] = [];
|
||||
}
|
||||
|
||||
$carry[$item['id_tmetaconsole_setup']][] = $item['id_tagente'];
|
||||
return $carry;
|
||||
},
|
||||
[]
|
||||
);
|
||||
}
|
||||
|
||||
$result = [];
|
||||
foreach ($agents as $tserver => $id_agents) {
|
||||
if (metaconsole_connect(null, $tserver) == NOERR) {
|
||||
$same_modules = get_same_modules($id_agents, $modules[$tserver]);
|
||||
foreach ($same_modules as $id_module) {
|
||||
$result[] = $tserver.'|'.$id_module;
|
||||
}
|
||||
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$result = get_same_modules($agents, $modules);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
function get_hierachy_modules_tree($modules)
|
||||
{
|
||||
$new_modules = [];
|
||||
|
|
|
@ -192,127 +192,25 @@ if (is_ajax()) {
|
|||
return;
|
||||
}
|
||||
|
||||
if ($get_modules_group_json) {
|
||||
if ($get_modules_group_json === true) {
|
||||
$id_group = (int) get_parameter('id_module_group', 0);
|
||||
$id_agents = get_parameter('id_agents', null);
|
||||
$selection = get_parameter('selection');
|
||||
$select_mode = (bool) get_parameter('select_mode', 0);
|
||||
|
||||
if ($id_agents === null) {
|
||||
echo '[]';
|
||||
return;
|
||||
}
|
||||
|
||||
if ((bool) is_metaconsole() === true) {
|
||||
if (count($id_agents) > 0) {
|
||||
$rows = db_get_all_rows_sql(
|
||||
sprintf(
|
||||
'SELECT `id_agente`, `id_tagente`, `id_tmetaconsole_setup`
|
||||
FROM `tmetaconsole_agent`
|
||||
WHERE `id_agente` IN (%s)',
|
||||
implode(',', $id_agents)
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$rows = [];
|
||||
}
|
||||
|
||||
$agents = array_reduce(
|
||||
$rows,
|
||||
function ($carry, $item) {
|
||||
if ($carry[$item['id_tmetaconsole_setup']] === null) {
|
||||
$carry[$item['id_tmetaconsole_setup']] = [];
|
||||
}
|
||||
|
||||
$carry[$item['id_tmetaconsole_setup']][] = $item['id_tagente'];
|
||||
return $carry;
|
||||
},
|
||||
[]
|
||||
);
|
||||
|
||||
$modules = [];
|
||||
|
||||
foreach ($agents as $tserver => $id_agents) {
|
||||
if (metaconsole_connect(null, $tserver) == NOERR) {
|
||||
$modules[$tserver] = select_modules_for_agent_group(
|
||||
$id_group,
|
||||
$id_agents,
|
||||
$selection,
|
||||
false,
|
||||
false,
|
||||
true
|
||||
);
|
||||
|
||||
metaconsole_restore_db();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!$selection) {
|
||||
// Common modules.
|
||||
$final_modules = [];
|
||||
$nodes_consulted = count($modules);
|
||||
|
||||
foreach ($modules as $tserver => $mods) {
|
||||
foreach ($mods as $module) {
|
||||
if ($final_modules[$module['nombre']] === null) {
|
||||
$final_modules[$module['nombre']] = 0;
|
||||
}
|
||||
|
||||
$final_modules[$module['nombre']]++;
|
||||
}
|
||||
}
|
||||
|
||||
$modules = [];
|
||||
foreach ($final_modules as $module_name => $occurrences) {
|
||||
if ($occurrences === $nodes_consulted) {
|
||||
// Module already present in ALL nodes.
|
||||
$modules[] = [
|
||||
'id_agente_modulo' => $module_name,
|
||||
'nombre' => $module_name,
|
||||
];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// All modules.
|
||||
$return = [];
|
||||
$nodes = [];
|
||||
foreach ($agents as $tserver => $id_agents) {
|
||||
try {
|
||||
$nodes[$tserver] = new Node($tserver);
|
||||
} catch (Exception $e) {
|
||||
hd($e);
|
||||
}
|
||||
|
||||
$return = array_reduce(
|
||||
$modules[$tserver],
|
||||
function ($carry, $item) use ($tserver, $nodes) {
|
||||
$t = [];
|
||||
foreach ($item as $k => $v) {
|
||||
$t[$k] = $v;
|
||||
}
|
||||
|
||||
$t['id_node'] = $tserver;
|
||||
if ($nodes[$tserver] !== null) {
|
||||
$t['nombre'] = io_safe_output(
|
||||
$nodes[$tserver]->server_name().' » '.$t['nombre']
|
||||
);
|
||||
}
|
||||
|
||||
$carry[] = $t;
|
||||
return $carry;
|
||||
},
|
||||
$return
|
||||
);
|
||||
}
|
||||
|
||||
$modules = $return;
|
||||
}
|
||||
|
||||
echo json_encode($modules);
|
||||
} else {
|
||||
$modules = select_modules_for_agent_group($id_group, $id_agents, $selection, false);
|
||||
echo json_encode($modules);
|
||||
}
|
||||
$modules = get_modules_agents(
|
||||
$id_group,
|
||||
$id_agents,
|
||||
$selection,
|
||||
$select_mode
|
||||
);
|
||||
echo json_encode($modules);
|
||||
return;
|
||||
}
|
||||
|
||||
if ($filter_modules_group_json) {
|
||||
|
|
Loading…
Reference in New Issue