From 13b2d71e71b35ba28a10dd526826997daca1ecb0 Mon Sep 17 00:00:00 2001 From: slerena Date: Tue, 1 Sep 2009 15:25:18 +0000 Subject: [PATCH] 2009-09-01 Sancho Lerena * pandoradb_data.sql: Updated version, added two new module groups and some cleanup. * pandoradb.sql: Added cascade_protection field in tagente and removed old server information from 2.x scheme. * extras/pandoradb_migrate_v2.x_to_v3.0.sql: Added new fields (trecon_task and tagente) and drop old server information from tagente table. * configurar_agente.php, agent_manager.php: Added cascade protection GUI checkbox and logic. * images/help: Added graph directory for help. * help/en/cascade_protection.php: Added help topic. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1898 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_console/ChangeLog | 18 ++++++++++++++++++ .../extras/pandoradb_migrate_v2.x_to_v3.0.sql | 13 +++++++++++++ .../godmode/agentes/agent_manager.php | 4 +++- .../godmode/agentes/configurar_agente.php | 11 ++++++++++- .../help/cascade_protection_ilustration.png | Bin 0 -> 53686 bytes .../help/en/help_cascade_protection.php | 12 ++++++++++++ pandora_console/pandoradb.sql | 5 +---- pandora_console/pandoradb_data.sql | 10 +++++----- 8 files changed, 62 insertions(+), 11 deletions(-) create mode 100644 pandora_console/images/help/cascade_protection_ilustration.png create mode 100644 pandora_console/include/help/en/help_cascade_protection.php diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index 51d6d42c8f..c35890164b 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,21 @@ +2009-09-01 Sancho Lerena + + * pandoradb_data.sql: Updated version, added two new module groups and + some cleanup. + + * pandoradb.sql: Added cascade_protection field in tagente and removed + old server information from 2.x scheme. + + * extras/pandoradb_migrate_v2.x_to_v3.0.sql: Added new fields (trecon_task + and tagente) and drop old server information from tagente table. + + * configurar_agente.php, agent_manager.php: Added cascade protection + GUI checkbox and logic. + + * images/help: Added graph directory for help. + + * help/en/cascade_protection.php: Added help topic. + 2009-08-01 Miguel de Dios * include/functions_menu.php: add lines of code that I forget in the diff --git a/pandora_console/extras/pandoradb_migrate_v2.x_to_v3.0.sql b/pandora_console/extras/pandoradb_migrate_v2.x_to_v3.0.sql index a4d9fbaa30..a4100e8da2 100644 --- a/pandora_console/extras/pandoradb_migrate_v2.x_to_v3.0.sql +++ b/pandora_console/extras/pandoradb_migrate_v2.x_to_v3.0.sql @@ -278,3 +278,16 @@ ALTER TABLE tusuario ADD `language` varchar(10) default NULL; ALTER TABLE tserver ADD `server_type` tinyint(3) unsigned NOT NULL default '0'; ALTER TABLE tserver ADD `queued_modules` int(5) unsigned NOT NULL default '0'; ALTER TABLE tserver ADD `threads` int(5) unsigned NOT NULL default '0'; + +-- August 2009 + +ALTER TABLE trecon_task ADD `recon_ports` varchar(250) NOT NULL default ''; + +ALTER TABLE tagente ADD `cascade_protection` tinyint(2) NOT NULL default '0'; + +ALTER TABLE tagente DROP id_wmi_server; +ALTER TABLE tagente DROP id_network_server; +ALTER TABLE tagente DROP id_plugin_server; +ALTER TABLE tagente DROP id_prediction_server; + + diff --git a/pandora_console/godmode/agentes/agent_manager.php b/pandora_console/godmode/agentes/agent_manager.php index dde19ed29d..096d84d411 100644 --- a/pandora_console/godmode/agentes/agent_manager.php +++ b/pandora_console/godmode/agentes/agent_manager.php @@ -123,7 +123,7 @@ if ($id_agente) { $ip_all = get_agent_addresses ($id_agente); $table->data[1][1] .= print_select ($ip_all, "address_list", $direccion_agente, '', '', 0, true); - $table->data[1][1] .= print_checkbox ("delete_ip", 1, false, true).__('Delete selected'); + $table->data[1][1] .= " ". print_checkbox ("delete_ip", 1, false, true).__('Delete selected'); } $groups = get_user_groups ($config["id_user"]); @@ -134,6 +134,8 @@ $table->data[2][1] = print_input_text_extended ('id_parent', get_agent_name ($id array('style' => 'background: url(images/lightning.png) no-repeat right;'), true) . ' ' . __("Type two chars at least for search") . ''; +$table->data[2][1] .= print_checkbox ("cascade_protection", 1, $cascade_protection, true).__('Cascade protection'). " " . print_help_icon("cascade_protection", true); + $table->data[3][0] = __('Group'); $table->data[3][1] = print_select_from_sql ('SELECT id_grupo, nombre FROM tgrupo WHERE id_grupo > 1 ORDER BY nombre', 'grupo', $grupo, '', '', 0, true); diff --git a/pandora_console/godmode/agentes/configurar_agente.php b/pandora_console/godmode/agentes/configurar_agente.php index c444f0a7e6..e943b7a2e6 100644 --- a/pandora_console/godmode/agentes/configurar_agente.php +++ b/pandora_console/godmode/agentes/configurar_agente.php @@ -102,6 +102,7 @@ $server_name = ''; $grupo = 0; $id_os = 9; // Windows $custom_id = ""; +$cascade_protection = 0; $create_agent = (bool) get_parameter ('create_agent'); @@ -119,6 +120,7 @@ if ($create_agent) { $id_os = (int) get_parameter_post ("id_os"); $disabled = (int) get_parameter_post ("disabled"); $custom_id = (string) get_parameter_post ("custom_id",''); + $cascade_protection = (int) get_parameter_post ("cascade_protection", 0); // Check if agent exists (BUG WC-50518-2) if ($nombre_agente == "") { @@ -134,6 +136,7 @@ if ($create_agent) { 'id_grupo' => $grupo, 'intervalo' => $intervalo, 'comentarios' => $comentarios, 'modo' => $modo, 'id_os' => $id_os, 'disabled' => $disabled, + 'cascade_protection' => $cascade_protection, 'server_name' => $server_name, 'id_parent' => $id_parent, 'custom_id' => $custom_id)); enterprise_hook ('update_agent', array ($id_agente)); @@ -279,6 +282,7 @@ if (isset($_POST["update_agent"])) { // if modified some agent paramenter $id_parent = (string) get_parameter_post ("id_parent"); $id_parent = (int) get_agent_id ($id_parent); $custom_id = (string) get_parameter_post ("custom_id", ""); + $cascade_protection = (int) get_parameter_post ("cascade_protection", 0); //Verify if there is another agent with the same name but different ID if ($nombre_agente == "") { @@ -307,6 +311,7 @@ if (isset($_POST["update_agent"])) { // if modified some agent paramenter 'id_grupo' => $grupo, 'intervalo' => $intervalo, 'comentarios' => $comentarios, + 'cascade_protection' => $cascade_protection, 'server_name' => $server_name, 'custom_id' => $custom_id), array ('id_agente' => $id_agente)); @@ -350,6 +355,8 @@ if ($id_agente) { $disabled = $agent["disabled"]; $id_parent = $agent["id_parent"]; $custom_id = $agent["custom_id"]; + $cascade_protection = $agent["cascade_protection"]; + } $update_module = (bool) get_parameter ('update_module'); @@ -526,7 +533,9 @@ if (isset ($_GET["delete_module"])){ // DELETE agent module ! process_sql_begin (); // First delete from tagente_modulo -> if not successful, increment - // error + // error. NOTICE that we don't delete all data here, just marking for deletion + // and delete some simple data. + if (process_sql ("UPDATE tagente_modulo SET nombre = 'pendingdelete', disabled = 1, delete_pending = 1 WHERE id_agente_modulo = ".$id_borrar_modulo) === false) $error++; diff --git a/pandora_console/images/help/cascade_protection_ilustration.png b/pandora_console/images/help/cascade_protection_ilustration.png new file mode 100644 index 0000000000000000000000000000000000000000..2b0421fb059ee1626385c59fdd95c7952cf692ff GIT binary patch literal 53686 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
    f>OB25U2gsRvBziC<_U&>^@8FT> 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 literal 0 HcmV?d00001 diff --git a/pandora_console/include/help/en/help_cascade_protection.php b/pandora_console/include/help/en/help_cascade_protection.php new file mode 100644 index 0000000000..c957e1698f --- /dev/null +++ b/pandora_console/include/help/en/help_cascade_protection.php @@ -0,0 +1,12 @@ +

    Cascade protection

    + + + +
    +

    +This option is designed to avoid a "storm" of alerts coming because a group of agents are unreachable. This kind of behaviour happen when an intermediate device, as for example a router, is down, and all devices behind it are just not reachable, probably that devices are not down and even that devices are working behind another router, in HA mode, but if you don't do nothing probably Pandora FMS thinks they are down because cannot remotely test it with a Remote ICMP Proc test (a ping). +

    +When you enable cascade protection in an agent, this means that if it's parent has a CRITICAL alert fired, then the agent alerts WILL NOT BE fired. If agent's parent has a module in CRITICAL or several alerts with less criticity than CRITICAL, alerts from the agent will be fired if should be. Cascade protection checks parents alerts with CRITICAL criticity, including the correlation alerts assigned to the parent. +

    +If you want to use an advanced cascade protection system, just use correlation between sucesive parents, and just enable the Cascade Protection in the children. +

    diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index 3f89f0ac9b..523c69ee94 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -52,13 +52,10 @@ CREATE TABLE IF NOT EXISTS `tagente` ( `agent_version` varchar(100) default '', `ultimo_contacto_remoto` datetime default '0000-00-00 00:00:00', `disabled` tinyint(2) NOT NULL default '0', - `id_network_server` smallint(4) unsigned default '0', - `id_plugin_server` smallint(4) unsigned default '0', - `id_prediction_server` smallint(4) unsigned default '0', - `id_wmi_server` smallint(4) unsigned default '0', `id_parent` int(10) unsigned default '0', `custom_id` varchar(255) default '', `server_name` varchar(100) default '', + `cascade_protection` tinyint(2) NOT NULL default '0', PRIMARY KEY (`id_agente`), KEY `nombre` (`nombre`), KEY `direccion` (`direccion`), diff --git a/pandora_console/pandoradb_data.sql b/pandora_console/pandoradb_data.sql index 258b6de352..c0ffdd00b2 100644 --- a/pandora_console/pandoradb_data.sql +++ b/pandora_console/pandoradb_data.sql @@ -47,7 +47,7 @@ INSERT INTO `tconfig` VALUES (6,'graph_res','5'), (7,'step_compact','1'), (8,'db_scheme_version','3.0-dev'), -(9,'db_scheme_build','PD90819'), +(9,'db_scheme_build','PD90901'), (13,'show_unknown','0'), (14,'show_lastalerts','1'), (15,'style','pandora'), @@ -164,7 +164,6 @@ INSERT INTO `tlink` VALUES (6,'Google','http://www.google.com'); UNLOCK TABLES; - -- -- Dumping data for table `tmodule_group` -- @@ -175,7 +174,10 @@ INSERT INTO `tmodule_group` VALUES (2,'Networking'), (3,'Application'), (4,'System'), -(5,'Miscellaneous'); +(5,'Miscellaneous'), +(6,'Performance'), +(7,'Database'); + UNLOCK TABLES; -- @@ -184,7 +186,6 @@ UNLOCK TABLES; INSERT INTO `torigen` VALUES ('Operating System event'), -('IDS events'), ('Firewall records'), ('Database event'), ('Application data'), @@ -222,7 +223,6 @@ INSERT INTO `ttipo_modulo` VALUES -- Not yet implemented -- (19,'image_jpg',9,'Image JPG data', 'mod_image_jpg.png'), -- (20,'image_png',9,'Image PNG data', 'mod_image_png.png'); --- (24,'async_inc', 6, 'Asyncronous incremental data', 'mod_async_inc.png') -- Categoria field is used to segregate several types (plugin, agents, network) on their data -- types, could be used or could be avoided and use directly primary key (id_tipo)