Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/zabbix_server/server.c')
-rw-r--r--src/zabbix_server/server.c49
1 files changed, 31 insertions, 18 deletions
diff --git a/src/zabbix_server/server.c b/src/zabbix_server/server.c
index 6f43e2b37a0..4aa10ffa80f 100644
--- a/src/zabbix_server/server.c
+++ b/src/zabbix_server/server.c
@@ -62,7 +62,7 @@
#include "reporter/report_manager.h"
#include "reporter/report_writer.h"
#include "events.h"
-#include "../libs/zbxdbcache/valuecache.h"
+#include "zbxcachevalue.h"
#include "setproctitle.h"
#include "zbxhistory.h"
#include "postinit.h"
@@ -335,6 +335,11 @@ char *CONFIG_WEBSERVICE_URL = NULL;
int CONFIG_SERVICEMAN_SYNC_FREQUENCY = 60;
+static char *config_file = NULL;
+static int config_allow_root = 0;
+
+static zbx_config_log_t log_file_cfg = {NULL, NULL, LOG_TYPE_UNDEFINED, 1};
+
struct zbx_db_version_info_t db_version_info;
int get_process_info_by_thread(int local_server_num, unsigned char *local_process_type, int *local_process_num);
@@ -573,8 +578,8 @@ static void zbx_set_defaults(void)
CONFIG_MAX_HOUSEKEEPER_DELETE = 0;
#endif
- if (NULL == CONFIG_LOG_TYPE_STR)
- CONFIG_LOG_TYPE_STR = zbx_strdup(CONFIG_LOG_TYPE_STR, ZBX_OPTION_LOGTYPE_FILE);
+ if (NULL == log_file_cfg.log_type_str)
+ log_file_cfg.log_type_str = zbx_strdup(log_file_cfg.log_type_str, ZBX_OPTION_LOGTYPE_FILE);
if (NULL == CONFIG_SOCKET_PATH)
CONFIG_SOCKET_PATH = zbx_strdup(CONFIG_SOCKET_PATH, "/tmp");
@@ -683,7 +688,7 @@ static void zbx_validate_config(ZBX_TASK_EX *task)
/* because they have non-zero default values */
#endif
- if (SUCCEED != zbx_validate_log_parameters(task))
+ if (SUCCEED != zbx_validate_log_parameters(task, &log_file_cfg))
err = 1;
#if !(defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL))
@@ -812,11 +817,11 @@ static void zbx_load_config(ZBX_TASK_EX *task)
PARM_OPT, 0, 5},
{"PidFile", &CONFIG_PID_FILE, TYPE_STRING,
PARM_OPT, 0, 0},
- {"LogType", &CONFIG_LOG_TYPE_STR, TYPE_STRING,
+ {"LogType", &log_file_cfg.log_type_str, TYPE_STRING,
PARM_OPT, 0, 0},
- {"LogFile", &CONFIG_LOG_FILE, TYPE_STRING,
+ {"LogFile", &log_file_cfg.log_file_name, TYPE_STRING,
PARM_OPT, 0, 0},
- {"LogFileSize", &CONFIG_LOG_FILE_SIZE, TYPE_INT,
+ {"LogFileSize", &log_file_cfg.log_file_size, TYPE_INT,
PARM_OPT, 0, 1024},
{"AlertScriptsPath", &CONFIG_ALERT_SCRIPTS_PATH, TYPE_STRING,
PARM_OPT, 0, 0},
@@ -886,7 +891,7 @@ static void zbx_load_config(ZBX_TASK_EX *task)
PARM_OPT, 256 * ZBX_KIBIBYTE, __UINT64_C(2) * ZBX_GIBIBYTE},
{"VMwareTimeout", &CONFIG_VMWARE_TIMEOUT, TYPE_INT,
PARM_OPT, 1, 300},
- {"AllowRoot", &CONFIG_ALLOW_ROOT, TYPE_INT,
+ {"AllowRoot", &config_allow_root, TYPE_INT,
PARM_OPT, 0, 1},
{"User", &CONFIG_USER, TYPE_STRING,
PARM_OPT, 0, 0},
@@ -961,10 +966,10 @@ static void zbx_load_config(ZBX_TASK_EX *task)
/* initialize multistrings */
zbx_strarr_init(&CONFIG_LOAD_MODULE);
- parse_cfg_file(CONFIG_FILE, cfg, ZBX_CFG_FILE_REQUIRED, ZBX_CFG_STRICT, ZBX_CFG_EXIT_FAILURE);
+ parse_cfg_file(config_file, cfg, ZBX_CFG_FILE_REQUIRED, ZBX_CFG_STRICT, ZBX_CFG_EXIT_FAILURE);
zbx_set_defaults();
- CONFIG_LOG_TYPE = zbx_get_log_type(CONFIG_LOG_TYPE_STR);
+ log_file_cfg.log_type = zbx_get_log_type(log_file_cfg.log_type_str);
zbx_validate_config(task);
#if defined(HAVE_MYSQL) || defined(HAVE_POSTGRESQL)
@@ -1092,8 +1097,8 @@ int main(int argc, char **argv)
{
case 'c':
opt_c++;
- if (NULL == CONFIG_FILE)
- CONFIG_FILE = zbx_strdup(CONFIG_FILE, zbx_optarg);
+ if (NULL == config_file)
+ config_file = zbx_strdup(config_file, zbx_optarg);
break;
case 'R':
opt_r++;
@@ -1145,8 +1150,8 @@ int main(int argc, char **argv)
exit(EXIT_FAILURE);
}
- if (NULL == CONFIG_FILE)
- CONFIG_FILE = zbx_strdup(NULL, DEFAULT_CONFIG_FILE);
+ if (NULL == config_file)
+ config_file = zbx_strdup(NULL, DEFAULT_CONFIG_FILE);
/* required for simple checks */
zbx_init_metrics();
@@ -1173,7 +1178,8 @@ int main(int argc, char **argv)
exit(SUCCEED == ret ? EXIT_SUCCESS : EXIT_FAILURE);
}
- return zbx_daemon_start(CONFIG_ALLOW_ROOT, CONFIG_USER, t.flags, get_pid_file_path, zbx_on_exit);
+ return zbx_daemon_start(config_allow_root, CONFIG_USER, t.flags, get_pid_file_path, zbx_on_exit,
+ log_file_cfg.log_type, log_file_cfg.log_file_name);
}
static void zbx_check_db(void)
@@ -1544,7 +1550,7 @@ static int server_restart_logger(char **error)
if (SUCCEED != zbx_locks_create(error))
return FAIL;
- if (SUCCEED != zabbix_open_log(CONFIG_LOG_TYPE, CONFIG_LOG_LEVEL, CONFIG_LOG_FILE, error))
+ if (SUCCEED != zabbix_open_log(&log_file_cfg, CONFIG_LOG_LEVEL, error))
return FAIL;
return SUCCEED;
@@ -1664,7 +1670,7 @@ int MAIN_ZABBIX_ENTRY(int flags)
exit(EXIT_FAILURE);
}
- if (SUCCEED != zabbix_open_log(CONFIG_LOG_TYPE, CONFIG_LOG_LEVEL, CONFIG_LOG_FILE, &error))
+ if (SUCCEED != zabbix_open_log(&log_file_cfg, CONFIG_LOG_LEVEL, &error))
{
zbx_error("cannot open log: %s", error);
zbx_free(error);
@@ -1734,7 +1740,7 @@ int MAIN_ZABBIX_ENTRY(int flags)
zabbix_log(LOG_LEVEL_INFORMATION, "TLS support: " TLS_FEATURE_STATUS);
zabbix_log(LOG_LEVEL_INFORMATION, "******************************");
- zabbix_log(LOG_LEVEL_INFORMATION, "using configuration file: %s", CONFIG_FILE);
+ zabbix_log(LOG_LEVEL_INFORMATION, "using configuration file: %s", config_file);
#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
if (SUCCEED != zbx_coredump_disable())
@@ -1781,6 +1787,13 @@ int MAIN_ZABBIX_ENTRY(int flags)
exit(EXIT_FAILURE);
}
+ if (SUCCEED != DBinit(DCget_nextid, program_type, &error))
+ {
+ zabbix_log(LOG_LEVEL_CRIT, "cannot initialize database: %s", error);
+ zbx_free(error);
+ exit(EXIT_FAILURE);
+ }
+
if (ZBX_DB_UNKNOWN == (db_type = zbx_db_get_database_type()))
{
zabbix_log(LOG_LEVEL_CRIT, "cannot use database \"%s\": database is not a Zabbix database",