From 602d082749b19c7720de3829078b24a514a96088 Mon Sep 17 00:00:00 2001 From: sasha Date: Fri, 14 Mar 2008 16:00:57 +0000 Subject: - [DEV-110] Configuration syncer git-svn-id: svn://svn.zabbix.com/trunk@5491 97f52cf1-0a1b-0410-bd0e-c28be96e8082 --- misc/conf/zabbix_proxy.conf | 6 ++++++ src/zabbix_proxy/proxy.c | 3 ++- src/zabbix_proxy/proxyconfig/proxyconfig.c | 25 ++++++++++++------------- 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);*/ } /****************************************************************************** -- cgit