mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	* New service/discovery/poller wrapper * Convert old wrapper scripts to bootstrap loaders for wrapper.py * Move wrapper.py to LibreNMS module directory * Reformat files * File reformatting * bootstrap files reformatting * Fusion service and wrapper database connections and get_config_data functions * Moved subprocess calls to command_runner * LibreNMS library and __init__ fusion * Reformat files * Normalize logging use * Reformatting code * Fix missing argument for error log * Fix refactor typo in DBConfig class * Add default timeout for config.php data fetching * distributed discovery should finish with a timestamp instead of an epoch * Fix docstring inside dict prevents service key to work * Fix poller insert statement * Fix service wrapper typo * Update docstring since we changed function behavior * Normalize SQL statements * Convert optparse to argparse * Revert discovery thread number * Handle debug logging * Fix file option typo * Reformat code * Add credits to source package * Rename logs depending on the wrapper type * Cap max logfile size to 10MB * Reformat code * Add exception for Redis < 5.0 * Make sure we always log something from service * Fix bogus description * Add an error message on missing config file * Improve error message when .env file cannot be loaded * Improve wrapper logging * Fix cron run may fail when environment path is not set * Add missing -wrapper suffix for logs * Conform to prior naming scheme * Linter fix * Add inline copy of command_runner * Another linter fix * Raise exception after logging * Updated inline command_runner * Add command_runner to requirements * I guess I love linter fixes ;) * Don't spawn more threads than devices * Fix typo in log call * Add exit codes to log on error, add command line to debug log * Add thread name to error message * Log errors in end message for easier debugging * Typo fix * In love of linting
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#! /usr/bin/env python3
 | 
						|
"""
 | 
						|
This is a Bootstrap script for wrapper.py, in order to retain compatibility with earlier LibreNMS setups
 | 
						|
"""
 | 
						|
 | 
						|
import os
 | 
						|
import sys
 | 
						|
import logging
 | 
						|
from argparse import ArgumentParser
 | 
						|
 | 
						|
import LibreNMS
 | 
						|
import LibreNMS.wrapper as wrapper
 | 
						|
 | 
						|
WRAPPER_TYPE = "poller"
 | 
						|
DEFAULT_WORKERS = 16
 | 
						|
 | 
						|
"""
 | 
						|
    Take the amount of threads we want to run in parallel from the commandline
 | 
						|
    if None are given or the argument was garbage, fall back to default
 | 
						|
"""
 | 
						|
usage = (
 | 
						|
    "usage: %(prog)s [options] <amount_of_workers> (Default: {}"
 | 
						|
    "(Do not set too high, or you will get an OOM)".format(DEFAULT_WORKERS)
 | 
						|
)
 | 
						|
description = "Spawn multiple poller.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.".format(
 | 
						|
            amount_of_workers
 | 
						|
        )
 | 
						|
    )
 | 
						|
 | 
						|
wrapper.wrapper(
 | 
						|
    WRAPPER_TYPE,
 | 
						|
    amount_of_workers=amount_of_workers,
 | 
						|
    config=config,
 | 
						|
    log_dir=log_dir,
 | 
						|
    _debug=args.debug,
 | 
						|
)
 |