def set_logging():
    try:
        daemon_conf = conf_reader.read_daemon_conf()
        log_path = os.path.join(daemon_conf['LOGS_PATH'], 'pycollector.log')
        log_dir = os.path.split(log_path)[0]
        if not (log_dir_exists(log_dir) or suggest_log_path_creation(log_path)):
            exit(-1)

        logger = logging.getLogger('pycollector')
        exec("logger.setLevel(logging.%s)" % daemon_conf['LOG_SEVERITY'])
        rotating = daemon_conf['LOG_ROTATING']
        formatter = logging.Formatter(daemon_conf['LOG_FORMATTER'])

        file_handler = logging.handlers.TimedRotatingFileHandler(log_path, when=rotating)
        stream_handler = logging.StreamHandler()

        file_handler.setFormatter(formatter)
        stream_handler.setFormatter(formatter)

        logger.addHandler(file_handler)
        logger.addHandler(stream_handler)
        return logger
    except Exception, e:
        print "Cannot set logging."
        traceback.print_exc()
def status():
    pid_path = conf_reader.read_daemon_conf()['PID_FILE_PATH']

    if not is_running()[0]:
        print "Status: NOT RUNNING."
        if os.path.exists(pid_path):
            print "WARNING: Pidfile in %s seems to be obsolete. Please, remove it mannualy." % pid_path
            sys.exit(-1)
        sys.exit(0)
    print "Status: RUNNING."
    sys.exit(0)
def stop():
    running, pids = is_running()
    if not running:
        print "Daemon was not running."
        sys.exit(-1)

    pid_path = conf_reader.read_daemon_conf()['PID_FILE_PATH']

    if not pid_path or not os.path.exists(pid_path):
        print "WARNING: Seems to be running, but can't get pidfile in %s. Kill it manually." % pid_path
        sys.exit(-1)

    try:
        print "Stopping daemon..."
        pid = get_pid(pid_path)
    except Exception, e:
        print "Can't read pidfile. Daemon not stopped."
        traceback.print_exc()
        sys.exit(-1)
def start(collector_clazz, to_daemon=True, enable_server=True, server_port=8442):
    if is_running()[0]:
        print "Daemon already running."
        sys.exit(-1)

    #starts daemon context
    if to_daemon:
        d = daemon.DaemonContext(working_directory=os.getcwd())
        d.open()

    try:
        #guarantees that libs are available in daemon context
        sys.path.append(__meta__.PATHS.values())

        log = set_logging()
        log.info(ascii.ascii)
        log.info("Starting collector...")
        
        try:
            collector = collector_clazz(conf_reader.read_yaml_conf(),
                                        conf_reader.read_daemon_conf(),
                                        enable_server=enable_server,
                                        server_port=server_port)
            # write pid.
            write_pid(collector.daemon_conf['PID_FILE_PATH'])

            # read configurations.
            collector.prepare_readers_writers()

        except ConfigurationError, e:
            log.error(e.msg)
            sys.exit(-1)

        log.info("daemon_conf.py settings (missing values are replaced by defaults):\n %s" %
                 pprint.pformat(collector.daemon_conf))

        log.info("conf.yaml settings:\n %s" %
                 pprint.pformat(collector.conf))

        collector.start()
def log_tail():
    file_path = os.path.join(conf_reader.read_daemon_conf()['LOGS_PATH'], 'pycollector.log')
    try:
        os.system("tail -42f %s" % file_path)
    except KeyboardInterrupt:
        sys.exit(0)
Exemple #6
0
            self.server.start()
            self.log.info('Web started.')
        except Exception, e:
            self.log.error("Cannot start server")
            self.log.error(traceback.format_exc())
            sys.exit(-1)

    def start(self):
        """Starts the collector"""
        self.start_pairs()
        if self.enable_server:
            self.start_server()
        self.log.info("Collector started.")

    def __str__(self):
        return str(self.__dict__)


if __name__ == '__main__':
    import conf_reader as cr
    import daemon_util as du
    du.set_logging()
    try:
        conf = cr.read_yaml_conf()
        daemon_conf = cr.read_daemon_conf()
    except ConfigurationError, e:
        print e.msg
        sys.exit(-1)

    Collector(conf=conf, daemon_conf=daemon_conf).start()