summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-03-14 16:00:57 +0000
committersasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-03-14 16:00:57 +0000
commit602d082749b19c7720de3829078b24a514a96088 (patch)
tree07b98c3ced17e08ef5b3c536a92714f91dd15a09
parenta6b26fc9ecae1da85677b16d024c3081052280c8 (diff)
downloadzabbix-602d082749b19c7720de3829078b24a514a96088.tar.gz
zabbix-602d082749b19c7720de3829078b24a514a96088.tar.xz
zabbix-602d082749b19c7720de3829078b24a514a96088.zip
- [DEV-110] Configuration syncer
git-svn-id: svn://svn.zabbix.com/trunk@5491 97f52cf1-0a1b-0410-bd0e-c28be96e8082
-rw-r--r--misc/conf/zabbix_proxy.conf6
-rw-r--r--src/zabbix_proxy/proxy.c3
-rw-r--r--src/zabbix_proxy/proxyconfig/proxyconfig.c25
3 files changed, 20 insertions, 14 deletions
diff --git a/misc/conf/zabbix_proxy.conf b/misc/conf/zabbix_proxy.conf
index 637b1c22..e9eefb06 100644
--- a/misc/conf/zabbix_proxy.conf
+++ b/misc/conf/zabbix_proxy.conf
@@ -61,6 +61,12 @@ Hostname=proxy
# This parameter must be between 0 and 3600
#HeartbeatFrequency=60
+# How often ZABBIX will perform sync configuration data
+# (in seconds)
+# Default value is 86400 seconds (24h)
+# This parameter must be between 1 and 604800 (1 week)
+#ConfigFrequency=86400
+
# How often ZABBIX will perform housekeeping procedure
# (in hours)
# Default value is 1 hour
diff --git a/src/zabbix_proxy/proxy.c b/src/zabbix_proxy/proxy.c
index 63127342..2c254345 100644
--- a/src/zabbix_proxy/proxy.c
+++ b/src/zabbix_proxy/proxy.c
@@ -135,7 +135,7 @@ int CONFIG_PROXY_OFFLINE_BUFFER = 1; /* 720h */
int CONFIG_HEARTBEAT_FREQUENCY = 60;
-int CONFIG_PROXYCONFIG_FREQUENCY = 120;
+int CONFIG_PROXYCONFIG_FREQUENCY = 3600*24;
int CONFIG_DATASENDER_FREQUENCY = 10;
@@ -218,6 +218,7 @@ void init_config(void)
{"ProxyOfflineBuffer",&CONFIG_PROXY_OFFLINE_BUFFER,0,TYPE_INT,PARM_OPT,1,720},
{"HeartbeatFrequency",&CONFIG_HEARTBEAT_FREQUENCY,0,TYPE_INT,PARM_OPT,0,3600},
+ {"ConfigFrequency",&CONFIG_PROXYCONFIG_FREQUENCY,0,TYPE_INT,PARM_OPT,1,3600*7*24},
{"DataSenderFrequency",&CONFIG_DATASENDER_FREQUENCY,0,TYPE_INT,PARM_OPT,1,3600},
/* {"SenderFrequency",&CONFIG_SENDER_FREQUENCY,0,TYPE_INT,PARM_OPT,5,3600},*/
diff --git a/src/zabbix_proxy/proxyconfig/proxyconfig.c b/src/zabbix_proxy/proxyconfig/proxyconfig.c
index ff2acd8b..1c5ba2cd 100644
--- a/src/zabbix_proxy/proxyconfig/proxyconfig.c
+++ b/src/zabbix_proxy/proxyconfig/proxyconfig.c
@@ -26,6 +26,8 @@
#include "proxyconfig.h"
#include "../servercomms.h"
+#define CONFIG_PROXYCONFIG_RETRY 120 /* seconds */
+
/******************************************************************************
* *
* Function: process_proxyconfig_table *
@@ -245,7 +247,7 @@ db_error:
* Comments: *
* *
******************************************************************************/
-static int process_proxyconfig(struct zbx_json_parse *jp)
+static void process_proxyconfig(struct zbx_json_parse *jp)
{
char buf[MAX_STRING_LEN];
size_t len = sizeof(buf);
@@ -258,8 +260,7 @@ static int process_proxyconfig(struct zbx_json_parse *jp)
/*
* {"hosts":{"fields":["hostid","host",...],"data":[[1,"zbx01",...],[2,"zbx02",...],...]},"items":{...},...}
* ^
- */
- while (NULL != (p = zbx_json_pair_next(jp, p, buf, len)) && res == SUCCEED) {
+ */ while (NULL != (p = zbx_json_pair_next(jp, p, buf, len)) && res == SUCCEED) {
if (ZBX_JSON_TYPE_OBJECT != zbx_json_type(p)) {
zabbix_log(LOG_LEVEL_WARNING, "Invalid type of data for table \"%s\" \"%.40s...\"",
buf,
@@ -274,13 +275,11 @@ static int process_proxyconfig(struct zbx_json_parse *jp)
DBcommit();
else
DBrollback();
-
- return res;
}
/******************************************************************************
* *
- * Function: process_nodes *
+ * Function: process_configuration_sync *
* *
* Purpose: calculates checks sum of config data *
* *
@@ -297,13 +296,16 @@ static void process_configuration_sync()
{
zbx_sock_t sock;
char *data;
-/* int now = time(NULL);*/
struct zbx_json_parse jp;
zabbix_log(LOG_LEVEL_DEBUG, "In process_configuration_sync()");
- if (FAIL == connect_to_server(&sock, 60)) /* alarm */
- return;
+ while (FAIL == connect_to_server(&sock, 600)) { /* alarm */
+ zabbix_log(LOG_LEVEL_DEBUG, "Connect to the server failed. Retry after %d seconds",
+ CONFIG_PROXYCONFIG_RETRY);
+
+ sleep(CONFIG_PROXYCONFIG_RETRY);
+ }
if (FAIL == get_data_from_server(&sock, ZBX_PROTO_VALUE_PROXY_CONFIG, &data))
goto exit;
@@ -311,12 +313,9 @@ static void process_configuration_sync()
if (FAIL == zbx_json_open(data, &jp))
goto exit;
- if (FAIL == process_proxyconfig(&jp))
- zabbix_log(LOG_LEVEL_DEBUG, "----- process_proxyconfig() ---> FAIL <---");
+ process_proxyconfig(&jp);
exit:
disconnect_server(&sock);
-
-/* zabbix_log(LOG_LEVEL_DEBUG, "<-----> process_nodes [Selected records in %d seconds]", time(NULL)-now);*/
}
/******************************************************************************