def setUp(self): super(SyslogMonitorConnectTest, self).setUp() self.monitor = None self.sockets = [] # capture log output scalyr_logging.set_log_destination(use_stdout=True) scalyr_logging.set_log_level(scalyr_logging.DEBUG_LEVEL_0) self.logger = logging.getLogger( "scalyr_agent.builtin_monitors.syslog_monitor.syslog") self.logger.setLevel(logging.INFO) self.stream = StringIO() self.handler = logging.StreamHandler(self.stream) self.logger.addHandler(self.handler) # Allow tcp_buffer_size to be set to less than 2k for option in MonitorInformation.__monitor_info__[ "scalyr_agent.builtin_monitors.syslog_monitor"].config_options: if option.option_name == "tcp_buffer_size": option.min_value = 0 # hide stdout self.old = sys.stdout # Replace sys.stdout with 'dummy' StringIO. # We must have one more variable which points to our 'dummy' stream because # Pytest can replace 'sys.stdout' with its own stream, # so we will not be able to access 'dummy' stream after that. self.dummy_stream = StringIO() sys.stdout = self.dummy_stream
def setUp(self): super(SyslogMonitorConnectTest, self).setUp() self.monitor = None self.sockets = [] # capture log output scalyr_logging.set_log_destination(use_stdout=True) scalyr_logging.set_log_level(scalyr_logging.DEBUG_LEVEL_0) self.logger = logging.getLogger( "scalyr_agent.builtin_monitors.syslog_monitor.syslog" ) self.logger.setLevel(logging.INFO) self.stream = StringIO() self.handler = logging.StreamHandler(self.stream) self.logger.addHandler(self.handler) # hide stdout self.old = sys.stdout # Replace sys.stdout with 'dummy' StringIO. # We must have one more variable which points to our 'dummy' stream because # Pytest can replace 'sys.stdout' with its own stream, # so we will not be able to access 'dummy' stream after that. self.dummy_stream = StringIO() sys.stdout = self.dummy_stream
def run_standalone_monitor(monitor_module, monitor_python_path, monitor_config, monitor_sample_interval, monitor_debug_level, global_config_path): """Runs a single plugin monitor instance. @param monitor_module: The name of the python module implementing the monitor. @param monitor_python_path: The python path to search to find the module. @param monitor_config: The monitor configuration object. @param monitor_sample_interval: The default to use for the sample interval. @param monitor_debug_level: The debug level to use for logging. @param global_config_path: The path to the agent.json global configuration file to use, or None if none was supplied. """ scalyr_logging.set_log_destination(use_stdout=True) scalyr_logging.set_log_level(monitor_debug_level) log.log(scalyr_logging.DEBUG_LEVEL_1, 'Attempting to run module %s', monitor_module) try: parsed_config = json_lib.parse(monitor_config) log.log(scalyr_logging.DEBUG_LEVEL_1, 'Parsed configuration successfully') except json_lib.JsonParseException, e: print >> sys.stderr, 'Failed to parse the monitor configuration as valid JSON: %s', str( e) return 1
def setUp(self): self.monitor = None self.sockets = [] # capture log output scalyr_logging.set_log_destination(use_stdout=True) scalyr_logging.set_log_level(scalyr_logging.DEBUG_LEVEL_0) self.logger = logging.getLogger("scalyr_agent.builtin_monitors.syslog_monitor.syslog") self.logger.setLevel(logging.INFO) self.stream = StringIO() self.handler = logging.StreamHandler(self.stream) self.logger.addHandler(self.handler) # hide stdout self.old = sys.stdout sys.stdout = StringIO()
def run_standalone_monitor(monitor_module, monitor_python_path, monitor_config, monitor_sample_interval, monitor_debug_level): """Runs a single plugin monitor instance. @param monitor_module: The name of the python module implementing the monitor. @param monitor_python_path: The python path to search to find the module. @param monitor_config: The monitor configuration object. @param monitor_sample_interval: The default to use for the sample interval. @param monitor_debug_level: The debug level to use for logging. """ scalyr_logging.set_log_destination(use_stdout=True) scalyr_logging.set_log_level(monitor_debug_level) log.log(scalyr_logging.DEBUG_LEVEL_1, 'Attempting to run module %s', monitor_module) try: parsed_config = json_lib.parse(monitor_config) log.log(scalyr_logging.DEBUG_LEVEL_1, 'Parsed configuration successfully') except json_lib.JsonParseException, e: print >>sys.stderr, 'Failed to parse the monitor configuration as valid JSON: %s', str(e) return 1
def run_standalone_monitor( monitor_module, monitor_python_path, monitor_config, monitor_sample_interval, monitor_debug_level, global_config_path, ): """Runs a single plugin monitor instance. @param monitor_module: The name of the python module implementing the monitor. @param monitor_python_path: The python path to search to find the module. @param monitor_config: The monitor configuration object. @param monitor_sample_interval: The default to use for the sample interval. @param monitor_debug_level: The debug level to use for logging. @param global_config_path: The path to the agent.json global configuration file to use, or None if none was supplied. """ scalyr_logging.set_log_destination(use_stdout=True) scalyr_logging.set_log_level(monitor_debug_level) log.log(scalyr_logging.DEBUG_LEVEL_1, "Attempting to run module %s", monitor_module) try: # Needs to be json_lib.parse because it is parsing configuration parsed_config = scalyr_util.json_scalyr_config_decode(monitor_config) log.log(scalyr_logging.DEBUG_LEVEL_1, "Parsed configuration successfully") except JsonParseException as e: print( "Failed to parse the monitor configuration as valid JSON: %s", six.text_type(e), file=sys.stderr, ) return 1 parsed_config["module"] = monitor_module if "id" not in parsed_config: parsed_config["id"] = "" # noinspection PyUnusedLocal def handle_shutdown_signal(signum, frame): print("Signal received, stopping monitor...", file=sys.stdout) monitor.stop() for sig in (signal.SIGTERM, signal.SIGINT): signal.signal(sig, handle_shutdown_signal) try: if global_config_path is not None: controller = PlatformController.new_platform() paths = controller.default_paths global_config = Configuration(global_config_path, paths, log) global_config.parse() else: global_config = None monitor = MonitorsManager.build_monitor( parsed_config, monitor_python_path, float(monitor_sample_interval), global_config, ) log.log(scalyr_logging.DEBUG_LEVEL_1, "Constructed monitor") monitor.open_metric_log() log.log(scalyr_logging.DEBUG_LEVEL_1, "Starting monitor") monitor.start() while monitor.isAlive(): time.sleep(0.1) except BadMonitorConfiguration as e: print("Invalid monitor configuration: %s" % six.text_type(e), file=sys.stderr) return 0