"(Do not set too high, or you will get an OOM)".format(DEFAULT_WORKERS)) description = "Spawn multiple discovery.php processes in parallel." parser = ArgumentParser(usage=usage, description=description) parser.add_argument(dest="amount_of_workers", default=DEFAULT_WORKERS) parser.add_argument( "-d", "--debug", dest="debug", action="store_true", default=False, help= "Enable debug output. WARNING: Leaving this enabled will consume a lot of disk space.", ) args = parser.parse_args() config = LibreNMS.get_config_data(os.path.dirname(os.path.realpath(__file__))) if not config: logger = logging.getLogger(__name__) logger.critical( "Could not run {} wrapper. Missing config".format(WRAPPER_TYPE)) sys.exit(1) log_dir = config["log_dir"] log_file = os.path.join(log_dir, WRAPPER_TYPE + "_wrapper.log") logger = LibreNMS.logger_get_logger(log_file, debug=args.debug) try: amount_of_workers = int(args.amount_of_workers) except (IndexError, ValueError): amount_of_workers = DEFAULT_WORKERS logger.warning( "Bogus number of workers given. Using default number ({}) of workers.".
def populate(self): config = LibreNMS.get_config_data(self.BASE_DIR) # populate config variables self.node_id = os.getenv("NODE_ID") self.set_name(config.get("distributed_poller_name", None)) self.distributed = config.get("distributed_poller", ServiceConfig.distributed) self.group = ServiceConfig.parse_group( config.get("distributed_poller_group", ServiceConfig.group) ) # backward compatible options self.poller.workers = config.get( "poller_service_workers", ServiceConfig.poller.workers ) self.poller.frequency = config.get( "poller_service_poll_frequency", ServiceConfig.poller.frequency ) self.discovery.frequency = config.get( "poller_service_discover_frequency", ServiceConfig.discovery.frequency ) self.down_retry = config.get( "poller_service_down_retry", ServiceConfig.down_retry ) self.log_level = config.get("poller_service_loglevel", ServiceConfig.log_level) # new options self.poller.enabled = config.get("service_poller_enabled", True) # unused self.poller.workers = config.get( "service_poller_workers", ServiceConfig.poller.workers ) self.poller.frequency = config.get( "service_poller_frequency", ServiceConfig.poller.frequency ) self.discovery.enabled = config.get("service_discovery_enabled", True) # unused self.discovery.workers = config.get( "service_discovery_workers", ServiceConfig.discovery.workers ) self.discovery.frequency = config.get( "service_discovery_frequency", ServiceConfig.discovery.frequency ) self.services.enabled = config.get("service_services_enabled", True) self.services.workers = config.get( "service_services_workers", ServiceConfig.services.workers ) self.services.frequency = config.get( "service_services_frequency", ServiceConfig.services.frequency ) self.billing.enabled = config.get("service_billing_enabled", True) self.billing.frequency = config.get( "service_billing_frequency", ServiceConfig.billing.frequency ) self.billing.calculate = config.get( "service_billing_calculate_frequency", ServiceConfig.billing.calculate ) self.alerting.enabled = config.get("service_alerting_enabled", True) self.alerting.frequency = config.get( "service_alerting_frequency", ServiceConfig.alerting.frequency ) self.ping.enabled = config.get("service_ping_enabled", False) self.ping.frequency = config.get("ping_rrd_step", ServiceConfig.ping.frequency) self.down_retry = config.get( "service_poller_down_retry", ServiceConfig.down_retry ) self.log_level = config.get("service_loglevel", ServiceConfig.log_level) self.update_enabled = config.get( "service_update_enabled", ServiceConfig.update_enabled ) self.update_frequency = config.get( "service_update_frequency", ServiceConfig.update_frequency ) self.redis_host = os.getenv( "REDIS_HOST", config.get("redis_host", ServiceConfig.redis_host) ) self.redis_db = os.getenv( "REDIS_DB", config.get("redis_db", ServiceConfig.redis_db) ) self.redis_pass = os.getenv( "REDIS_PASSWORD", config.get("redis_pass", ServiceConfig.redis_pass) ) self.redis_port = int( os.getenv("REDIS_PORT", config.get("redis_port", ServiceConfig.redis_port)) ) self.redis_socket = os.getenv( "REDIS_SOCKET", config.get("redis_socket", ServiceConfig.redis_socket) ) self.redis_sentinel = os.getenv( "REDIS_SENTINEL", config.get("redis_sentinel", ServiceConfig.redis_sentinel) ) self.redis_sentinel_service = os.getenv( "REDIS_SENTINEL_SERVICE", config.get("redis_sentinel_service", ServiceConfig.redis_sentinel_service), ) self.redis_timeout = int( os.getenv( "REDIS_TIMEOUT", self.alerting.frequency if self.alerting.frequency != 0 else self.redis_timeout, ) ) self.db_host = os.getenv( "DB_HOST", config.get("db_host", ServiceConfig.db_host) ) self.db_name = os.getenv( "DB_DATABASE", config.get("db_name", ServiceConfig.db_name) ) self.db_pass = os.getenv( "DB_PASSWORD", config.get("db_pass", ServiceConfig.db_pass) ) self.db_port = int( os.getenv("DB_PORT", config.get("db_port", ServiceConfig.db_port)) ) self.db_socket = os.getenv( "DB_SOCKET", config.get("db_socket", ServiceConfig.db_socket) ) self.db_user = os.getenv( "DB_USERNAME", config.get("db_user", ServiceConfig.db_user) ) self.watchdog_enabled = config.get( "service_watchdog_enabled", ServiceConfig.watchdog_enabled ) self.watchdog_logfile = config.get("log_file", ServiceConfig.watchdog_logfile) # set convenient debug variable self.debug = logging.getLogger().isEnabledFor(logging.DEBUG) if not self.debug and self.log_level: try: logging.getLogger().setLevel(self.log_level) except ValueError: logger.error( "Unknown log level {}, must be one of 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'".format( self.log_level ) ) logging.getLogger().setLevel(logging.INFO)