mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-29 00:34:46 +02:00
fixed metaconsole on performance changes
This commit is contained in:
parent
24f7dbd420
commit
9df565fae1
@ -440,7 +440,7 @@ class Tree {
|
|||||||
|
|
||||||
$order_fields = 'tg.nombre ASC, tg.id_grupo ASC';
|
$order_fields = 'tg.nombre ASC, tg.id_grupo ASC';
|
||||||
|
|
||||||
if (is_metaconsole()) {
|
if (!is_metaconsole()) {
|
||||||
// Groups SQL
|
// Groups SQL
|
||||||
if ($item_for_count === false) {
|
if ($item_for_count === false) {
|
||||||
$sql = "SELECT $columns
|
$sql = "SELECT $columns
|
||||||
@ -537,8 +537,8 @@ class Tree {
|
|||||||
$order_fields = 'ta.alias ASC, ta.id_tagente ASC';
|
$order_fields = 'ta.alias ASC, ta.id_tagente ASC';
|
||||||
|
|
||||||
$sql = "SELECT $columns
|
$sql = "SELECT $columns
|
||||||
FROM tagente ta
|
FROM tmetaconsole_agent ta
|
||||||
LEFT JOIN tagent_secondary_group tasg
|
LEFT JOIN tmetaconsole_agent_secondary_group tasg
|
||||||
ON ta.id_agente = tasg.id_agent
|
ON ta.id_agente = tasg.id_agent
|
||||||
WHERE ta.disabled = 0
|
WHERE ta.disabled = 0
|
||||||
AND (
|
AND (
|
||||||
@ -567,16 +567,14 @@ class Tree {
|
|||||||
// 2. The user has access to the group of its agent, this group has tags and the module
|
// 2. The user has access to the group of its agent, this group has tags and the module
|
||||||
// has any of this tags.
|
// has any of this tags.
|
||||||
$tag_join = '';
|
$tag_join = '';
|
||||||
if (!$this->strictACL) {
|
// $rootID it the agent group id in this case
|
||||||
// $rootID it the agent group id in this case
|
if (!empty($this->acltags) && isset($this->acltags[$rootID])) {
|
||||||
if (!empty($this->acltags) && isset($this->acltags[$rootID])) {
|
$tags_str = $this->acltags[$rootID];
|
||||||
$tags_str = $this->acltags[$rootID];
|
|
||||||
|
|
||||||
if (!empty($tags_str)) {
|
if (!empty($tags_str)) {
|
||||||
$tag_join = sprintf('INNER JOIN ttag_module ttm
|
$tag_join = sprintf('INNER JOIN ttag_module ttm
|
||||||
ON tam.id_agente_modulo = ttm.id_agente_modulo
|
ON tam.id_agente_modulo = ttm.id_agente_modulo
|
||||||
AND ttm.id_tag IN (%s)', $tags_str);
|
AND ttm.id_tag IN (%s)', $tags_str);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1725,144 +1723,6 @@ class Tree {
|
|||||||
$agent['serverID'] = $server['id'];
|
$agent['serverID'] = $server['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Realtime counters for Strict ACL
|
|
||||||
if ($this->strictACL) {
|
|
||||||
$agent_filter = array("id" => $agent['id']);
|
|
||||||
$module_filter = array();
|
|
||||||
|
|
||||||
if (isset($this->filter["statusAgent"]))
|
|
||||||
$agent_filter["status"] = $this->filter["statusAgent"];
|
|
||||||
if (isset($this->filter["searchAgent"]))
|
|
||||||
$agent_filter["name"] = $this->filter["searchAgent"];
|
|
||||||
|
|
||||||
if (isset($this->filter["statusModule"]))
|
|
||||||
$module_filter["status"] = $this->filter["statusModule"];
|
|
||||||
if (isset($this->filter["searchModule"]))
|
|
||||||
$module_filter["name"] = $this->filter["searchModule"];
|
|
||||||
|
|
||||||
$agent['counters'] = array();
|
|
||||||
$agent['counters']['unknown'] = 0;
|
|
||||||
$agent['counters']['critical'] = 0;
|
|
||||||
$agent['counters']['warning'] = 0;
|
|
||||||
$agent['counters']['not_init'] = 0;
|
|
||||||
$agent['counters']['ok'] = 0;
|
|
||||||
$agent['counters']['total'] = 0;
|
|
||||||
$agent['counters']['alerts'] = 0;
|
|
||||||
|
|
||||||
if ($agent['rootType'] == "group") {
|
|
||||||
$agent['counters']['alerts'] = agents_get_alerts_fired($agent['id']);
|
|
||||||
|
|
||||||
// With module filter
|
|
||||||
if (isset($this->filter["statusModule"]) && $this->filter["statusModule"] != AGENT_MODULE_STATUS_ALL) {
|
|
||||||
switch ($this->filter["statusModule"]) {
|
|
||||||
case AGENT_MODULE_STATUS_CRITICAL_ALERT:
|
|
||||||
case AGENT_MODULE_STATUS_CRITICAL_BAD:
|
|
||||||
$agent['counters']['critical'] = (int) groups_get_critical_monitors ($agent['rootID'], $agent_filter, $module_filter, true, $this->acltags);
|
|
||||||
$agent['counters']['total'] = $agent['counters']['critical'];
|
|
||||||
break;
|
|
||||||
case AGENT_MODULE_STATUS_WARNING_ALERT:
|
|
||||||
case AGENT_MODULE_STATUS_WARNING:
|
|
||||||
$agent['counters']['warning'] = (int) groups_get_warning_monitors ($agent['rootID'], $agent_filter, $module_filter, true, $this->acltags);
|
|
||||||
$agent['counters']['total'] = $agent['counters']['warning'];
|
|
||||||
break;
|
|
||||||
case AGENT_MODULE_STATUS_UNKNOWN:
|
|
||||||
$agent['counters']['unknown'] = (int) groups_get_unknown_monitors ($agent['rootID'], $agent_filter, $module_filter, true, $this->acltags);
|
|
||||||
$agent['counters']['total'] = $agent['counters']['unknown'];
|
|
||||||
break;
|
|
||||||
case AGENT_MODULE_STATUS_NO_DATA:
|
|
||||||
case AGENT_MODULE_STATUS_NOT_INIT:
|
|
||||||
$agent['counters']['not_init'] = (int) groups_get_not_init_monitors ($agent['rootID'], $agent_filter, $module_filter, true, $this->acltags);
|
|
||||||
$agent['counters']['total'] = $agent['counters']['not_init'];
|
|
||||||
break;
|
|
||||||
case AGENT_MODULE_STATUS_NORMAL_ALERT:
|
|
||||||
case AGENT_MODULE_STATUS_NORMAL:
|
|
||||||
$agent['counters']['ok'] = (int) groups_get_normal_monitors ($agent['rootID'], $agent_filter, $module_filter, true, $this->acltags);
|
|
||||||
$agent['counters']['total'] = $agent['counters']['ok'];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Without module filter
|
|
||||||
else {
|
|
||||||
$agent['counters']['unknown'] = (int) groups_get_unknown_monitors ($agent['rootID'], $agent_filter, $module_filter, true, $this->acltags);
|
|
||||||
$agent['counters']['critical'] = (int) groups_get_critical_monitors ($agent['rootID'], $agent_filter, $module_filter, true, $this->acltags);
|
|
||||||
$agent['counters']['warning'] = (int) groups_get_warning_monitors ($agent['rootID'], $agent_filter, $module_filter, true, $this->acltags);
|
|
||||||
$agent['counters']['not_init'] = (int) groups_get_not_init_monitors ($agent['rootID'], $agent_filter, $module_filter, true, $this->acltags);
|
|
||||||
$agent['counters']['ok'] = (int) groups_get_normal_monitors ($agent['rootID'], $agent_filter, $module_filter, true, $this->acltags);
|
|
||||||
$agent['counters']['total'] = (int) groups_get_total_monitors ($agent['rootID'], $agent_filter, $module_filter, true, $this->acltags);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ($agent['rootType'] == "tag") {
|
|
||||||
$agent['counters']['alerts'] = (int) tags_monitors_fired_alerts ($agent['rootID'], $this->acltags, $agent['id']);
|
|
||||||
|
|
||||||
// With module filter
|
|
||||||
if (isset($this->filter["statusModule"]) && $this->filter["statusModule"] != AGENT_MODULE_STATUS_ALL) {
|
|
||||||
switch ($this->filter["statusModule"]) {
|
|
||||||
case AGENT_MODULE_STATUS_CRITICAL_ALERT:
|
|
||||||
case AGENT_MODULE_STATUS_CRITICAL_BAD:
|
|
||||||
$agent['counters']['critical'] = (int) tags_get_critical_monitors ($agent['rootID'], $this->acltags, $agent_filter, $module_filter);
|
|
||||||
$agent['counters']['total'] = $agent['counters']['critical'];
|
|
||||||
break;
|
|
||||||
case AGENT_MODULE_STATUS_WARNING_ALERT:
|
|
||||||
case AGENT_MODULE_STATUS_WARNING:
|
|
||||||
$agent['counters']['warning'] = (int) tags_get_warning_monitors ($agent['rootID'], $this->acltags, $agent_filter, $module_filter);
|
|
||||||
$agent['counters']['total'] = $agent['counters']['warning'];
|
|
||||||
break;
|
|
||||||
case AGENT_MODULE_STATUS_UNKNOWN:
|
|
||||||
$agent['counters']['unknown'] = (int) tags_get_unknown_monitors ($agent['rootID'], $this->acltags, $agent_filter, $module_filter);
|
|
||||||
$agent['counters']['total'] = $agent['counters']['unknown'];
|
|
||||||
break;
|
|
||||||
case AGENT_MODULE_STATUS_NO_DATA:
|
|
||||||
case AGENT_MODULE_STATUS_NOT_INIT:
|
|
||||||
$agent['counters']['not_init'] = (int) tags_get_not_init_monitors ($agent['rootID'], $this->acltags, $agent_filter, $module_filter);
|
|
||||||
$agent['counters']['total'] = $agent['counters']['not_init'];
|
|
||||||
break;
|
|
||||||
case AGENT_MODULE_STATUS_NORMAL_ALERT:
|
|
||||||
case AGENT_MODULE_STATUS_NORMAL:
|
|
||||||
$agent['counters']['ok'] = (int) tags_get_normal_monitors ($agent['rootID'], $this->acltags, $agent_filter, $module_filter);
|
|
||||||
$agent['counters']['total'] = $agent['counters']['ok'];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Without module filter
|
|
||||||
else {
|
|
||||||
$agent['counters']['unknown'] = (int) tags_get_unknown_monitors ($agent['rootID'], $this->acltags, $agent_filter, $module_filter);
|
|
||||||
$agent['counters']['critical'] = (int) tags_get_critical_monitors ($agent['rootID'], $this->acltags, $agent_filter, $module_filter);
|
|
||||||
$agent['counters']['warning'] = (int) tags_get_warning_monitors ($agent['rootID'], $this->acltags, $agent_filter, $module_filter);
|
|
||||||
$agent['counters']['not_init'] = (int) tags_get_not_init_monitors ($agent['rootID'], $this->acltags, $agent_filter, $module_filter);
|
|
||||||
$agent['counters']['ok'] = (int) tags_get_normal_monitors ($agent['rootID'], $this->acltags, $agent_filter, $module_filter);
|
|
||||||
$agent['counters']['total'] = (int) tags_get_total_monitors ($agent['rootID'], $this->acltags, $agent_filter, $module_filter);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($this->filter["statusAgent"]) && $this->filter["statusAgent"] != AGENT_STATUS_ALL) {
|
|
||||||
switch ($this->filter["statusAgent"]) {
|
|
||||||
case AGENT_STATUS_CRITICAL:
|
|
||||||
if ($agent['counters']['critical'] == 0)
|
|
||||||
$agent = array();
|
|
||||||
break;
|
|
||||||
case AGENT_STATUS_WARNING:
|
|
||||||
if ($agent['counters']['total'] == 0 || $agent['counters']['critical'] > 0 || $agent['counters']['warning'] == 0)
|
|
||||||
$agent = array();
|
|
||||||
break;
|
|
||||||
case AGENT_STATUS_UNKNOWN:
|
|
||||||
if ($agent['counters']['critical'] > 0 || $agent['counters']['warning'] > 0 || $agent['counters']['unknown'] == 0)
|
|
||||||
$agent = array();
|
|
||||||
break;
|
|
||||||
case AGENT_STATUS_NOT_INIT:
|
|
||||||
if ($agent['counters']['total'] != 0 && $agent['counters']['total'] != $agent['counters']['not_init'])
|
|
||||||
$agent = array();
|
|
||||||
break;
|
|
||||||
case AGENT_STATUS_NORMAL:
|
|
||||||
if ($agent['counters']['critical'] > 0 || $agent['counters']['warning'] > 0 || $agent['counters']['unknown'] > 0 || $agent['counters']['ok'] == 0)
|
|
||||||
$agent = array();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// Leave the function
|
|
||||||
if (empty($agent))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Counters
|
// Counters
|
||||||
if (empty($agent['counters'])) {
|
if (empty($agent['counters'])) {
|
||||||
$agent['counters'] = array();
|
$agent['counters'] = array();
|
||||||
@ -2005,16 +1865,8 @@ class Tree {
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Item found
|
// Item found
|
||||||
if ($strictACL && is_metaconsole()) {
|
if ($item["id"] == $item_id)
|
||||||
foreach ($item["id"] as $server_id => $id) {
|
return $item;
|
||||||
if ($id == $item_id)
|
|
||||||
return $item;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if ($item["id"] == $item_id)
|
|
||||||
return $item;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($item["type"] == "group" && !empty($item["children"])) {
|
if ($item["type"] == "group" && !empty($item["children"])) {
|
||||||
$result = self::extractItemWithID($item["children"], $item_id, $item_type, $strictACL);
|
$result = self::extractItemWithID($item["children"], $item_id, $item_type, $strictACL);
|
||||||
@ -2031,54 +1883,29 @@ class Tree {
|
|||||||
|
|
||||||
public function getData() {
|
public function getData() {
|
||||||
if (! is_metaconsole()) {
|
if (! is_metaconsole()) {
|
||||||
if ($this->strictACL) {
|
|
||||||
switch ($this->type) {
|
|
||||||
case 'group':
|
|
||||||
case 'tag':
|
|
||||||
$this->getDataStrict();
|
|
||||||
break;
|
|
||||||
case 'agent':
|
|
||||||
$this->getDataAgent();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
switch ($this->type) {
|
|
||||||
case 'os':
|
|
||||||
$this->getDataOS();
|
|
||||||
break;
|
|
||||||
case 'group':
|
|
||||||
$this->getDataGroup();
|
|
||||||
break;
|
|
||||||
case 'module_group':
|
|
||||||
$this->getDataModuleGroup();
|
|
||||||
break;
|
|
||||||
case 'module':
|
|
||||||
$this->getDataModules();
|
|
||||||
break;
|
|
||||||
case 'tag':
|
|
||||||
$this->getDataTag();
|
|
||||||
break;
|
|
||||||
case 'agent':
|
|
||||||
$this->getDataAgent();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$this->getDataExtended();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ($this->strictACL) {
|
|
||||||
switch ($this->type) {
|
switch ($this->type) {
|
||||||
|
case 'os':
|
||||||
|
$this->getDataOS();
|
||||||
|
break;
|
||||||
case 'group':
|
case 'group':
|
||||||
|
$this->getDataGroup();
|
||||||
|
break;
|
||||||
|
case 'module_group':
|
||||||
|
$this->getDataModuleGroup();
|
||||||
|
break;
|
||||||
|
case 'module':
|
||||||
|
$this->getDataModules();
|
||||||
|
break;
|
||||||
case 'tag':
|
case 'tag':
|
||||||
$this->getDataStrict();
|
$this->getDataTag();
|
||||||
break;
|
break;
|
||||||
case 'agent':
|
case 'agent':
|
||||||
$this->getDataAgent();
|
$this->getDataAgent();
|
||||||
break;
|
break;
|
||||||
}
|
default:
|
||||||
}
|
$this->getDataExtended();
|
||||||
else {
|
}
|
||||||
|
} else {
|
||||||
if ($this->type == 'agent') {
|
if ($this->type == 'agent') {
|
||||||
$this->getDataAgent();
|
$this->getDataAgent();
|
||||||
}
|
}
|
||||||
@ -2868,17 +2695,19 @@ class Tree {
|
|||||||
'condition' => ""
|
'condition' => ""
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
$table = is_metaconsole() ? "tmetaconsole_agent" : "tagente";
|
||||||
|
$table_sec = is_metaconsole() ? "tmetaconsole_agent_secondary_group" : "tagent_secondary_group";
|
||||||
$sql_model = "SELECT %s FROM
|
$sql_model = "SELECT %s FROM
|
||||||
(
|
(
|
||||||
SELECT COUNT(ta.id_agente) AS total, id_group AS g
|
SELECT COUNT(ta.id_agente) AS total, id_group AS g
|
||||||
FROM tagente ta INNER JOIN tagent_secondary_group tasg
|
FROM $table ta INNER JOIN $table_sec tasg
|
||||||
ON ta.id_agente = tasg.id_agent
|
ON ta.id_agente = tasg.id_agent
|
||||||
WHERE ta.disabled = 0
|
WHERE ta.disabled = 0
|
||||||
%s
|
%s
|
||||||
GROUP BY id_group
|
GROUP BY id_group
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT COUNT(ta.id_agente) AS total, id_grupo AS g
|
SELECT COUNT(ta.id_agente) AS total, id_grupo AS g
|
||||||
FROM tagente ta
|
FROM $table ta
|
||||||
WHERE ta.disabled = 0
|
WHERE ta.disabled = 0
|
||||||
%s
|
%s
|
||||||
GROUP BY id_grupo
|
GROUP BY id_grupo
|
||||||
|
Loading…
x
Reference in New Issue
Block a user