mirror of
				https://github.com/pandorafms/pandorafms.git
				synced 2025-10-31 19:44:38 +01:00 
			
		
		
		
	Fixed cached group view in node
This commit is contained in:
		
							parent
							
								
									ec050ba606
								
							
						
					
					
						commit
						0757d2ed56
					
				| @ -393,10 +393,8 @@ function groupview_monitor_alerts ($group_array, $strict_user = false, $id_group | |||||||
| function groupview_monitor_fired_alerts ($group_array, $strict_user = false, $id_group_strict = false) { | function groupview_monitor_fired_alerts ($group_array, $strict_user = false, $id_group_strict = false) { | ||||||
| 
 | 
 | ||||||
| 	// If there are not groups to query, we jump to nextone
 | 	// If there are not groups to query, we jump to nextone
 | ||||||
| 
 |  | ||||||
| 	if (empty ($group_array)) { | 	if (empty ($group_array)) { | ||||||
| 		return 0; | 		return 0; | ||||||
| 
 |  | ||||||
| 	} | 	} | ||||||
| 	else if (!is_array ($group_array)) { | 	else if (!is_array ($group_array)) { | ||||||
| 		$group_array = array($group_array); | 		$group_array = array($group_array); | ||||||
| @ -405,30 +403,12 @@ function groupview_monitor_fired_alerts ($group_array, $strict_user = false, $id | |||||||
| 	$group_clause = implode (",", $group_array); | 	$group_clause = implode (",", $group_array); | ||||||
| 	$group_clause = "(" . $group_clause . ")"; | 	$group_clause = "(" . $group_clause . ")"; | ||||||
| 
 | 
 | ||||||
| 
 | 	return db_get_sql ("SELECT COUNT(talert_template_modules.id)
 | ||||||
| 	if ($strict_user) { | 		FROM talert_template_modules, tagente_modulo, tagente_estado, tagente | ||||||
| 		$group_clause_strict = implode (",", $id_group_strict); | 		WHERE tagente.id_grupo IN $group_clause AND tagente_modulo.id_agente = tagente.id_agente | ||||||
| 		$group_clause_strict = "(" . $group_clause_strict . ")"; | 			AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo | ||||||
| 		if ($group_clause_strict !== '()'){ | 			AND talert_template_modules.id_agent_module = tagente_modulo.id_agente_modulo | ||||||
| 			$sql = "SELECT COUNT(talert_template_modules.id)
 | 			AND times_fired > 0");
 | ||||||
| 			FROM talert_template_modules, tagente_modulo, tagente_estado, tagente |  | ||||||
| 			WHERE tagente.id_grupo IN $group_clause_strict AND tagente_modulo.id_agente = tagente.id_agente |  | ||||||
| 				AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo |  | ||||||
| 				AND talert_template_modules.id_agent_module = tagente_modulo.id_agente_modulo |  | ||||||
| 				AND times_fired > 0 ";
 |  | ||||||
| 		} |  | ||||||
| 		$count = db_get_sql ($sql); |  | ||||||
| 		return $count; |  | ||||||
| 	} else { |  | ||||||
| 		//TODO REVIEW ORACLE AND POSTGRES
 |  | ||||||
| 		return db_get_sql ("SELECT COUNT(talert_template_modules.id)
 |  | ||||||
| 			FROM talert_template_modules, tagente_modulo, tagente_estado, tagente |  | ||||||
| 			WHERE tagente.id_grupo IN $group_clause AND tagente_modulo.id_agente = tagente.id_agente |  | ||||||
| 				AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo |  | ||||||
| 				AND talert_template_modules.id_agent_module = tagente_modulo.id_agente_modulo |  | ||||||
| 				AND times_fired > 0");
 |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function groupview_get_groups_list($id_user = false, $user_strict = false, $access = 'AR', $force_group_and_tag = true, $returnAllGroup = false) { | function groupview_get_groups_list($id_user = false, $user_strict = false, $access = 'AR', $force_group_and_tag = true, $returnAllGroup = false) { | ||||||
| @ -630,150 +610,9 @@ function groupview_get_data ($id_user = false, $user_strict = false, $acltags, $ | |||||||
| 		$list_groups = array(); | 		$list_groups = array(); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (is_metaconsole()) { // Agent cache
 | 	if (is_metaconsole() || ($config["realtimestats"] == 0 && !enterprise_hook('agents_is_using_secondary_groups'))) { // Agent cache
 | ||||||
| 		foreach ($list_groups as $group) { | 		$list = group_view_get_cache_stats ($list, $list_groups, $user_groups_ids); | ||||||
| 			// If id group is 0 get all accesses groups
 | 	} else { | ||||||
| 			$group_id = $group['id_grupo'] == 0 |  | ||||||
| 				? $user_groups_ids |  | ||||||
| 				: $group['id_grupo']; |  | ||||||
| 			$group_agents = db_get_row_sql("SELECT SUM(warning_count) AS _monitors_warning_,
 |  | ||||||
| 														SUM(critical_count) AS _monitors_critical_, |  | ||||||
| 														SUM(normal_count) AS _monitors_ok_, |  | ||||||
| 														SUM(unknown_count) AS _monitors_unknown_, |  | ||||||
| 														SUM(notinit_count) AS _monitors_not_init_, |  | ||||||
| 														SUM(fired_count) AS _monitors_alerts_fired_, |  | ||||||
| 														COUNT(*) AS _total_agents_, id_grupo, intervalo, |  | ||||||
| 														ultimo_contacto, disabled |  | ||||||
| 									FROM tmetaconsole_agent ta |  | ||||||
| 									LEFT JOIN tmetaconsole_agent_secondary_group tasg |  | ||||||
| 										ON tasg.id_agent = ta.id_agente |  | ||||||
| 									WHERE ( |  | ||||||
| 										ta.id_grupo IN (" . $group_id . ") |  | ||||||
| 										OR tasg.id_group IN (" . $group_id . ") |  | ||||||
| 									) |  | ||||||
| 									AND disabled = 0");
 |  | ||||||
| 
 |  | ||||||
| 			$list[$group['id_grupo']]['_monitors_critical_']     = (int)$group_agents['_monitors_critical_']; |  | ||||||
| 			$list[$group['id_grupo']]['_monitors_warning_']      = (int)$group_agents['_monitors_warning_']; |  | ||||||
| 			$list[$group['id_grupo']]['_monitors_unknown_']      = (int)$group_agents['_monitors_unknown_']; |  | ||||||
| 			$list[$group['id_grupo']]['_monitors_not_init_']     = (int)$group_agents['_monitors_not_init_']; |  | ||||||
| 			$list[$group['id_grupo']]['_monitors_ok_']           = (int)$group_agents['_monitors_ok_']; |  | ||||||
| 			$list[$group['id_grupo']]['_monitors_alerts_fired_'] = (int)$group_agents['_monitors_alerts_fired_']; |  | ||||||
| 			$list[$group['id_grupo']]['_total_agents_']          = (int)$group_agents['_total_agents_']; |  | ||||||
| 			$list[$group['id_grupo']]["_monitor_checks_"]        = $list[$group['id_grupo']]["_monitors_not_init_"] |  | ||||||
| 																	+ $list[$group['id_grupo']]["_monitors_unknown_"] |  | ||||||
| 																	+ $list[$group['id_grupo']]["_monitors_warning_"] |  | ||||||
| 																	+ $list[$group['id_grupo']]["_monitors_critical_"] |  | ||||||
| 																	+ $list[$group['id_grupo']]["_monitors_ok_"]; |  | ||||||
| 
 |  | ||||||
| 			if ($group['icon']) |  | ||||||
| 				$list[$group['id_grupo']]["_iconImg_"] = html_print_image ("images/".$group['icon'].".png", true, array ("style" => 'vertical-align: middle;')); |  | ||||||
| 
 |  | ||||||
| 			// Calculate not_normal monitors
 |  | ||||||
| 			$list[$group['id_grupo']]["_monitor_not_normal_"] = $list["_monitor_checks_"] - $list["_monitors_ok_"]; |  | ||||||
| 
 |  | ||||||
| 			$total_agents = $list[$group['id_grupo']]['_total_agents_']; |  | ||||||
| 
 |  | ||||||
| 			if ($total_agents > 0) { |  | ||||||
| 				$agents = db_get_all_rows_sql(sprintf ("SELECT warning_count,
 |  | ||||||
| 													critical_count, |  | ||||||
| 													normal_count, |  | ||||||
| 													unknown_count, |  | ||||||
| 													notinit_count, |  | ||||||
| 													fired_count, |  | ||||||
| 													disabled |  | ||||||
| 												FROM tmetaconsole_agent ta |  | ||||||
| 												LEFT JOIN tmetaconsole_agent_secondary_group tasg |  | ||||||
| 													ON ta.id_agente = tasg.id_agent |  | ||||||
| 												WHERE ta.id_grupo IN (%s) OR tasg.id_group IN (%s)",
 |  | ||||||
| 					$group_id, $group_id)); |  | ||||||
| 				foreach ($agents as $agent) { |  | ||||||
| 					if ($agent['critical_count'] > 0) { |  | ||||||
| 						$list[$group['id_grupo']]['_agents_critical_'] += 1; |  | ||||||
| 					} |  | ||||||
| 					else { |  | ||||||
| 						if (($agent['critical_count'] == 0) && ($agent['warning_count'] == 0) && ($group_agents['disabled'] == 0) && ($agent['normal_count'] == 0)) { |  | ||||||
| 							if ($agent['unknown_count'] > 0) { |  | ||||||
| 								$list[$group['id_grupo']]['_agents_unknown_'] += 1; |  | ||||||
| 							} |  | ||||||
| 						} |  | ||||||
| 						if (($agent['critical_count'] == 0) && ($agent['warning_count'] == 0) && ($group_agents['disabled'] == 0) && ($agent['normal_count'] == 0) && ($agent['unknown_count'] == 0)) { |  | ||||||
| 							if ($agent['notinit_count'] > 0) { |  | ||||||
| 								$list[$group['id_grupo']]['_agents_not_init_'] += 1; |  | ||||||
| 							} |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	else if (false) { //FIXME: The cached group view is wasted. Avoid to reach this code.
 |  | ||||||
| 
 |  | ||||||
| 		$group_stat = db_get_all_rows_sql ("SELECT
 |  | ||||||
| 			SUM(ta.normal_count) as normal, SUM(ta.critical_count) as critical, |  | ||||||
| 			SUM(ta.warning_count) as warning,SUM(ta.unknown_count) as unknown, |  | ||||||
| 			SUM(ta.notinit_count) as not_init, SUM(fired_count) as alerts_fired |  | ||||||
| 			FROM tagente ta |  | ||||||
| 			WHERE id_grupo IN ($user_groups_ids)");
 |  | ||||||
| 
 |  | ||||||
| 		$list['_agents_unknown_'] = $group_stat[0]["unknown"]; |  | ||||||
| 		$list['_monitors_alerts_fired_'] = $group_stat[0]["alerts_fired"]; |  | ||||||
| 
 |  | ||||||
| 		$list['_monitors_ok_'] = $group_stat[0]["normal"]; |  | ||||||
| 		$list['_monitors_warning_'] = $group_stat[0]["warning"]; |  | ||||||
| 		$list['_monitors_critical_'] = $group_stat[0]["critical"]; |  | ||||||
| 		$list['_monitors_unknown_'] = $group_stat[0]["unknown"]; |  | ||||||
| 		$list['_monitors_not_init_'] = $group_stat[0]["not_init"]; |  | ||||||
| 		$total_agentes = agents_get_agents (false, array('count(*) as total_agents'), $access,false, false); |  | ||||||
| 		$list['_total_agents_'] = $total_agentes[0]['total_agents']; |  | ||||||
| 		$list["_monitor_alerts_fire_count_"] = $group_stat[0]["alerts_fired"]; |  | ||||||
| 
 |  | ||||||
| 		$list['_monitors_alerts_'] = groupview_monitor_alerts (explode(',',$user_groups_ids), $user_strict,explode(',',$user_groups_ids)); |  | ||||||
| 		// Get total count of monitors for this group, except disabled.
 |  | ||||||
| 		$list["_monitor_checks_"] = $list["_monitors_not_init_"] + $list["_monitors_unknown_"] + $list["_monitors_warning_"] + $list["_monitors_critical_"] + $list["_monitors_ok_"]; |  | ||||||
| 
 |  | ||||||
| 		// Calculate not_normal monitors
 |  | ||||||
| 		$list["_monitor_not_normal_"] = $list["_monitor_checks_"] - $list["_monitors_ok_"]; |  | ||||||
| 
 |  | ||||||
| 		if ($list["_monitor_not_normal_"] > 0 && $list["_monitor_checks_"] > 0) { |  | ||||||
| 			$list["_monitor_health_"] = format_numeric (100 - ($list["_monitor_not_normal_"] / ($list["_monitor_checks_"] / 100)), 1); |  | ||||||
| 		} |  | ||||||
| 		else { |  | ||||||
| 			$list["_monitor_health_"] = 100; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		if ($list["_monitors_not_init_"] > 0 && $list["_monitor_checks_"] > 0) { |  | ||||||
| 			$list["_module_sanity_"] = format_numeric (100 - ($list["_monitors_not_init_"] / ($list["_monitor_checks_"] / 100)), 1); |  | ||||||
| 		} |  | ||||||
| 		else { |  | ||||||
| 			$list["_module_sanity_"] = 100; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		if (isset($list["_alerts_"])) { |  | ||||||
| 			if ($list["_monitors_alerts_fired_"] > 0 && $list["_alerts_"] > 0) { |  | ||||||
| 				$list["_alert_level_"] = format_numeric (100 - ($list["_monitors_alerts_fired_"] / ($list["_alerts_"] / 100)), 1); |  | ||||||
| 			} |  | ||||||
| 			else { |  | ||||||
| 				$list["_alert_level_"] = 100; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		else { |  | ||||||
| 			$list["_alert_level_"] = 100; |  | ||||||
| 			$list["_alerts_"] = 0; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		$list["_monitor_bad_"] = $list["_monitors_critical_"] + $list["_monitors_warning_"]; |  | ||||||
| 
 |  | ||||||
| 		if ($list["_monitor_bad_"] > 0 && $list["_monitor_checks_"] > 0) { |  | ||||||
| 			$list["_global_health_"] = format_numeric (100 - ($list["_monitor_bad_"] / ($list["_monitor_checks_"] / 100)), 1); |  | ||||||
| 		} |  | ||||||
| 		else { |  | ||||||
| 			$list["_global_health_"] = 100; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		$list["_server_sanity_"] = format_numeric (100 - $list["_module_sanity_"], 1); |  | ||||||
| 	} |  | ||||||
| 	else { |  | ||||||
| 		foreach ($list_groups as $group) { | 		foreach ($list_groups as $group) { | ||||||
| 			// If id group is 0 get all accesses groups
 | 			// If id group is 0 get all accesses groups
 | ||||||
| 			$group_id = $group['id_grupo'] == 0 | 			$group_id = $group['id_grupo'] == 0 | ||||||
| @ -954,4 +793,100 @@ function groupview_array_unique_multidim($groups, $key){ | |||||||
|     return $temp_group; |     return $temp_group; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * Get the stats to group view using the cache | ||||||
|  |  * | ||||||
|  |  * @param array Skeleton to fill with the group information | ||||||
|  |  * @param array Groups information | ||||||
|  |  * @param string Groups that user has access separated by commas | ||||||
|  |  */ | ||||||
|  | function group_view_get_cache_stats ($list, $list_groups, $user_groups_ids) { | ||||||
|  | 
 | ||||||
|  | 	$table_agent = 'tagente'; | ||||||
|  | 	$table_secondary = 'tagent_secondary_group'; | ||||||
|  | 	// Change the metaconsole tables
 | ||||||
|  | 	if (is_metaconsole()) { | ||||||
|  | 		$table_agent = 'tmetaconsole_agent'; | ||||||
|  | 		$table_secondary = 'tmetaconsole_secondary_group'; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// Walk for each group
 | ||||||
|  | 	foreach ($list_groups as $group) { | ||||||
|  | 		// If id group is 0 get all accesses groups
 | ||||||
|  | 		$group_id = $group['id_grupo'] == 0 | ||||||
|  | 			? $user_groups_ids | ||||||
|  | 			: $group['id_grupo']; | ||||||
|  | 		$group_agents = db_get_row_sql("SELECT SUM(warning_count) AS _monitors_warning_,
 | ||||||
|  | 													SUM(critical_count) AS _monitors_critical_, | ||||||
|  | 													SUM(normal_count) AS _monitors_ok_, | ||||||
|  | 													SUM(unknown_count) AS _monitors_unknown_, | ||||||
|  | 													SUM(notinit_count) AS _monitors_not_init_, | ||||||
|  | 													SUM(fired_count) AS _monitors_alerts_fired_, | ||||||
|  | 													COUNT(*) AS _total_agents_, id_grupo, intervalo, | ||||||
|  | 													ultimo_contacto, disabled | ||||||
|  | 								FROM $table_agent ta | ||||||
|  | 								LEFT JOIN $table_secondary tasg | ||||||
|  | 									ON tasg.id_agent = ta.id_agente | ||||||
|  | 								WHERE ( | ||||||
|  | 									ta.id_grupo IN (" . $group_id . ") | ||||||
|  | 									OR tasg.id_group IN (" . $group_id . ") | ||||||
|  | 								) | ||||||
|  | 								AND disabled = 0");
 | ||||||
|  | 
 | ||||||
|  | 		$list[$group['id_grupo']]['_monitors_critical_']     = (int)$group_agents['_monitors_critical_']; | ||||||
|  | 		$list[$group['id_grupo']]['_monitors_warning_']      = (int)$group_agents['_monitors_warning_']; | ||||||
|  | 		$list[$group['id_grupo']]['_monitors_unknown_']      = (int)$group_agents['_monitors_unknown_']; | ||||||
|  | 		$list[$group['id_grupo']]['_monitors_not_init_']     = (int)$group_agents['_monitors_not_init_']; | ||||||
|  | 		$list[$group['id_grupo']]['_monitors_ok_']           = (int)$group_agents['_monitors_ok_']; | ||||||
|  | 		$list[$group['id_grupo']]['_monitors_alerts_fired_'] = (int)$group_agents['_monitors_alerts_fired_']; | ||||||
|  | 		$list[$group['id_grupo']]['_total_agents_']          = (int)$group_agents['_total_agents_']; | ||||||
|  | 		$list[$group['id_grupo']]["_monitor_checks_"]        = $list[$group['id_grupo']]["_monitors_not_init_"] | ||||||
|  | 																+ $list[$group['id_grupo']]["_monitors_unknown_"] | ||||||
|  | 																+ $list[$group['id_grupo']]["_monitors_warning_"] | ||||||
|  | 																+ $list[$group['id_grupo']]["_monitors_critical_"] | ||||||
|  | 																+ $list[$group['id_grupo']]["_monitors_ok_"]; | ||||||
|  | 
 | ||||||
|  | 		if ($group['icon']) | ||||||
|  | 			$list[$group['id_grupo']]["_iconImg_"] = html_print_image ("images/".$group['icon'].".png", true, array ("style" => 'vertical-align: middle;')); | ||||||
|  | 
 | ||||||
|  | 		// Calculate not_normal monitors
 | ||||||
|  | 		$list[$group['id_grupo']]["_monitor_not_normal_"] = $list["_monitor_checks_"] - $list["_monitors_ok_"]; | ||||||
|  | 
 | ||||||
|  | 		$total_agents = $list[$group['id_grupo']]['_total_agents_']; | ||||||
|  | 
 | ||||||
|  | 		if ($total_agents > 0) { | ||||||
|  | 			$agents = db_get_all_rows_sql(sprintf ("SELECT warning_count,
 | ||||||
|  | 												critical_count, | ||||||
|  | 												normal_count, | ||||||
|  | 												unknown_count, | ||||||
|  | 												notinit_count, | ||||||
|  | 												fired_count, | ||||||
|  | 												disabled | ||||||
|  | 											FROM $table_agent ta | ||||||
|  | 											LEFT JOIN $table_secondary tasg | ||||||
|  | 												ON ta.id_agente = tasg.id_agent | ||||||
|  | 											WHERE ta.id_grupo IN (%s) OR tasg.id_group IN (%s)",
 | ||||||
|  | 				$group_id, $group_id)); | ||||||
|  | 			foreach ($agents as $agent) { | ||||||
|  | 				if ($agent['critical_count'] > 0) { | ||||||
|  | 					$list[$group['id_grupo']]['_agents_critical_'] += 1; | ||||||
|  | 				} | ||||||
|  | 				else { | ||||||
|  | 					if (($agent['critical_count'] == 0) && ($agent['warning_count'] == 0) && ($group_agents['disabled'] == 0) && ($agent['normal_count'] == 0)) { | ||||||
|  | 						if ($agent['unknown_count'] > 0) { | ||||||
|  | 							$list[$group['id_grupo']]['_agents_unknown_'] += 1; | ||||||
|  | 						} | ||||||
|  | 					} | ||||||
|  | 					if (($agent['critical_count'] == 0) && ($agent['warning_count'] == 0) && ($group_agents['disabled'] == 0) && ($agent['normal_count'] == 0) && ($agent['unknown_count'] == 0)) { | ||||||
|  | 						if ($agent['notinit_count'] > 0) { | ||||||
|  | 							$list[$group['id_grupo']]['_agents_not_init_'] += 1; | ||||||
|  | 						} | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return $list; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| ?>
 | ?>
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user