def run(self): plotter_ps = None if CONFIG['plotter']: plotter = Plotter() plotter_ps = multiprocessing.Process(target=plotter, args=()) plotter_ps.start() if CONFIG['poller']: poller = Poller() while True: try: start_time = time.time() LOG.info('Start iteration') poller_ps = multiprocessing.Process(target=poller, args=()) poller_ps.start() poller_ps.join(CONFIG['interval'] * 2) if poller_ps.is_alive(): LOG.error('Timeout. Terminating ...') try: helper.kill_ps(poller_ps.pid, child=True) except: LOG.error(sys.exc_info()) poller_ps.terminate() LOG.info('Working time: %.2f' % (time.time() - start_time)) sleep_time = start_time + CONFIG['interval'] - time.time() - 0.1 if sleep_time > 0: time.sleep(sleep_time) except KeyboardInterrupt: raise except: LOG.error(helper.exc_info()) if plotter_ps: plotter_ps.join()
def run(self): plotter_ps = None if CONFIG['plotter']: plotter = Plotter() plotter_ps = multiprocessing.Process(target=plotter, args=()) plotter_ps.start() if CONFIG['poller']: poller = Poller() while True: try: start_time = time.time() LOG.info('Start iteration') poller_ps = multiprocessing.Process(target=poller, args=()) poller_ps.start() poller_ps.join(CONFIG['interval'] * 2) if poller_ps.is_alive(): LOG.error('Timeout. Terminating ...') try: helper.kill_ps(poller_ps.pid, child=True) except: LOG.error(sys.exc_info()) poller_ps.terminate() LOG.info('Working time: %.2f' % (time.time() - start_time)) sleep_time = start_time + CONFIG['interval'] - time.time( ) - 0.1 if sleep_time > 0: time.sleep(sleep_time) except KeyboardInterrupt: raise except: LOG.error(helper.exc_info()) if plotter_ps: plotter_ps.join()
def stop(self): LOG.info('Stop') if not self.pid_file: raise Exception("Can't stop, you must specify pid file") try: pf = file(self.pid_file, 'r') pid = int(pf.read().strip()) pf.close() except IOError: pid = None except ValueError: pid = None os.remove(self.pid_file) if not pid: message = "Pid file %s does not exist" LOG.warning(message % self.pid_file) return try: helper.kill_ps(pid, child=True) except Exception: LOG.error(helper.exc_info()) if os.path.exists(self.pid_file): os.remove(self.pid_file)
def run(self): while True: start_time = time.time() logger.info('Start time: %s' % time.ctime()) p = mp.Process(target=self.__call__, args=()) p.start() p.join(600) if p.is_alive(): logger.error('Timeout. Terminating ...') helper.kill_ps(p.pid, child=True) p.terminate() logger.info('Working time: %s' % (time.time() - start_time)) if not config['interval']: break sleep_time = start_time + config['interval'] - time.time() if sleep_time > 0: time.sleep(sleep_time)
def stop(self): logger.debug('Stop') try: pf = file(self.pid_file, 'r') pid = int(pf.read().strip()) pf.close() except IOError: pid = None except ValueError: pid = None os.remove(self.pid_file) if not pid: message = "Pid file %s does not exist" logger.critical(message % self.pid_file) return helper.kill_ps(pid, child=True) if os.path.exists(self.pid_file): os.remove(self.pid_file) self.running = False
def stop(self): logger.debug("Stop") try: pf = file(self.pid_file, "r") pid = int(pf.read().strip()) pf.close() except IOError: pid = None except ValueError: pid = None os.remove(self.pid_file) if not pid: message = "Pid file %s does not exist" logger.critical(message % self.pid_file) return helper.kill_ps(pid, child=True) if os.path.exists(self.pid_file): os.remove(self.pid_file) self.running = False
def stop(self): LOG.info('Stop') if not self.pid_file: raise Exception("You must specify pid file") try: pf = file(self.pid_file, 'r') pid = int(pf.read().strip()) pf.close() except IOError: LOG.error("Pid file %s dosn't exist" % self.pid_file) return except ValueError: LOG.error("Wrong value in pid file %s" % self.pid_file) self._delete_pid_file() return try: if helper.check_pid(self.pid_file): helper.kill_ps(pid, child=True) except Exception: LOG.error(helper.exc_info())
def run(self): while True: start_time = time.time() LOG.info('Start iteration') p = mp.Process(target=self.__call__, args=()) p.start() p.join(300) if p.is_alive(): LOG.error('Timeout. Terminating ...') try: helper.kill_ps(p.pid, child=True) except: LOG.exception('Exception') p.terminate() LOG.info('Working time: %s' % (time.time() - start_time)) if not CONFIG['interval']: break sleep_time = start_time + CONFIG['interval'] - time.time() if sleep_time > 0: time.sleep(sleep_time)
def main(): sys.stderr.write("This script is deprecated. Instead use load_statistics.py\n\n") parser = argparse.ArgumentParser() group = parser.add_mutually_exclusive_group() group.add_argument('--start', action='store_true', default=False, help='start daemon') group.add_argument('--stop', action='store_true', default=False, help='stop daemon') group.add_argument('--restart', action='store_true', default=False, help='restart daemon') parser.add_argument('--no-daemon', action='store_true', default=None, help="Run in no daemon mode") parser.add_argument('--with-snmp', action='store_true', default=None, help="Use snmp") parser.add_argument('-i', '--interval', type=int, default=None, help="execution interval in seconds. Default is 0 - exec once") parser.add_argument('-p', '--pid-file', default=None, help="Pid file") parser.add_argument('-l', '--log-file', default=None, help="Log file") parser.add_argument('-m', '--metrics', default=None, choices=['cpu', 'la', 'mem', 'net'], action='append', help="metrics type for processing") parser.add_argument('-c', '--config-file', default='./config.yml', help='config file') parser.add_argument('-t', '--instances-connection-timeout', type=int, default=None, help='instances connection timeout') parser.add_argument('-v', '--verbosity', default=None, action='count', help='increase output verbosity [0:4]. Default is 1 - Error') parser.add_argument('--version', action='version', version='Version %s' % __version__) args = parser.parse_args() try: config = yaml.safe_load(open(args.config_file))['scalr'] configure(args, config) except: if args.verbosity > 3: raise else: sys.stderr.write('%s\n' % helper.exc_info()) sys.exit(1) try: socket.setdefaulttimeout(CONFIG['instances_connection_timeout']) daemon = StatsPoller() if args.start: LOG.info('Start') if helper.check_pid(CONFIG['pid_file']): LOG.info('Another copy of process already running. Exit') sys.exit(0) daemon.start(daemon= not args.no_daemon) elif args.stop: LOG.info('Stop') daemon.stop() elif args.restart: LOG.info('Restart') daemon.restart(daemon= not args.no_daemon) else: print 'Usage %s -h' % sys.argv[0] LOG.info('Exit') except KeyboardInterrupt: LOG.critical(helper.exc_info()) helper.kill_ps(mp.current_process().pid, child=True) sys.exit(0) except SystemExit: pass except Exception: LOG.critical('Something happened and I think I died') LOG.exception('Critical exception') sys.exit(1)
def main(): parser = argparse.ArgumentParser() group = parser.add_mutually_exclusive_group() group.add_argument('--start', action='store_true', default=False, help='start program') group.add_argument('--stop', action='store_true', default=False, help='stop program') parser.add_argument('--poller', action='store_true', default=None, help='poller mode') parser.add_argument('--plotter', action='store_true', default=None, help='plotter mode') parser.add_argument('--no-daemon', action='store_true', default=None, help="run in no daemon mode") parser.add_argument('--with-snmp', action='store_true', default=None, help="use snmp") parser.add_argument('-i', '--interval', type=int, default=None, help="execution interval in seconds. Default is 120") parser.add_argument('-p', '--pid-file', default=None, help="pid file") parser.add_argument('-l', '--log-file', default=None, help="log file") parser.add_argument('-m', '--metrics', default=None, choices=['cpu', 'la', 'mem', 'net', 'io', 'snum'], action='append', help="metrics type for processing") parser.add_argument('-c', '--config-file', default='./config.yml', help='config file') parser.add_argument('-v', '--verbosity', default=None, action='count', help='increase output verbosity [0:4]. Default is 1 - Error') parser.add_argument('--version', action='version', version='Version %s' % __version__) args = parser.parse_args() try: config = yaml.safe_load(open(args.config_file))['scalr'] configure(config, args) except: if args.verbosity > 3: raise else: sys.stderr.write('%s\n' % helper.exc_info()) sys.exit(1) try: socket.setdefaulttimeout(CONFIG['instances_connection_timeout']) daemon = LoadStatistics() if args.start: LOG.info('Start') if helper.check_pid(CONFIG['pid_file']): LOG.info('Another copy of process already running. Exit') sys.exit(0) daemon.start(daemon=not args.no_daemon) elif args.stop: LOG.info('Stop') daemon.stop() else: print 'Please use %s -h' % sys.argv[0] LOG.info('Exit') except KeyboardInterrupt: sys.stdout.write('Keyboard interrupt\n') helper.kill_ps(multiprocessing.current_process().pid, child=True) sys.exit(0) except SystemExit: pass except Exception: LOG.exception('Something happened and I think I died') sys.exit(1)
def main(): parser = argparse.ArgumentParser() group = parser.add_mutually_exclusive_group() group.add_argument('--start', action='store_true', default=False, help='start program') group.add_argument('--stop', action='store_true', default=False, help='stop program') parser.add_argument('--poller', action='store_true', default=None, help='poller mode') parser.add_argument('--plotter', action='store_true', default=None, help='plotter mode') parser.add_argument('--no-daemon', action='store_true', default=None, help="run in no daemon mode") parser.add_argument('--with-snmp', action='store_true', default=None, help="use snmp") parser.add_argument('-i', '--interval', type=int, default=None, help="execution interval in seconds. Default is 120") parser.add_argument('-p', '--pid-file', default=None, help="pid file") parser.add_argument('-l', '--log-file', default=None, help="log file") parser.add_argument('-m', '--metrics', default=None, choices=['cpu', 'la', 'mem', 'net', 'io', 'snum'], action='append', help="metrics type for processing") parser.add_argument('-c', '--config-file', default='./config.yml', help='config file') parser.add_argument( '-v', '--verbosity', default=None, action='count', help='increase output verbosity [0:4]. Default is 1 - Error') parser.add_argument('--version', action='version', version='Version %s' % __version__) args = parser.parse_args() try: config = yaml.safe_load(open(args.config_file))['scalr'] configure(config, args) except: if args.verbosity > 3: raise else: sys.stderr.write('%s\n' % helper.exc_info()) sys.exit(1) try: socket.setdefaulttimeout(CONFIG['instances_connection_timeout']) daemon = LoadStatistics() if args.start: LOG.info('Start') if helper.check_pid(CONFIG['pid_file']): LOG.info('Another copy of process already running. Exit') sys.exit(0) daemon.start(daemon=not args.no_daemon) elif args.stop: LOG.info('Stop') daemon.stop() else: print 'Please use %s -h' % sys.argv[0] LOG.info('Exit') except KeyboardInterrupt: sys.stdout.write('Keyboard interrupt\n') helper.kill_ps(multiprocessing.current_process().pid, child=True) sys.exit(0) except SystemExit: pass except Exception: LOG.exception('Something happened and I think I died') sys.exit(1)
def main(): sys.stderr.write( "This script is deprecated. Instead use load_statistics.py\n\n") parser = argparse.ArgumentParser() group = parser.add_mutually_exclusive_group() group.add_argument('--start', action='store_true', default=False, help='start daemon') group.add_argument('--stop', action='store_true', default=False, help='stop daemon') group.add_argument('--restart', action='store_true', default=False, help='restart daemon') parser.add_argument('--no-daemon', action='store_true', default=None, help="Run in no daemon mode") parser.add_argument('--with-snmp', action='store_true', default=None, help="Use snmp") parser.add_argument( '-i', '--interval', type=int, default=None, help="execution interval in seconds. Default is 0 - exec once") parser.add_argument('-p', '--pid-file', default=None, help="Pid file") parser.add_argument('-l', '--log-file', default=None, help="Log file") parser.add_argument('-m', '--metrics', default=None, choices=['cpu', 'la', 'mem', 'net'], action='append', help="metrics type for processing") parser.add_argument('-c', '--config-file', default='./config.yml', help='config file') parser.add_argument('-t', '--instances-connection-timeout', type=int, default=None, help='instances connection timeout') parser.add_argument( '-v', '--verbosity', default=None, action='count', help='increase output verbosity [0:4]. Default is 1 - Error') parser.add_argument('--version', action='version', version='Version %s' % __version__) args = parser.parse_args() try: config = yaml.safe_load(open(args.config_file))['scalr'] configure(args, config) except: if args.verbosity > 3: raise else: sys.stderr.write('%s\n' % helper.exc_info()) sys.exit(1) try: socket.setdefaulttimeout(CONFIG['instances_connection_timeout']) daemon = StatsPoller() if args.start: LOG.info('Start') if helper.check_pid(CONFIG['pid_file']): LOG.info('Another copy of process already running. Exit') sys.exit(0) daemon.start(daemon=not args.no_daemon) elif args.stop: LOG.info('Stop') daemon.stop() elif args.restart: LOG.info('Restart') daemon.restart(daemon=not args.no_daemon) else: print 'Usage %s -h' % sys.argv[0] LOG.info('Exit') except KeyboardInterrupt: LOG.critical(helper.exc_info()) helper.kill_ps(mp.current_process().pid, child=True) sys.exit(0) except SystemExit: pass except Exception: LOG.critical('Something happened and I think I died') LOG.exception('Critical exception') sys.exit(1)