" . __('Counters Module') . "

"; echo "
  • " . __('Alerts_Fired') . ": " . $send_tooltip['alerts_module_count'] . "
  • "; echo "
  • " . __('Critical') . ": " . $send_tooltip['critical_module_count'] . "
  • "; echo "
  • " . __('warning') . ": " . $send_tooltip['warning_module_count'] . "
  • "; echo "
  • " . __('Unknown') . ": " . $send_tooltip['unknown_module_count'] . "
  • "; echo "
  • " . __('OK') . ": " . $send_tooltip['normal_module_count'] . "
  • "; echo "
  • " . __('Not_init') . ": " . $send_tooltip['notInit_module_count'] . "
  • "; } } /** * The main function of module groups and the enter point to * execute the code. */ function mainModuleGroups() { global $config; require_once($config['homedir'] . "/include/class/TreeGroup.class.php"); require_once($config['homedir'] . "/include/functions_groupview.php"); $tree_group = new TreeGroup("group", "group"); $tree_group->setPropagateCounters(false); $tree_group->setDisplayAllGroups(true); $tree_group->setFilter( array( 'searchAgent' => '', 'statusAgent' => AGENT_STATUS_ALL, 'searchModule' => '', 'statusModule' => -1, 'groupID' => 0, 'tagID' => 0, 'show_not_init_agents' => 1, 'show_not_init_modules' => 1 )); $info = $tree_group->getArray(); $info = groupview_plain_groups($info); $counter = count($info); $offset = get_parameter('offset', 0); $agent_group_search = get_parameter('agent_group_search', ''); $module_group_search = get_parameter('module_group_search', ''); $info = array_filter($info, function($v, $k) use ($agent_group_search) { return preg_match("/$agent_group_search/i", $v['name']); }, ARRAY_FILTER_USE_BOTH); if (!empty($info)) { $groups_view = $is_not_paginated ? $info : array_slice($info, $offset, $config['block_size']); $agents_counters = array_reduce($groups_view, function($carry, $item){ $carry[$item['id']] = $item; return $carry; }, array()); $ids_array = array_keys($agents_counters); $ids_group = implode(',', $ids_array); } else $ids_group = -1; $condition_critical = modules_get_state_condition(AGENT_MODULE_STATUS_CRITICAL_ALERT); $condition_warning = modules_get_state_condition(AGENT_MODULE_STATUS_WARNING_ALERT); $condition_unknown = modules_get_state_condition(AGENT_MODULE_STATUS_UNKNOWN); $condition_not_init = modules_get_state_condition(AGENT_MODULE_STATUS_NO_DATA); $condition_normal = modules_get_state_condition(AGENT_MODULE_STATUS_NORMAL); $array_for_defect = array(); $array_module_group = array(); $array_data = array(); $sql = "SELECT id_mg, `name` FROM tmodule_group"; $array_mod= db_get_all_rows_sql($sql); foreach ($array_mod as $key => $value) { $array_module_group[$value['id_mg']] = $value['name']; } $array_module_group[0] = 'Nothing'; $array_module_group = array_filter($array_module_group, function($v, $k) use ($module_group_search) { return preg_match("/$module_group_search/i", $v); }, ARRAY_FILTER_USE_BOTH); foreach ($agents_counters as $key => $value) { $array_for_defect[$key]['gm'] = $array_module_group; $array_for_defect[$key]['data']['name'] = $value['name']; $array_for_defect[$key]['data']['parent'] = $value['parent']; $array_for_defect[$key]['data']['icon'] = $value['icon']; } $sql = "SELECT SUM(IF(tae.alert_fired <> 0, 1, 0)) AS alerts_module_count, SUM(IF($condition_warning, 1, 0)) AS warning_module_count, SUM(IF($condition_unknown, 1, 0)) AS unknown_module_count, SUM(IF($condition_not_init, 1, 0)) AS notInit_module_count, SUM(IF($condition_critical, 1, 0)) AS critical_module_count, SUM(IF($condition_normal, 1, 0)) AS normal_module_count, COUNT(tae.id_agente_modulo) AS total_count, tmg.id_mg, tmg.name as n, tg.id_grupo FROM ( SELECT tam.id_agente_modulo, tam.id_module_group, ta.id_grupo AS g, tae.estado, SUM(IF(tatm.last_fired <> 0, 1, 0)) AS alert_fired FROM tagente_modulo tam LEFT JOIN talert_template_modules tatm ON tatm.id_agent_module = tam.id_agente_modulo AND tatm.times_fired = 1 LEFT JOIN tagente_estado tae ON tae.id_agente_modulo = tam.id_agente_modulo INNER JOIN tagente ta ON ta.id_agente = tam.id_agente WHERE ta.disabled = 0 AND tam.disabled = 0 AND tam.delete_pending = 0 AND ta.id_grupo IN ($ids_group) GROUP BY tam.id_agente_modulo UNION ALL SELECT tam.id_agente_modulo, tam.id_module_group, tasg.id_group AS g, tae.estado, SUM(IF(tatm.last_fired <> 0, 1, 0)) AS alert_fired FROM tagente_modulo tam LEFT JOIN talert_template_modules tatm ON tatm.id_agent_module = tam.id_agente_modulo AND tatm.times_fired = 1 LEFT JOIN tagente_estado tae ON tae.id_agente_modulo = tam.id_agente_modulo INNER JOIN tagente ta ON ta.id_agente = tam.id_agente INNER JOIN tagent_secondary_group tasg ON ta.id_agente = tasg.id_agent WHERE ta.disabled = 0 AND tam.disabled = 0 AND tam.delete_pending = 0 AND tasg.id_group IN ($ids_group) GROUP BY tam.id_agente_modulo, tasg.id_group ) AS tae RIGHT JOIN tgrupo tg ON tg.id_grupo = tae.g INNER JOIN ( SELECT * FROM tmodule_group UNION ALL SELECT 0 AS 'id_mg', 'Nothing' AS 'name' ) AS tmg ON tae.id_module_group = tmg.id_mg GROUP BY tae.g, tmg.id_mg"; $array_data_prev = db_get_all_rows_sql($sql); foreach ($array_data_prev as $key => $value) { $array_data[$value['id_grupo']][$value['id_mg']] = $value; } ui_print_page_header (__("Combined table of agent group and module group"), "images/module_group.png", false, "", false, ''); echo ""; echo ""; echo "
    "; echo __('Search by agent group') . ' '; html_print_input_text ("agent_group_search", $agent_group_search); echo ""; echo __('Search by module group') . ' '; html_print_input_text ("module_group_search", $module_group_search); echo ""; echo ""; echo ""; echo ""; echo "
    "; if(true){ $table = new StdClass(); $table->style[0] = 'color: #ffffff; background-color: #373737; font-weight: bolder; padding-right: 10px; min-width: 230px;'; $table->width = '100%'; $head[0] = __('Groups'); $headstyle[0] = "width: 20%; font-weight: bolder;"; foreach ($array_module_group as $key => $value) { $headstyle[] = "min-width: 60px;max-width: 5%;text-align:center; color: #ffffff; background-color: #373737; font-weight: bolder;"; $head[] = ui_print_truncate_text($value, GENERIC_SIZE_TEXT, true, true, true, '…', 'color:#FFF'); } $i = 0; foreach ($array_for_defect as $key => $value) { $deep = groups_get_group_deep($key); $data[$i][0] = $deep . ui_print_truncate_text($value['data']['name'], GENERIC_SIZE_TEXT, true, true, true, '…', 'color:#FFF'); $j = 1; if(isset($array_data[$key])){ foreach ($value['gm'] as $k => $v) { if(isset($array_data[$key][$k])){ $send_tooltip = json_encode($array_data[$key][$k]); $rel = "ajax.php?page=extensions/module_groups&get_info_alert_module_group=1&send_tooltip=" . $send_tooltip; $url = "index.php?sec=estado&sec2=operation/agentes/status_monitor&status=-1&ag_group=" . $key . "&modulegroup=" . $k; if ($array_data[$key][$k]['alerts_module_count'] != 0) { $color = '#FFA631'; //Orange when the cell for this model group and agent has at least one alert fired. } else if ($array_data[$key][$k]['critical_module_count'] != 0) { $color = '#FC4444'; //Red when the cell for this model group and agent has at least one module in critical state and the rest in any state. } elseif ($array_data[$key][$k]['warning_module_count'] != 0) { $color = '#FAD403'; //Yellow when the cell for this model group and agent has at least one in warning state and the rest in green state. } elseif ($array_data[$key][$k]['unknown_module_count'] != 0) { $color = '#B2B2B2 '; //Grey when the cell for this model group and agent has at least one module in unknown state and the rest in any state. } elseif ($array_data[$key][$k]['normal_module_count'] != 0) { $color = '#80BA27'; //Green when the cell for this model group and agent has OK state all modules. } elseif ($array_data[$key][$k]['notInit_module_count'] != 0) { $color = '#5BB6E5'; // Blue when the cell for this module group and all modules have not init value. } $data[$i][$j] ="
    "; $data[$i][$j] .= ""; $data[$i][$j] .= $array_data[$key][$k]['total_count']; $data[$i][$j] .= "
    "; } else{ $data[$i][$j] ="
    "; $data[$i][$j] .= 0; $data[$i][$j] .= "
    "; } $j++; } } else{ foreach ($value['gm'] as $k => $v) { $data[$i][$j] ="
    "; $data[$i][$j] .= 0; $data[$i][$j] .= "
    "; $j++; } } $i++; } $table->head = $head; $table->headstyle = $headstyle; $table->data = $data; ui_pagination($counter); echo "
    "; html_print_table($table); echo "
    "; ui_pagination($counter); echo "
    "; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
    " . __('Legend') . "
    " . __("Orange cell when the module group and agent have at least one alarm fired.") . "
    " . __("Red cell when the module group and agent have at least one module in critical status and the others in any status") . "
    " . __("Yellow cell when the module group and agent have at least one in warning status and the others in grey or green status") . "
    " . __("Grey cell when the module group and agent have at least one in unknown status and the others in green status") . "
    " . __("Green cell when the module group and agent have all modules in OK status") . "
    " .__("Blue cell when the module group and agent have all modules in not init status.") . "
    "; echo "
    "; } else { ui_print_info_message ( array('no_close'=>true, 'message'=> __("This table shows in columns the modules group and in rows agents group. The cell shows all modules") )); ui_print_info_message ( array('no_close'=>true, 'message'=> __('There are no defined groups or module groups') )); } ui_require_css_file('cluetip'); ui_require_jquery_file('cluetip'); ?>