/****************************************************************************** * * * Function: zbx_load_config * * * * Purpose: load configuration from config file * * * * Parameters: requirement - produce error if config file missing or not * * * ******************************************************************************/ static void zbx_load_config(int requirement) { char *active_hosts = NULL; struct cfg_line cfg[] = { /* PARAMETER, VAR, TYPE, MANDATORY, MIN, MAX */ {"Server", &CONFIG_HOSTS_ALLOWED, TYPE_STRING_LIST, PARM_OPT, 0, 0}, {"ServerActive", &active_hosts, TYPE_STRING_LIST, PARM_OPT, 0, 0}, {"Hostname", &CONFIG_HOSTNAME, TYPE_STRING, PARM_OPT, 0, 0}, {"HostnameItem", &CONFIG_HOSTNAME_ITEM, TYPE_STRING, PARM_OPT, 0, 0}, {"HostMetadata", &CONFIG_HOST_METADATA, TYPE_STRING, PARM_OPT, 0, 0}, {"HostMetadataItem", &CONFIG_HOST_METADATA_ITEM, TYPE_STRING, PARM_OPT, 0, 0}, {"BufferSize", &CONFIG_BUFFER_SIZE, TYPE_INT, PARM_OPT, 2, 65535}, {"BufferSend", &CONFIG_BUFFER_SEND, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, #ifdef USE_PID_FILE {"PidFile", &CONFIG_PID_FILE, TYPE_STRING, PARM_OPT, 0, 0}, #endif {"LogFile", &CONFIG_LOG_FILE, TYPE_STRING, PARM_OPT, 0, 0}, {"LogFileSize", &CONFIG_LOG_FILE_SIZE, TYPE_INT, PARM_OPT, 0, 1024}, {"Timeout", &CONFIG_TIMEOUT, TYPE_INT, PARM_OPT, 1, 30}, {"ListenPort", &CONFIG_LISTEN_PORT, TYPE_INT, PARM_OPT, 1024, 32767}, {"ListenIP", &CONFIG_LISTEN_IP, TYPE_STRING_LIST, PARM_OPT, 0, 0}, {"SourceIP", &CONFIG_SOURCE_IP, TYPE_STRING, PARM_OPT, 0, 0}, {"DebugLevel", &CONFIG_LOG_LEVEL, TYPE_INT, PARM_OPT, 0, 4}, {"StartAgents", &CONFIG_PASSIVE_FORKS, TYPE_INT, PARM_OPT, 0, 100}, {"RefreshActiveChecks", &CONFIG_REFRESH_ACTIVE_CHECKS, TYPE_INT, PARM_OPT, SEC_PER_MIN, SEC_PER_HOUR}, {"MaxLinesPerSecond", &CONFIG_MAX_LINES_PER_SECOND, TYPE_INT, PARM_OPT, 1, 1000}, {"AllowRoot", &CONFIG_ALLOW_ROOT, TYPE_INT, PARM_OPT, 0, 1}, {"EnableRemoteCommands", &CONFIG_ENABLE_REMOTE_COMMANDS, TYPE_INT, PARM_OPT, 0, 1}, {"LogRemoteCommands", &CONFIG_LOG_REMOTE_COMMANDS, TYPE_INT, PARM_OPT, 0, 1}, {"UnsafeUserParameters", &CONFIG_UNSAFE_USER_PARAMETERS, TYPE_INT, PARM_OPT, 0, 1}, {"Alias", &CONFIG_ALIASES, TYPE_MULTISTRING, PARM_OPT, 0, 0}, {"UserParameter", &CONFIG_USER_PARAMETERS, TYPE_MULTISTRING, PARM_OPT, 0, 0}, #ifndef _WINDOWS {"LoadModulePath", &CONFIG_LOAD_MODULE_PATH, TYPE_STRING, PARM_OPT, 0, 0}, {"LoadModule", &CONFIG_LOAD_MODULE, TYPE_MULTISTRING, PARM_OPT, 0, 0}, #endif #ifdef _WINDOWS {"PerfCounter", &CONFIG_PERF_COUNTERS, TYPE_MULTISTRING, PARM_OPT, 0, 0}, #endif {NULL} }; /* initialize multistrings */ zbx_strarr_init(&CONFIG_ALIASES); zbx_strarr_init(&CONFIG_USER_PARAMETERS); #ifndef _WINDOWS zbx_strarr_init(&CONFIG_LOAD_MODULE); #endif #ifdef _WINDOWS zbx_strarr_init(&CONFIG_PERF_COUNTERS); #endif parse_cfg_file(CONFIG_FILE, cfg, requirement, ZBX_CFG_STRICT); set_defaults(); if (ZBX_CFG_FILE_REQUIRED == requirement && NULL == CONFIG_HOSTS_ALLOWED && 0 != CONFIG_PASSIVE_FORKS) { zbx_error("StartAgents is not 0, parameter Server must be defined"); exit(EXIT_FAILURE); } if (NULL != active_hosts && '\0' != *active_hosts) get_serveractive_hosts(active_hosts); zbx_free(active_hosts); if (ZBX_CFG_FILE_REQUIRED == requirement) zbx_validate_config(); }
/****************************************************************************** * * * Function: zbx_load_config * * * * Purpose: parse config file and update configuration parameters * * * * Parameters: * * * * Return value: * * * * Author: Alexei Vladishev * * * * Comments: will terminate process if parsing fails * * * ******************************************************************************/ static void zbx_load_config(ZBX_TASK_EX *task) { static struct cfg_line cfg[] = { /* PARAMETER, VAR, TYPE, MANDATORY, MIN, MAX */ {"StartDBSyncers", &CONFIG_HISTSYNCER_FORKS, TYPE_INT, PARM_OPT, 1, 100}, {"StartDiscoverers", &CONFIG_DISCOVERER_FORKS, TYPE_INT, PARM_OPT, 0, 250}, {"StartHTTPPollers", &CONFIG_HTTPPOLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartPingers", &CONFIG_PINGER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartPollers", &CONFIG_POLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartPollersUnreachable", &CONFIG_UNREACHABLE_POLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartIPMIPollers", &CONFIG_IPMIPOLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartTimers", &CONFIG_TIMER_FORKS, TYPE_INT, PARM_OPT, 1, 1000}, {"StartTrappers", &CONFIG_TRAPPER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartJavaPollers", &CONFIG_JAVAPOLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartEscalators", &CONFIG_ESCALATOR_FORKS, TYPE_INT, PARM_OPT, 1, 100}, {"JavaGateway", &CONFIG_JAVA_GATEWAY, TYPE_STRING, PARM_OPT, 0, 0}, {"JavaGatewayPort", &CONFIG_JAVA_GATEWAY_PORT, TYPE_INT, PARM_OPT, 1024, 32767}, {"SNMPTrapperFile", &CONFIG_SNMPTRAP_FILE, TYPE_STRING, PARM_OPT, 0, 0}, {"StartSNMPTrapper", &CONFIG_SNMPTRAPPER_FORKS, TYPE_INT, PARM_OPT, 0, 1}, {"CacheSize", &CONFIG_CONF_CACHE_SIZE, TYPE_UINT64, PARM_OPT, 128 * ZBX_KIBIBYTE, __UINT64_C(8) * ZBX_GIBIBYTE}, {"HistoryCacheSize", &CONFIG_HISTORY_CACHE_SIZE, TYPE_UINT64, PARM_OPT, 128 * ZBX_KIBIBYTE, __UINT64_C(2) * ZBX_GIBIBYTE}, {"HistoryIndexCacheSize", &CONFIG_HISTORY_INDEX_CACHE_SIZE, TYPE_UINT64, PARM_OPT, 128 * ZBX_KIBIBYTE, __UINT64_C(2) * ZBX_GIBIBYTE}, {"TrendCacheSize", &CONFIG_TRENDS_CACHE_SIZE, TYPE_UINT64, PARM_OPT, 128 * ZBX_KIBIBYTE, __UINT64_C(2) * ZBX_GIBIBYTE}, {"ValueCacheSize", &CONFIG_VALUE_CACHE_SIZE, TYPE_UINT64, PARM_OPT, 0, __UINT64_C(64) * ZBX_GIBIBYTE}, {"CacheUpdateFrequency", &CONFIG_CONFSYNCER_FREQUENCY, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, {"HousekeepingFrequency", &CONFIG_HOUSEKEEPING_FREQUENCY, TYPE_INT, PARM_OPT, 0, 24}, {"MaxHousekeeperDelete", &CONFIG_MAX_HOUSEKEEPER_DELETE, TYPE_INT, PARM_OPT, 0, 1000000}, {"TmpDir", &CONFIG_TMPDIR, TYPE_STRING, PARM_OPT, 0, 0}, {"FpingLocation", &CONFIG_FPING_LOCATION, TYPE_STRING, PARM_OPT, 0, 0}, {"Fping6Location", &CONFIG_FPING6_LOCATION, TYPE_STRING, PARM_OPT, 0, 0}, {"Timeout", &CONFIG_TIMEOUT, TYPE_INT, PARM_OPT, 1, 30}, {"TrapperTimeout", &CONFIG_TRAPPER_TIMEOUT, TYPE_INT, PARM_OPT, 1, 300}, {"UnreachablePeriod", &CONFIG_UNREACHABLE_PERIOD, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, {"UnreachableDelay", &CONFIG_UNREACHABLE_DELAY, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, {"UnavailableDelay", &CONFIG_UNAVAILABLE_DELAY, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, {"ListenIP", &CONFIG_LISTEN_IP, TYPE_STRING_LIST, PARM_OPT, 0, 0}, {"ListenPort", &CONFIG_LISTEN_PORT, TYPE_INT, PARM_OPT, 1024, 32767}, {"SourceIP", &CONFIG_SOURCE_IP, TYPE_STRING, PARM_OPT, 0, 0}, {"DebugLevel", &CONFIG_LOG_LEVEL, TYPE_INT, PARM_OPT, 0, 5}, {"PidFile", &CONFIG_PID_FILE, TYPE_STRING, PARM_OPT, 0, 0}, {"LogType", &CONFIG_LOG_TYPE_STR, TYPE_STRING, PARM_OPT, 0, 0}, {"LogFile", &CONFIG_LOG_FILE, TYPE_STRING, PARM_OPT, 0, 0}, {"LogFileSize", &CONFIG_LOG_FILE_SIZE, TYPE_INT, PARM_OPT, 0, 1024}, {"AlertScriptsPath", &CONFIG_ALERT_SCRIPTS_PATH, TYPE_STRING, PARM_OPT, 0, 0}, {"ExternalScripts", &CONFIG_EXTERNALSCRIPTS, TYPE_STRING, PARM_OPT, 0, 0}, {"DBHost", &CONFIG_DBHOST, TYPE_STRING, PARM_OPT, 0, 0}, {"DBName", &CONFIG_DBNAME, TYPE_STRING, PARM_MAND, 0, 0}, {"DBSchema", &CONFIG_DBSCHEMA, TYPE_STRING, PARM_OPT, 0, 0}, {"DBUser", &CONFIG_DBUSER, TYPE_STRING, PARM_OPT, 0, 0}, {"DBPassword", &CONFIG_DBPASSWORD, TYPE_STRING, PARM_OPT, 0, 0}, {"DBSocket", &CONFIG_DBSOCKET, TYPE_STRING, PARM_OPT, 0, 0}, {"DBPort", &CONFIG_DBPORT, TYPE_INT, PARM_OPT, 1024, 65535}, {"SSHKeyLocation", &CONFIG_SSH_KEY_LOCATION, TYPE_STRING, PARM_OPT, 0, 0}, {"LogSlowQueries", &CONFIG_LOG_SLOW_QUERIES, TYPE_INT, PARM_OPT, 0, 3600000}, {"StartProxyPollers", &CONFIG_PROXYPOLLER_FORKS, TYPE_INT, PARM_OPT, 0, 250}, {"ProxyConfigFrequency", &CONFIG_PROXYCONFIG_FREQUENCY, TYPE_INT, PARM_OPT, 1, SEC_PER_WEEK}, {"ProxyDataFrequency", &CONFIG_PROXYDATA_FREQUENCY, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, {"LoadModulePath", &CONFIG_LOAD_MODULE_PATH, TYPE_STRING, PARM_OPT, 0, 0}, {"LoadModule", &CONFIG_LOAD_MODULE, TYPE_MULTISTRING, PARM_OPT, 0, 0}, {"StartVMwareCollectors", &CONFIG_VMWARE_FORKS, TYPE_INT, PARM_OPT, 0, 250}, {"VMwareFrequency", &CONFIG_VMWARE_FREQUENCY, TYPE_INT, PARM_OPT, 10, SEC_PER_DAY}, {"VMwarePerfFrequency", &CONFIG_VMWARE_PERF_FREQUENCY, TYPE_INT, PARM_OPT, 10, SEC_PER_DAY}, {"VMwareCacheSize", &CONFIG_VMWARE_CACHE_SIZE, TYPE_UINT64, 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, PARM_OPT, 0, 1}, {"User", &CONFIG_USER, TYPE_STRING, PARM_OPT, 0, 0}, {"SSLCALocation", &CONFIG_SSL_CA_LOCATION, TYPE_STRING, PARM_OPT, 0, 0}, {"SSLCertLocation", &CONFIG_SSL_CERT_LOCATION, TYPE_STRING, PARM_OPT, 0, 0}, {"SSLKeyLocation", &CONFIG_SSL_KEY_LOCATION, TYPE_STRING, PARM_OPT, 0, 0}, {"TLSCAFile", &CONFIG_TLS_CA_FILE, TYPE_STRING, PARM_OPT, 0, 0}, {"TLSCRLFile", &CONFIG_TLS_CRL_FILE, TYPE_STRING, PARM_OPT, 0, 0}, {"TLSCertFile", &CONFIG_TLS_CERT_FILE, TYPE_STRING, PARM_OPT, 0, 0}, {"TLSKeyFile", &CONFIG_TLS_KEY_FILE, TYPE_STRING, PARM_OPT, 0, 0}, {"SocketDir", &CONFIG_SOCKET_PATH, TYPE_STRING, PARM_OPT, 0, 0}, {"StartAlerters", &CONFIG_ALERTER_FORKS, TYPE_INT, PARM_OPT, 1, 100}, {"StartPreprocessors", &CONFIG_PREPROCESSOR_FORKS, TYPE_INT, PARM_OPT, 1, 1000}, {"HistoryStorageURL", &CONFIG_HISTORY_STORAGE_URL, TYPE_STRING, PARM_OPT, 0, 0}, {"HistoryStorageTypes", &CONFIG_HISTORY_STORAGE_OPTS, TYPE_STRING_LIST, PARM_OPT, 0, 0}, {"HistoryStorageDateIndex", &CONFIG_HISTORY_STORAGE_PIPELINES, TYPE_INT, PARM_OPT, 0, 1}, {"ExportDir", &CONFIG_EXPORT_DIR, TYPE_STRING, PARM_OPT, 0, 0}, {"ExportFileSize", &CONFIG_EXPORT_FILE_SIZE, TYPE_UINT64, PARM_OPT, ZBX_MEBIBYTE, ZBX_GIBIBYTE}, {"StartLLDProcessors", &CONFIG_LLDWORKER_FORKS, TYPE_INT, PARM_OPT, 1, 100}, {"StatsAllowedIP", &CONFIG_STATS_ALLOWED_IP, TYPE_STRING_LIST, PARM_OPT, 0, 0}, {NULL} }; /* initialize multistrings */ zbx_strarr_init(&CONFIG_LOAD_MODULE); parse_cfg_file(CONFIG_FILE, cfg, ZBX_CFG_FILE_REQUIRED, ZBX_CFG_STRICT); zbx_set_defaults(); CONFIG_LOG_TYPE = zbx_get_log_type(CONFIG_LOG_TYPE_STR); zbx_validate_config(task); #if defined(HAVE_POLARSSL) || defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL) zbx_tls_validate_config(); #endif }
/****************************************************************************** * * * Function: zbx_load_config * * * * Purpose: parse config file and update configuration parameters * * * * Author: Alexei Vladishev * * * * Comments: will terminate process if parsing fails * * * ******************************************************************************/ static void zbx_load_config() { static struct cfg_line cfg[] = { /* PARAMETER, VAR, TYPE, MANDATORY, MIN, MAX */ {"ProxyMode", &CONFIG_PROXYMODE, TYPE_INT, PARM_OPT, ZBX_PROXYMODE_ACTIVE, ZBX_PROXYMODE_PASSIVE}, {"Server", &CONFIG_SERVER, TYPE_STRING, PARM_OPT, 0, 0}, {"ServerPort", &CONFIG_SERVER_PORT, TYPE_INT, PARM_OPT, 1024, 32767}, {"Hostname", &CONFIG_HOSTNAME, TYPE_STRING, PARM_OPT, 0, 0}, {"HostnameItem", &CONFIG_HOSTNAME_ITEM, TYPE_STRING, PARM_OPT, 0, 0}, {"StartDBSyncers", &CONFIG_HISTSYNCER_FORKS, TYPE_INT, PARM_OPT, 1, 100}, {"StartDiscoverers", &CONFIG_DISCOVERER_FORKS, TYPE_INT, PARM_OPT, 0, 250}, {"StartHTTPPollers", &CONFIG_HTTPPOLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartPingers", &CONFIG_PINGER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartPollers", &CONFIG_POLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartPollersUnreachable", &CONFIG_UNREACHABLE_POLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartIPMIPollers", &CONFIG_IPMIPOLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartTrappers", &CONFIG_TRAPPER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartJavaPollers", &CONFIG_JAVAPOLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"JavaGateway", &CONFIG_JAVA_GATEWAY, TYPE_STRING, PARM_OPT, 0, 0}, {"JavaGatewayPort", &CONFIG_JAVA_GATEWAY_PORT, TYPE_INT, PARM_OPT, 1024, 32767}, {"SNMPTrapperFile", &CONFIG_SNMPTRAP_FILE, TYPE_STRING, PARM_OPT, 0, 0}, {"StartSNMPTrapper", &CONFIG_SNMPTRAPPER_FORKS, TYPE_INT, PARM_OPT, 0, 1}, {"CacheSize", &CONFIG_CONF_CACHE_SIZE, TYPE_INT, PARM_OPT, 128 * ZBX_KIBIBYTE, 0x7fffffff}, /* just below 2GB */ {"HistoryCacheSize", &CONFIG_HISTORY_CACHE_SIZE, TYPE_INT, PARM_OPT, 128 * ZBX_KIBIBYTE, 0x7fffffff}, /* just below 2GB */ {"HistoryTextCacheSize", &CONFIG_TEXT_CACHE_SIZE, TYPE_INT, PARM_OPT, 128 * ZBX_KIBIBYTE, 0x7fffffff}, /* just below 2GB */ {"HousekeepingFrequency", &CONFIG_HOUSEKEEPING_FREQUENCY, TYPE_INT, PARM_OPT, 1, 24}, {"ProxyLocalBuffer", &CONFIG_PROXY_LOCAL_BUFFER, TYPE_INT, PARM_OPT, 0, 720}, {"ProxyOfflineBuffer", &CONFIG_PROXY_OFFLINE_BUFFER, TYPE_INT, PARM_OPT, 1, 720}, {"HeartbeatFrequency", &CONFIG_HEARTBEAT_FREQUENCY, TYPE_INT, PARM_OPT, 0, SEC_PER_HOUR}, {"ConfigFrequency", &CONFIG_PROXYCONFIG_FREQUENCY, TYPE_INT, PARM_OPT, 1, SEC_PER_WEEK}, {"DataSenderFrequency", &CONFIG_PROXYDATA_FREQUENCY, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, {"TmpDir", &CONFIG_TMPDIR, TYPE_STRING, PARM_OPT, 0, 0}, {"FpingLocation", &CONFIG_FPING_LOCATION, TYPE_STRING, PARM_OPT, 0, 0}, #ifdef HAVE_IPV6 {"Fping6Location", &CONFIG_FPING6_LOCATION, TYPE_STRING, PARM_OPT, 0, 0}, #endif {"Timeout", &CONFIG_TIMEOUT, TYPE_INT, PARM_OPT, 1, 30}, {"TrapperTimeout", &CONFIG_TRAPPER_TIMEOUT, TYPE_INT, PARM_OPT, 1, 300}, {"UnreachablePeriod", &CONFIG_UNREACHABLE_PERIOD, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, {"UnreachableDelay", &CONFIG_UNREACHABLE_DELAY, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, {"UnavailableDelay", &CONFIG_UNAVAILABLE_DELAY, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, {"ListenIP", &CONFIG_LISTEN_IP, TYPE_STRING, PARM_OPT, 0, 0}, {"ListenPort", &CONFIG_LISTEN_PORT, TYPE_INT, PARM_OPT, 1024, 32767}, {"SourceIP", &CONFIG_SOURCE_IP, TYPE_STRING, PARM_OPT, 0, 0}, {"DebugLevel", &CONFIG_LOG_LEVEL, TYPE_INT, PARM_OPT, 0, 4}, {"PidFile", &CONFIG_PID_FILE, TYPE_STRING, PARM_OPT, 0, 0}, {"LogFile", &CONFIG_LOG_FILE, TYPE_STRING, PARM_OPT, 0, 0}, {"LogFileSize", &CONFIG_LOG_FILE_SIZE, TYPE_INT, PARM_OPT, 0, 1024}, {"ExternalScripts", &CONFIG_EXTERNALSCRIPTS, TYPE_STRING, PARM_OPT, 0, 0}, {"DBHost", &CONFIG_DBHOST, TYPE_STRING, PARM_OPT, 0, 0}, {"DBName", &CONFIG_DBNAME, TYPE_STRING, PARM_MAND, 0, 0}, {"DBSchema", &CONFIG_DBSCHEMA, TYPE_STRING, PARM_OPT, 0, 0}, {"DBUser", &CONFIG_DBUSER, TYPE_STRING, PARM_OPT, 0, 0}, {"DBPassword", &CONFIG_DBPASSWORD, TYPE_STRING, PARM_OPT, 0, 0}, {"DBSocket", &CONFIG_DBSOCKET, TYPE_STRING, PARM_OPT, 0, 0}, {"DBPort", &CONFIG_DBPORT, TYPE_INT, PARM_OPT, 1024, 65535}, {"SSHKeyLocation", &CONFIG_SSH_KEY_LOCATION, TYPE_STRING, PARM_OPT, 0, 0}, {"LogSlowQueries", &CONFIG_LOG_SLOW_QUERIES, TYPE_INT, PARM_OPT, 0, 3600000}, {NULL} }; parse_cfg_file(CONFIG_FILE, cfg, ZBX_CFG_FILE_REQUIRED, ZBX_CFG_STRICT); zbx_set_defaults(); zbx_validate_config(); }
/****************************************************************************** * * * Function: zbx_load_config * * * * Purpose: parse config file and update configuration parameters * * * * Parameters: * * * * Return value: * * * * Author: Alexei Vladishev * * * * Comments: will terminate process if parsing fails * * * ******************************************************************************/ static void zbx_load_config() { static struct cfg_line cfg[] = { /* PARAMETER, VAR, TYPE, MANDATORY, MIN, MAX */ {"StartDBSyncers", &CONFIG_HISTSYNCER_FORKS, TYPE_INT, PARM_OPT, 1, 100}, {"StartDiscoverers", &CONFIG_DISCOVERER_FORKS, TYPE_INT, PARM_OPT, 0, 250}, {"StartHTTPPollers", &CONFIG_HTTPPOLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartPingers", &CONFIG_PINGER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartPollers", &CONFIG_POLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartPollersUnreachable", &CONFIG_UNREACHABLE_POLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartIPMIPollers", &CONFIG_IPMIPOLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartTimers", &CONFIG_TIMER_FORKS, TYPE_INT, PARM_OPT, 1, 1000}, {"StartTrappers", &CONFIG_TRAPPER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"StartJavaPollers", &CONFIG_JAVAPOLLER_FORKS, TYPE_INT, PARM_OPT, 0, 1000}, {"JavaGateway", &CONFIG_JAVA_GATEWAY, TYPE_STRING, PARM_OPT, 0, 0}, {"JavaGatewayPort", &CONFIG_JAVA_GATEWAY_PORT, TYPE_INT, PARM_OPT, 1024, 32767}, {"SNMPTrapperFile", &CONFIG_SNMPTRAP_FILE, TYPE_STRING, PARM_OPT, 0, 0}, {"StartSNMPTrapper", &CONFIG_SNMPTRAPPER_FORKS, TYPE_INT, PARM_OPT, 0, 1}, {"CacheSize", &CONFIG_CONF_CACHE_SIZE, TYPE_UINT64, PARM_OPT, 128 * ZBX_KIBIBYTE, __UINT64_C(8) * ZBX_GIBIBYTE}, {"HistoryCacheSize", &CONFIG_HISTORY_CACHE_SIZE, TYPE_UINT64, PARM_OPT, 128 * ZBX_KIBIBYTE, __UINT64_C(2) * ZBX_GIBIBYTE}, {"TrendCacheSize", &CONFIG_TRENDS_CACHE_SIZE, TYPE_UINT64, PARM_OPT, 128 * ZBX_KIBIBYTE, __UINT64_C(2) * ZBX_GIBIBYTE}, {"HistoryTextCacheSize", &CONFIG_TEXT_CACHE_SIZE, TYPE_UINT64, PARM_OPT, 128 * ZBX_KIBIBYTE, __UINT64_C(2) * ZBX_GIBIBYTE}, {"ValueCacheSize", &CONFIG_VALUE_CACHE_SIZE, TYPE_UINT64, PARM_OPT, 0, __UINT64_C(64) * ZBX_GIBIBYTE}, {"CacheUpdateFrequency", &CONFIG_CONFSYNCER_FREQUENCY, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, {"HousekeepingFrequency", &CONFIG_HOUSEKEEPING_FREQUENCY, TYPE_INT, PARM_OPT, 1, 24}, {"MaxHousekeeperDelete", &CONFIG_MAX_HOUSEKEEPER_DELETE, TYPE_INT, PARM_OPT, 0, 1000000}, {"SenderFrequency", &CONFIG_SENDER_FREQUENCY, TYPE_INT, PARM_OPT, 5, SEC_PER_HOUR}, {"TmpDir", &CONFIG_TMPDIR, TYPE_STRING, PARM_OPT, 0, 0}, {"FpingLocation", &CONFIG_FPING_LOCATION, TYPE_STRING, PARM_OPT, 0, 0}, #ifdef HAVE_IPV6 {"Fping6Location", &CONFIG_FPING6_LOCATION, TYPE_STRING, PARM_OPT, 0, 0}, #endif {"Timeout", &CONFIG_TIMEOUT, TYPE_INT, PARM_OPT, 1, 30}, {"TrapperTimeout", &CONFIG_TRAPPER_TIMEOUT, TYPE_INT, PARM_OPT, 1, 300}, {"UnreachablePeriod", &CONFIG_UNREACHABLE_PERIOD, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, {"UnreachableDelay", &CONFIG_UNREACHABLE_DELAY, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, {"UnavailableDelay", &CONFIG_UNAVAILABLE_DELAY, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, {"ListenIP", &CONFIG_LISTEN_IP, TYPE_STRING_LIST, PARM_OPT, 0, 0}, {"ListenPort", &CONFIG_LISTEN_PORT, TYPE_INT, PARM_OPT, 1024, 32767}, {"SourceIP", &CONFIG_SOURCE_IP, TYPE_STRING, PARM_OPT, 0, 0}, {"DebugLevel", &CONFIG_LOG_LEVEL, TYPE_INT, PARM_OPT, 0, 4}, {"PidFile", &CONFIG_PID_FILE, TYPE_STRING, PARM_OPT, 0, 0}, {"LogFile", &CONFIG_LOG_FILE, TYPE_STRING, PARM_OPT, 0, 0}, {"LogFileSize", &CONFIG_LOG_FILE_SIZE, TYPE_INT, PARM_OPT, 0, 1024}, {"AlertScriptsPath", &CONFIG_ALERT_SCRIPTS_PATH, TYPE_STRING, PARM_OPT, 0, 0}, {"ExternalScripts", &CONFIG_EXTERNALSCRIPTS, TYPE_STRING, PARM_OPT, 0, 0}, {"DBHost", &CONFIG_DBHOST, TYPE_STRING, PARM_OPT, 0, 0}, {"DBName", &CONFIG_DBNAME, TYPE_STRING, PARM_MAND, 0, 0}, {"DBSchema", &CONFIG_DBSCHEMA, TYPE_STRING, PARM_OPT, 0, 0}, {"DBUser", &CONFIG_DBUSER, TYPE_STRING, PARM_OPT, 0, 0}, {"DBPassword", &CONFIG_DBPASSWORD, TYPE_STRING, PARM_OPT, 0, 0}, {"DBSocket", &CONFIG_DBSOCKET, TYPE_STRING, PARM_OPT, 0, 0}, {"DBPort", &CONFIG_DBPORT, TYPE_INT, PARM_OPT, 1024, 65535}, {"NodeID", &CONFIG_NODEID, TYPE_INT, PARM_OPT, 0, 999}, {"NodeNoEvents", &CONFIG_NODE_NOEVENTS, TYPE_INT, PARM_OPT, 0, 1}, {"NodeNoHistory", &CONFIG_NODE_NOHISTORY, TYPE_INT, PARM_OPT, 0, 1}, {"SSHKeyLocation", &CONFIG_SSH_KEY_LOCATION, TYPE_STRING, PARM_OPT, 0, 0}, {"LogSlowQueries", &CONFIG_LOG_SLOW_QUERIES, TYPE_INT, PARM_OPT, 0, 3600000}, {"StartProxyPollers", &CONFIG_PROXYPOLLER_FORKS, TYPE_INT, PARM_OPT, 0, 250}, {"ProxyConfigFrequency", &CONFIG_PROXYCONFIG_FREQUENCY, TYPE_INT, PARM_OPT, 1, SEC_PER_WEEK}, {"ProxyDataFrequency", &CONFIG_PROXYDATA_FREQUENCY, TYPE_INT, PARM_OPT, 1, SEC_PER_HOUR}, {"AllowRoot", &CONFIG_ALLOW_ROOT, TYPE_INT, PARM_OPT, 0, 1}, {"LoadModulePath", &CONFIG_LOAD_MODULE_PATH, TYPE_STRING, PARM_OPT, 0, 0}, {"LoadModule", &CONFIG_LOAD_MODULE, TYPE_MULTISTRING, PARM_OPT, 0, 0}, {"StartVMwareCollectors", &CONFIG_VMWARE_FORKS, TYPE_INT, PARM_OPT, 0, 250}, {"VMwareFrequency", &CONFIG_VMWARE_FREQUENCY, TYPE_INT, PARM_OPT, 10, SEC_PER_DAY}, {"VMwareCacheSize", &CONFIG_VMWARE_CACHE_SIZE, TYPE_UINT64, PARM_OPT, 256 * ZBX_KIBIBYTE, __UINT64_C(2) * ZBX_GIBIBYTE}, {"EnableSNMPBulkRequests", &CONFIG_SNMP_BULK_REQUESTS, TYPE_INT, PARM_OPT, 0, 1}, {NULL} }; /* initialize multistrings */ zbx_strarr_init(&CONFIG_LOAD_MODULE); parse_cfg_file(CONFIG_FILE, cfg, ZBX_CFG_FILE_REQUIRED, ZBX_CFG_STRICT); zbx_set_defaults(); zbx_validate_config(); }