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,
|
|
)
|