Exemple #1
0
    def __init__(self, settings):
        """Create a BigGraphiteDatabase."""
        try:
            super(BigGraphiteDatabase, self).__init__(settings)
        except TypeError:
            # For backward compatibility with 1.0.
            super(BigGraphiteDatabase, self).__init__()

        self._cache = None
        self._accessor = None
        self._tagdb = None
        self._settings = settings
        self._metricsToCreate = queue.Queue()
        self._sync_countdown = 0
        self._sync_every_n_writes = settings.get("BG_SYNC_EVERY_N_WRITES",
                                                 self._SYNC_EVERY_N_WRITES)
        self._creation_rate_limit = settings.get("BG_CREATION_RATE_LIMIT",
                                                 self._CREATION_RATE_LIMIT)

        # We want the metadata to be enabled when the file doesn't exists
        watcher = utils.FileWatcher(self._DISABLE_METADATA_FILENAME)
        self.metadata_switch = utils.FeatureSwitch(watcher, True)

        utils.start_admin(bg_settings.settings_from_confattr(settings))
        self.reactor.addSystemEventTrigger("before", "shutdown", self._flush)
        self.reactor.callInThread(self._createMetrics)
        self._lc = task.LoopingCall(self._background)
        self._lc.start(settings["CARBON_METRIC_INTERVAL"], now=False)
Exemple #2
0
    def __init__(self, settings):
        self._cache = None
        self._accessor = None
        self._settings = settings
        self._metricsToCreate = Queue.Queue()
        self._sync_countdown = 0

        utils.start_admin(utils.settings_from_confattr(settings))
        self.reactor.addSystemEventTrigger('before', 'shutdown', self._flush)
        self.reactor.callInThread(self._createMetrics)
        self._lc = task.LoopingCall(self._background)
        self._lc.start(settings['CARBON_METRIC_INTERVAL'], now=False)
Exemple #3
0
    def run(self, accessor, opts):
        """Run the command."""
        # Import only here so that if the optional `gourde` dep
        # is missing we can still import the file.
        from biggraphite.cli.web import app

        # TODO: accessor.connect() could be called asynchronously later.
        accessor.connect()

        webapp = app.WebApp()
        utils.start_admin(settings.settings_from_args(opts))
        webapp.initialize_app(accessor, opts)
        if not opts.dry_run:
            webapp.run()
Exemple #4
0
    def __init__(self, settings):
        """Create a BigGraphiteDatabase."""
        try:
            super(BigGraphiteDatabase, self).__init__(settings)
        except TypeError:
            # For backward compatibility with 1.0.
            super(BigGraphiteDatabase, self).__init__()

        self._cache = None
        self._accessor = None
        self._tagdb = None
        self._settings = settings
        self._metricsToCreate = queue.Queue()
        self._sync_countdown = 0

        utils.start_admin(utils.settings_from_confattr(settings))
        self.reactor.addSystemEventTrigger('before', 'shutdown', self._flush)
        self.reactor.callInThread(self._createMetrics)
        self._lc = task.LoopingCall(self._background)
        self._lc.start(settings['CARBON_METRIC_INTERVAL'], now=False)
Exemple #5
0
    def __init__(self, settings):
        """Create a BigGraphiteDatabase."""
        try:
            super(BigGraphiteDatabase, self).__init__(settings)
        except TypeError:
            # For backward compatibility with 1.0.
            super(BigGraphiteDatabase, self).__init__()

        self._cache = None
        self._accessor = None
        self._tagdb = None
        self._settings = settings
        self._metricsToCreate = queue.Queue()
        self._sync_countdown = 0
        self._sync_every_n_writes = settings.get("BG_SYNC_EVERY_N_WRITES",
                                                 self._SYNC_EVERY_N_WRITES)

        utils.start_admin(bg_settings.settings_from_confattr(settings))
        self.reactor.addSystemEventTrigger("before", "shutdown", self._flush)
        self.reactor.callInThread(self._createMetrics)
        self._lc = task.LoopingCall(self._background)
        self._lc.start(settings["CARBON_METRIC_INTERVAL"], now=False)
Exemple #6
0
    def run(self, accessor, opts):
        """Run clean and repair at a given frequency.

        See command.BaseCommand
        """
        workers = {
            "repair": {
                "name": "repair",
                "fn": lambda x: self._run_repair(x, accessor, opts),
                "output": collections.deque(maxlen=4096),
                "status": "",
                "thread": None
            },
            "clean": {
                "name": "clean",
                "fn": lambda x: self._run_clean(x, accessor, opts),
                "output": collections.deque(maxlen=4096),
                "status": "",
                "thread": None
            },
        }

        _init_logger(workers)
        accessor.connect()

        # start prometheus server
        utils.start_admin(utils.settings_from_args(opts))

        # Spawn workers
        for worker in workers.values():
            logging.info("starting %s worker" % worker["name"])
            th = threading.Thread(name=worker["name"],
                                  target=worker["fn"],
                                  args=(worker, ))
            th.daemon = True
            th.start()
            worker["thread"] = th

        _run_webserver(workers, accessor, opts)
Exemple #7
0
    def __init__(self, settings):
        """Create a BigGraphiteDatabase."""
        try:
            super(BigGraphiteDatabase, self).__init__(settings)
        except TypeError:
            # For backward compatibility with 1.0.
            super(BigGraphiteDatabase, self).__init__()

        self._cache = None
        self._accessor = None
        self._tagdb = None
        self._settings = settings
        self._metricsToCreate = queue.Queue()
        self._sync_countdown = 0
        self._sync_every_n_writes = settings.get(
            "BG_SYNC_EVERY_N_WRITES", self._SYNC_EVERY_N_WRITES
        )

        utils.start_admin(bg_settings.settings_from_confattr(settings))
        self.reactor.addSystemEventTrigger("before", "shutdown", self._flush)
        self.reactor.callInThread(self._createMetrics)
        self._lc = task.LoopingCall(self._background)
        self._lc.start(settings["CARBON_METRIC_INTERVAL"], now=False)