summaryrefslogtreecommitdiffstats
path: root/src/zabbix_proxy/proxy.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/zabbix_proxy/proxy.c')
-rw-r--r--src/zabbix_proxy/proxy.c100
1 files changed, 59 insertions, 41 deletions
diff --git a/src/zabbix_proxy/proxy.c b/src/zabbix_proxy/proxy.c
index c3341b2f..63127342 100644
--- a/src/zabbix_proxy/proxy.c
+++ b/src/zabbix_proxy/proxy.c
@@ -49,6 +49,7 @@
#include "../zabbix_server/trapper/trapper.h"
#include "proxyconfig/proxyconfig.h"
#include "datasender/datasender.h"
+#include "heart/heart.h"
/*
#define LISTENQ 1024
@@ -111,6 +112,7 @@ static char shortopts[] =
pid_t *threads=NULL;
+int CONFIG_CONFSYNCER_FORKS = 1;
int CONFIG_DATASENDER_FORKS = 1;
int CONFIG_DBSYNCER_FORKS = 0;//1;
int CONFIG_DISCOVERER_FORKS = 1;
@@ -131,6 +133,8 @@ int CONFIG_HOUSEKEEPING_FREQUENCY = 1; /* h */
int CONFIG_PROXY_LOCAL_BUFFER = 0; /* 24h */
int CONFIG_PROXY_OFFLINE_BUFFER = 1; /* 720h */
+int CONFIG_HEARTBEAT_FREQUENCY = 60;
+
int CONFIG_PROXYCONFIG_FREQUENCY = 120;
int CONFIG_DATASENDER_FREQUENCY = 10;
@@ -213,6 +217,7 @@ void init_config(void)
{"ProxyLocalBuffer",&CONFIG_PROXY_LOCAL_BUFFER,0,TYPE_INT,PARM_OPT,0,720},
{"ProxyOfflineBuffer",&CONFIG_PROXY_OFFLINE_BUFFER,0,TYPE_INT,PARM_OPT,1,720},
+ {"HeartbeatFrequency",&CONFIG_HEARTBEAT_FREQUENCY,0,TYPE_INT,PARM_OPT,0,3600},
{"DataSenderFrequency",&CONFIG_DATASENDER_FREQUENCY,0,TYPE_INT,PARM_OPT,1,3600},
/* {"SenderFrequency",&CONFIG_SENDER_FREQUENCY,0,TYPE_INT,PARM_OPT,5,3600},*/
@@ -490,10 +495,10 @@ int MAIN_ZABBIX_ENTRY(void)
}*/
DBinit();
- threads = calloc(1 + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS
- + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS + CONFIG_UNREACHABLE_POLLER_FORKS
- + CONFIG_HTTPPOLLER_FORKS + CONFIG_DISCOVERER_FORKS,
- sizeof(pid_t));
+ threads = calloc(1 + CONFIG_CONFSYNCER_FORKS + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS
+ + CONFIG_TRAPPERD_FORKS + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS
+ + CONFIG_UNREACHABLE_POLLER_FORKS + CONFIG_HTTPPOLLER_FORKS + CONFIG_DISCOVERER_FORKS
+ + CONFIG_DBSYNCER_FORKS, sizeof(pid_t));
if (CONFIG_TRAPPERD_FORKS > 0) {
if (FAIL == zbx_tcp_listen(&listen_sock, CONFIG_LISTEN_IP, (unsigned short)CONFIG_LISTEN_PORT)) {
@@ -503,9 +508,10 @@ int MAIN_ZABBIX_ENTRY(void)
}
for ( i = 1;
- i <= CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS + CONFIG_PINGER_FORKS
- + CONFIG_HOUSEKEEPER_FORKS + CONFIG_UNREACHABLE_POLLER_FORKS + CONFIG_HTTPPOLLER_FORKS
- + CONFIG_DISCOVERER_FORKS + CONFIG_DBSYNCER_FORKS;
+ i <= CONFIG_CONFSYNCER_FORKS + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS
+ + CONFIG_TRAPPERD_FORKS + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS
+ + CONFIG_UNREACHABLE_POLLER_FORKS + CONFIG_HTTPPOLLER_FORKS + CONFIG_DISCOVERER_FORKS
+ + CONFIG_DBSYNCER_FORKS;
i++)
{
if ((pid = zbx_fork()) == 0) {
@@ -519,24 +525,30 @@ int MAIN_ZABBIX_ENTRY(void)
if (server_num == 0) {
init_main_process();
- zabbix_log(LOG_LEVEL_WARNING, "server #%d started [Configuration syncer]",
+ zabbix_log(LOG_LEVEL_WARNING, "server #%d started [Heartbeat sender]",
server_num);
- main_proxyconfig_loop(server_num);
-
+ main_heart_loop();
+
for (;;)
zbx_sleep(3600);
}
+ if (server_num <= CONFIG_CONFSYNCER_FORKS)
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "server #%d started [Configuration syncer]",
+ server_num);
- if (server_num <= CONFIG_DATASENDER_FORKS)
+ main_proxyconfig_loop(server_num);
+ }
+ else if (server_num <= CONFIG_CONFSYNCER_FORKS + CONFIG_DATASENDER_FORKS)
{
zabbix_log(LOG_LEVEL_WARNING, "server #%d started [Datasender]",
server_num);
main_datasender_loop();
}
- else if (server_num <= CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS)
+ else if (server_num <= CONFIG_CONFSYNCER_FORKS + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS)
{
#ifdef HAVE_SNMP
init_snmp("zabbix_server");
@@ -545,34 +557,37 @@ int MAIN_ZABBIX_ENTRY(void)
zabbix_log(LOG_LEVEL_WARNING, "server #%d started [Poller. SNMP:"SNMP_FEATURE_STATUS"]",
server_num);
- main_poller_loop(ZBX_PROCESS_PROXY, ZBX_POLLER_TYPE_NORMAL, server_num - CONFIG_DATASENDER_FORKS);
+ main_poller_loop(ZBX_PROCESS_PROXY, ZBX_POLLER_TYPE_NORMAL, server_num - (CONFIG_CONFSYNCER_FORKS
+ + CONFIG_DATASENDER_FORKS));
}
- else if (server_num <= CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS)
+ else if (server_num <= CONFIG_CONFSYNCER_FORKS + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS
+ + CONFIG_TRAPPERD_FORKS)
{
zabbix_log(LOG_LEVEL_WARNING, "server #%d started [Trapper]",
server_num);
child_trapper_main(ZBX_PROCESS_PROXY, &listen_sock);
}
- else if(server_num <= CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS
- + CONFIG_PINGER_FORKS)
+ else if(server_num <= CONFIG_CONFSYNCER_FORKS + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS
+ + CONFIG_TRAPPERD_FORKS + CONFIG_PINGER_FORKS)
{
zabbix_log(LOG_LEVEL_WARNING, "server #%d started [ICMP pinger]",
server_num);
- main_pinger_loop(ZBX_PROCESS_PROXY, server_num - (CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS
- + CONFIG_TRAPPERD_FORKS));
+ main_pinger_loop(ZBX_PROCESS_PROXY, server_num - (CONFIG_CONFSYNCER_FORKS + CONFIG_DATASENDER_FORKS
+ + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS));
}
- else if(server_num <= CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS
- + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS)
+ else if(server_num <= CONFIG_CONFSYNCER_FORKS + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS
+ + CONFIG_TRAPPERD_FORKS + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS)
{
zabbix_log(LOG_LEVEL_WARNING, "server #%d started [Housekeeper]",
server_num);
main_housekeeper_loop();
}
- else if(server_num <= CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS
- + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS + CONFIG_UNREACHABLE_POLLER_FORKS)
+ else if(server_num <= CONFIG_CONFSYNCER_FORKS + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS
+ + CONFIG_TRAPPERD_FORKS + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS
+ + CONFIG_UNREACHABLE_POLLER_FORKS)
{
#ifdef HAVE_SNMP
init_snmp("zabbix_server");
@@ -582,23 +597,24 @@ int MAIN_ZABBIX_ENTRY(void)
server_num);
main_poller_loop(ZBX_PROCESS_PROXY, ZBX_POLLER_TYPE_UNREACHABLE, server_num
- - (CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS
- + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS));
+ - (CONFIG_CONFSYNCER_FORKS + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS
+ + CONFIG_TRAPPERD_FORKS + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS));
}
- else if (server_num <= CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS
- + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS + CONFIG_UNREACHABLE_POLLER_FORKS
- + CONFIG_HTTPPOLLER_FORKS)
+ else if (server_num <= CONFIG_CONFSYNCER_FORKS + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS
+ + CONFIG_TRAPPERD_FORKS + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS
+ + CONFIG_UNREACHABLE_POLLER_FORKS + CONFIG_HTTPPOLLER_FORKS)
{
zabbix_log(LOG_LEVEL_WARNING, "server #%d started [HTTP Poller]",
server_num);
- main_httppoller_loop(ZBX_PROCESS_PROXY, server_num - (CONFIG_DATASENDER_FORKS
- + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS + CONFIG_PINGER_FORKS
- + CONFIG_HOUSEKEEPER_FORKS + CONFIG_UNREACHABLE_POLLER_FORKS));
+ main_httppoller_loop(ZBX_PROCESS_PROXY, server_num - (CONFIG_CONFSYNCER_FORKS
+ + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS
+ + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS
+ + CONFIG_UNREACHABLE_POLLER_FORKS));
}
- else if (server_num <= CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS
- + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS + CONFIG_UNREACHABLE_POLLER_FORKS
- + CONFIG_HTTPPOLLER_FORKS + CONFIG_DISCOVERER_FORKS)
+ else if (server_num <= CONFIG_CONFSYNCER_FORKS + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS
+ + CONFIG_TRAPPERD_FORKS + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS
+ + CONFIG_UNREACHABLE_POLLER_FORKS + CONFIG_HTTPPOLLER_FORKS + CONFIG_DISCOVERER_FORKS)
{
#ifdef HAVE_SNMP
init_snmp("zabbix_server");
@@ -607,14 +623,15 @@ int MAIN_ZABBIX_ENTRY(void)
zabbix_log(LOG_LEVEL_WARNING, "server #%d started [Discoverer. SNMP:"SNMP_FEATURE_STATUS"]",
server_num);
- main_discoverer_loop(ZBX_PROCESS_PROXY, server_num - (CONFIG_DATASENDER_FORKS
- + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS + CONFIG_PINGER_FORKS
- + CONFIG_HOUSEKEEPER_FORKS + CONFIG_UNREACHABLE_POLLER_FORKS
+ main_discoverer_loop(ZBX_PROCESS_PROXY, server_num - (CONFIG_CONFSYNCER_FORKS
+ + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS
+ + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS + CONFIG_UNREACHABLE_POLLER_FORKS
+ CONFIG_HTTPPOLLER_FORKS));
}
- else if (server_num <= CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS
- + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS + CONFIG_UNREACHABLE_POLLER_FORKS
- + CONFIG_HTTPPOLLER_FORKS + CONFIG_DISCOVERER_FORKS + CONFIG_DBSYNCER_FORKS)
+ else if (server_num <= CONFIG_CONFSYNCER_FORKS + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS
+ + CONFIG_TRAPPERD_FORKS + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS
+ + CONFIG_UNREACHABLE_POLLER_FORKS + CONFIG_HTTPPOLLER_FORKS + CONFIG_DISCOVERER_FORKS
+ + CONFIG_DBSYNCER_FORKS)
{
zabbix_log(LOG_LEVEL_WARNING, "server #%d started [DB Syncer]",
server_num);
@@ -633,8 +650,9 @@ void zbx_on_exit()
if (threads != NULL) {
for ( i = 1;
- i <= CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS + CONFIG_TRAPPERD_FORKS + CONFIG_PINGER_FORKS
- + CONFIG_HOUSEKEEPER_FORKS + CONFIG_UNREACHABLE_POLLER_FORKS + CONFIG_HTTPPOLLER_FORKS
+ i <= CONFIG_CONFSYNCER_FORKS + CONFIG_DATASENDER_FORKS + CONFIG_POLLER_FORKS
+ + CONFIG_TRAPPERD_FORKS + CONFIG_PINGER_FORKS + CONFIG_HOUSEKEEPER_FORKS
+ + CONFIG_UNREACHABLE_POLLER_FORKS + CONFIG_HTTPPOLLER_FORKS
+ CONFIG_DISCOVERER_FORKS + CONFIG_DBSYNCER_FORKS; i ++)
{
if (threads[i]) {