From cd74015b95fa511881732413acde308340c23f0c Mon Sep 17 00:00:00 2001 From: fermin831 Date: Mon, 5 Mar 2018 12:39:56 +0100 Subject: [PATCH 1/8] [Autoprovision] Create tprovisioning and tprovisioining rules tables --- pandora_console/pandoradb.sql | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index b43432c7b4..80cc42d844 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -1931,7 +1931,7 @@ CREATE TABLE IF NOT EXISTS `tupdate_journal` ( -- --------------------------------------------------------------------- -- Table `talert_snmp_action` -- --------------------------------------------------------------------- -CREATE TABLE IF NOT EXISTS `talert_snmp_action` ( +CREATE TABLE IF NOT EXISTS `talert_snmp_action` ( `id` int(10) unsigned NOT NULL auto_increment, `id_alert_snmp` int(10) unsigned NOT NULL default '0', `alert_type` int(2) unsigned NOT NULL default '0', @@ -1956,7 +1956,7 @@ CREATE TABLE IF NOT EXISTS `talert_snmp_action` ( -- --------------------------------------------------------------------- -- Table `tsessions_php` -- --------------------------------------------------------------------- -CREATE TABLE tsessions_php ( +CREATE TABLE IF NOT EXISTS `tsessions_php` ( `id_session` CHAR(52) NOT NULL, `last_active` INTEGER NOT NULL, `data` TEXT, @@ -3081,3 +3081,30 @@ create table IF NOT EXISTS `tcluster_agent`( ON UPDATE CASCADE ) engine=InnoDB DEFAULT CHARSET=utf8; +-- --------------------------------------------------------------------- +-- Table `tprovisioning` +-- --------------------------------------------------------------------- +create table IF NOT EXISTS `tprovisioning`( + `id` int unsigned NOT NULL auto_increment, + `name` varchar(100) NOT NULL, + `description` TEXT default '', + `type` enum('round-robin','less-loaded','custom') default 'round-robin', + `config` TEXT default '', + `agent_count` int(11) NOT NULL default 0, + PRIMARY KEY (`id`) +) engine=InnoDB DEFAULT CHARSET=utf8; + +-- --------------------------------------------------------------------- +-- Table `tprovisioning_rules` +-- --------------------------------------------------------------------- +create table IF NOT EXISTS `tprovisioning_rules`( + `id` int unsigned NOT NULL auto_increment, + `id_provisioning` int unsigned NOT NULL, + `order` int(11) NOT NULL default 0, + `operator` enum('AND','OR') default 'OR', + `type` enum('hostname','ip-range') default 'hostname', + `value` varchar(100) NOT NULL default '', + PRIMARY KEY (`id`), + FOREIGN KEY (`id_provisioning`) REFERENCES tprovisioning(`id`) + ON DELETE CASCADE +) engine=InnoDB DEFAULT CHARSET=utf8; \ No newline at end of file From f0dbb78950c676dbc3c2b32d16a0ac48a9cff587 Mon Sep 17 00:00:00 2001 From: fermin831 Date: Thu, 8 Mar 2018 14:22:10 +0100 Subject: [PATCH 2/8] [Autoprovision] Added order and removed type from tprovisioning --- pandora_console/pandoradb.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index 80cc42d844..ef8303ad24 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -3088,7 +3088,7 @@ create table IF NOT EXISTS `tprovisioning`( `id` int unsigned NOT NULL auto_increment, `name` varchar(100) NOT NULL, `description` TEXT default '', - `type` enum('round-robin','less-loaded','custom') default 'round-robin', + `order` int(11) NOT NULL default 0, `config` TEXT default '', `agent_count` int(11) NOT NULL default 0, PRIMARY KEY (`id`) From 775f2b1a559cc89f79f337211fd04133314e94b6 Mon Sep 17 00:00:00 2001 From: fermin831 Date: Mon, 12 Mar 2018 17:57:18 +0100 Subject: [PATCH 3/8] [Console images] Added toggle images --- pandora_console/images/toggle_green.png | Bin 0 -> 512 bytes pandora_console/images/toggle_red.png | Bin 0 -> 426 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 pandora_console/images/toggle_green.png create mode 100644 pandora_console/images/toggle_red.png diff --git a/pandora_console/images/toggle_green.png b/pandora_console/images/toggle_green.png new file mode 100644 index 0000000000000000000000000000000000000000..b5df607290078efcff9bc5d59d79a6ad136654b3 GIT binary patch literal 512 zcmV+b0{{JqP)#v_W&rF z$O4pj59A1-8wnIoU}C@nV8$i@DFt*p0Rjjn2{QIQE)yPnJj$@+UOku{sxgy6m{U0s zt2dFsvo9AJHr*~p5z8>#!@vZ!nh}>qDIR^WEg-WW)fk4)zg~cBcL1uL4{{+vKhD1t!0_|$7dT&$-O`CXSrZ7{2Zk^Z_%i{mJ%CRmFPj7kUtP!@>{nO{z^OS}dkNTiFino~r5`{6gdD1% zL{LB=R5t)MT>vov0t_YopqkgivIsc|Ccy$o#3JfKoc5hK%65|=mtC<_$AQYiozIHz6i=LmEF0000APx9qwGktX3Eh?g0#4ij)N}#F00=Pj z00C(Rr5XnY>VXf?6uALC;q*gY3UY}fP{9Xuoj^4puP0Dou_7Z30_7lF8=@x(hFGPcRqnq0UrQ|9wU|@>n9@Bkpe)Ot`Oz{09lNf UU0E=FB>(^b07*qoM6N<$f?V&8?EnA( literal 0 HcmV?d00001 From 9b60d94d59837629be77fd695d878642a16dce98 Mon Sep 17 00:00:00 2001 From: fermin831 Date: Tue, 13 Mar 2018 13:39:30 +0100 Subject: [PATCH 4/8] [Autoprovision] Changed hostname by alias in database --- pandora_console/pandoradb.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index ef8303ad24..0f542a0a9a 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -3102,9 +3102,9 @@ create table IF NOT EXISTS `tprovisioning_rules`( `id_provisioning` int unsigned NOT NULL, `order` int(11) NOT NULL default 0, `operator` enum('AND','OR') default 'OR', - `type` enum('hostname','ip-range') default 'hostname', + `type` enum('alias','ip-range') default 'alias', `value` varchar(100) NOT NULL default '', PRIMARY KEY (`id`), FOREIGN KEY (`id_provisioning`) REFERENCES tprovisioning(`id`) ON DELETE CASCADE -) engine=InnoDB DEFAULT CHARSET=utf8; \ No newline at end of file +) engine=InnoDB DEFAULT CHARSET=utf8; From ff2098bb7ff770558e2dadd852390f4c66397298 Mon Sep 17 00:00:00 2001 From: fermin831 Date: Tue, 13 Mar 2018 17:29:39 +0100 Subject: [PATCH 5/8] [Autoprovision] Removed agents_count column from tprovisioning --- pandora_console/pandoradb.sql | 1 - 1 file changed, 1 deletion(-) diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index 0f542a0a9a..7f4304f2f3 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -3090,7 +3090,6 @@ create table IF NOT EXISTS `tprovisioning`( `description` TEXT default '', `order` int(11) NOT NULL default 0, `config` TEXT default '', - `agent_count` int(11) NOT NULL default 0, PRIMARY KEY (`id`) ) engine=InnoDB DEFAULT CHARSET=utf8; From b63a1c4ce842b8db6d57138e0fe76d77cc6accee Mon Sep 17 00:00:00 2001 From: Ramon Novoa Date: Mon, 12 Mar 2018 09:35:11 +0100 Subject: [PATCH 6/8] Remove debugging messages. --- pandora_server/lib/PandoraFMS/DataServer.pm | 3 --- 1 file changed, 3 deletions(-) diff --git a/pandora_server/lib/PandoraFMS/DataServer.pm b/pandora_server/lib/PandoraFMS/DataServer.pm index 832f6451fc..d68a987b75 100644 --- a/pandora_server/lib/PandoraFMS/DataServer.pm +++ b/pandora_server/lib/PandoraFMS/DataServer.pm @@ -334,7 +334,6 @@ sub process_xml_data ($$$$$) { if (defined ($data->{'group_id'}) && $data->{'group_id'} ne '') { $group_id = $data->{'group_id'}; if (! defined (get_group_name ($dbh, $group_id))) { - print "UNABLE GROUP ID\n"; pandora_event ($pa_config, "Unable to create agent '" . safe_output($agent_name) . "': group ID '" . $group_id . "' does not exist.", 0, 0, 0, 0, 0, 'error', 0, $dbh); logger($pa_config, "Group ID " . $group_id . " does not exist.", 3); return; @@ -342,13 +341,11 @@ sub process_xml_data ($$$$$) { } elsif (defined ($data->{'group'}) && $data->{'group'} ne '') { $group_id = get_group_id ($dbh, $data->{'group'}); if (! defined (get_group_name ($dbh, $group_id))) { - print "UNABLE GROUP\n"; pandora_event ($pa_config, "Unable to create agent '" . safe_output($agent_name) . "': group '" . safe_output($data->{'group'}) . "' does not exist.", 0, 0, 0, 0, 0, 'error', 0, $dbh); logger($pa_config, "Group " . $data->{'group'} . " does not exist.", 3); return; } } else { - print "UNABLE AUTOCREATE\n"; pandora_event ($pa_config, "Unable to create agent '" . safe_output($agent_name) . "': autocreate_group $group_id does not exist. Edit the pandora_server.conf file and change it.", 0, 0, 0, 0, 0, 'error', 0, $dbh); logger($pa_config, "Group id $group_id does not exist (check autocreate_group config token).", 3); return; From 21f8194f0d3806ccd3483184fa75a9adba465b27 Mon Sep 17 00:00:00 2001 From: Ramon Novoa Date: Tue, 13 Mar 2018 17:52:10 +0100 Subject: [PATCH 7/8] Add a new agent provisioning server (enterprise). --- pandora_server/bin/pandora_server | 1 + pandora_server/lib/PandoraFMS/Config.pm | 15 +++++++++++++++ pandora_server/lib/PandoraFMS/Tools.pm | 2 ++ 3 files changed, 18 insertions(+) diff --git a/pandora_server/bin/pandora_server b/pandora_server/bin/pandora_server index 1f13627cb3..6a5c979c7d 100755 --- a/pandora_server/bin/pandora_server +++ b/pandora_server/bin/pandora_server @@ -359,6 +359,7 @@ sub pandora_server_tasks ($) { # Pandora self monitoring if (defined($pa_config->{"self_monitoring"}) && $pa_config->{"self_monitoring"} == 1 + && !is_metaconsole($pa_config) && $counter % $pa_config->{'self_monitoring_interval'} == 0) { pandora_self_monitoring ($pa_config, $dbh); } diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index 7e30bfd3ff..3bf38a8a98 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -171,6 +171,8 @@ sub pandora_get_sharedconfig ($$) { # NOTE: This must be read when checking license limits! #$pa_config->{"node_metaconsole"} = pandora_get_tconfig_token ($dbh, 'node_metaconsole', 0); + $pa_config->{"provisioning_mode"} = pandora_get_tconfig_token ($dbh, 'provisioning_mode', ''); + if ($pa_config->{'include_agents'} eq '') { $pa_config->{'include_agents'} = 0; @@ -473,6 +475,10 @@ sub pandora_load_config { $pa_config->{"unknown_updates"} = 0; # 7.0.718 + $pa_config->{"provisioningserver"} = 1; # 7.0 720 + $pa_config->{"provisioningserver_threads"} = 1; # 7.0 720 + $pa_config->{"provisioning_cache_interval"} = 300; # 7.0 720 + # Check for UID0 if ($pa_config->{"quiet"} != 0){ if ($> == 0){ @@ -1090,6 +1096,15 @@ sub pandora_load_config { elsif ($parametro =~ m/^unknown_updates\s+([0-1])/i) { $pa_config->{'unknown_updates'} = clean_blank($1); } + elsif ($parametro =~ m/^provisioningserver\s+([0-1])/i){ + $pa_config->{'provisioningserver'}= clean_blank($1); + } + elsif ($parametro =~ m/^provisioningserver_threads\s+([0-9]*)/i){ + $pa_config->{'provisioningserver_threads'}= clean_blank($1); + } + elsif ($parametro =~ m/^provisioning_cache_interval\s+([0-9]*)/i){ + $pa_config->{'provisioning_cache_interval'}= clean_blank($1); + } } # end of loop for parameter # # Set to RDBMS' standard port diff --git a/pandora_server/lib/PandoraFMS/Tools.pm b/pandora_server/lib/PandoraFMS/Tools.pm index fe528042b8..9dbef42f80 100755 --- a/pandora_server/lib/PandoraFMS/Tools.pm +++ b/pandora_server/lib/PandoraFMS/Tools.pm @@ -64,6 +64,7 @@ our @EXPORT = qw( SYSLOGSERVER METACONSOLE_LICENSE WUXSERVER + PROVISIONINGSERVER $DEVNULL $OS $OS_VERSION @@ -133,6 +134,7 @@ use constant MFSERVER => 15; use constant SYNCSERVER => 16; use constant WUXSERVER => 17; use constant SYSLOGSERVER => 18; +use constant PROVISIONINGSERVER => 19; # Module status use constant MODULE_NORMAL => 0; From 560f18f3a2e46ec66e77670c5de5499676399fa6 Mon Sep 17 00:00:00 2001 From: Ramon Novoa Date: Tue, 13 Mar 2018 18:01:04 +0100 Subject: [PATCH 8/8] Add tables for agent provisioning to the schema. --- pandora_console/extras/mr/13.sql | 22 ++++++++++++++- .../pandoradb_migrate_6.0_to_7.0.mysql.sql | 27 +++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/pandora_console/extras/mr/13.sql b/pandora_console/extras/mr/13.sql index 96aae03cb9..dec893c87c 100644 --- a/pandora_console/extras/mr/13.sql +++ b/pandora_console/extras/mr/13.sql @@ -12,4 +12,24 @@ START TRANSACTION; INSERT INTO `tconfig_os` (`id_os`, `name`, `description`, `icon_name`) VALUES (21, 'Cluster', 'Cluster agent', 'so_cluster.png'); -COMMIT; \ No newline at end of file + CREATE TABLE IF NOT EXISTS `tprovisioning`( + `id` int unsigned NOT NULL auto_increment, + `name` varchar(100) NOT NULL, + `description` TEXT default '', + `order` int(11) NOT NULL default 0, + `config` TEXT default '', + PRIMARY KEY (`id`) + ) engine=InnoDB DEFAULT CHARSET=utf8; + + CREATE TABLE IF NOT EXISTS `tprovisioning_rules`( + `id` int unsigned NOT NULL auto_increment, + `id_provisioning` int unsigned NOT NULL, + `order` int(11) NOT NULL default 0, + `operator` enum('AND','OR') default 'OR', + `type` enum('alias','ip-range') default 'alias', + `value` varchar(100) NOT NULL default '', + PRIMARY KEY (`id`), + FOREIGN KEY (`id_provisioning`) REFERENCES tprovisioning(`id`) + ON DELETE CASCADE + ) engine=InnoDB DEFAULT CHARSET=utf8; +COMMIT; diff --git a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql index 4e292b4f0d..25c4a0ef10 100644 --- a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql +++ b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql @@ -1533,3 +1533,30 @@ create table IF NOT EXISTS `tcluster_agent`( FOREIGN KEY (`id_cluster`) REFERENCES tcluster(`id`) ON UPDATE CASCADE ) engine=InnoDB DEFAULT CHARSET=utf8; + +-- --------------------------------------------------------------------- +-- Table `tprovisioning` +-- --------------------------------------------------------------------- +create table IF NOT EXISTS `tprovisioning`( + `id` int unsigned NOT NULL auto_increment, + `name` varchar(100) NOT NULL, + `description` TEXT default '', + `order` int(11) NOT NULL default 0, + `config` TEXT default '', + PRIMARY KEY (`id`) +) engine=InnoDB DEFAULT CHARSET=utf8; + +-- --------------------------------------------------------------------- +-- Table `tprovisioning_rules` +-- --------------------------------------------------------------------- +create table IF NOT EXISTS `tprovisioning_rules`( + `id` int unsigned NOT NULL auto_increment, + `id_provisioning` int unsigned NOT NULL, + `order` int(11) NOT NULL default 0, + `operator` enum('AND','OR') default 'OR', + `type` enum('alias','ip-range') default 'alias', + `value` varchar(100) NOT NULL default '', + PRIMARY KEY (`id`), + FOREIGN KEY (`id_provisioning`) REFERENCES tprovisioning(`id`) + ON DELETE CASCADE +) engine=InnoDB DEFAULT CHARSET=utf8;