Exemple #1
0
    def run(self, accessor, opts):
        """Ask fake Graphite Web for points.

        See command.CommandBase.
        """
        # import here to make sure everything is setup.
        os.environ['DJANGO_SETTINGS_MODULE'] = 'graphite.settings'

        accessor.connect()

        from django.conf import settings as django_settings

        # Disable carbon link (enabled by default)
        django_settings.CARBONLINK_HOSTS = []
        # Make sure logging goes to stderr
        django_settings.LOG_FILE_INFO = '-'
        django_settings.LOG_FILE_EXCEPTION = '-'
        django_settings.LOG_FILE_CACHE = '-'
        django_settings.LOG_FILE_RENDERING = '-'

        from graphite import util as graphite_util
        from biggraphite.plugins import graphite

        settings = bg_utils.settings_from_confattr(opts, prefix='')
        metadata_cache = bg_utils.cache_from_settings(accessor, settings)
        metadata_cache.open()

        if opts.profile == "flamegraph":
            flamegraph.start_profile_thread(fd=open("./perf.log", "w"))

        finder = graphite.Finder(
            directories=[],
            accessor=accessor,
            metadata_cache=metadata_cache
        )

        time_start = graphite_util.timestamp(opts.time_start)
        time_end = graphite_util.timestamp(opts.time_end)
        output_csv = opts.output_csv

        results = finder.fetch(opts.patterns, time_start, time_end)
        for i, result in enumerate(results):
            # Change the output to match something that display_metrics
            # can work with.
            metric = _FakeMetric(result['path'])
            time_start, time_end, step = result['time_info']

            points = []
            for i, v in enumerate(result['values']):
                v = 0 if v is None else v
                points.append((time_start + step * i, v))

            result = (
                points,
                time_start,
                time_end,
                step
            )
            if not opts.no_output:
                self._display_metric(metric, result, output_csv)
Exemple #2
0
 def setUp(self):
     super(TestFinder, self).setUp()
     for metric_name in "a", "a.a", "a.b.c", "x.y":
         metric = bg_test_utils.make_metric(metric_name)
         self.accessor.create_metric(metric)
     self.finder = bg_graphite.Finder(accessor=self.accessor,
                                      metadata_cache=self.metadata_cache)
Exemple #3
0
 def setUp(self):
     super(TestReader, self).setUp()
     self.accessor.connect()
     self.accessor.create_metric(self._METRIC)
     self.accessor.insert_points(self._METRIC, self._POINTS)
     self.accessor.flush()
     self.finder = bg_graphite.Finder(
         accessor=self.accessor,
         metadata_cache=self.metadata_cache,
     )
     self.carbonlink = self.finder.carbonlink()
     self.reader = bg_graphite.Reader(self.accessor, self.metadata_cache,
                                      self.carbonlink, _METRIC_NAME)
Exemple #4
0
    def setUp(self):
        super(TestReader, self).setUp()
        self.accessor.connect()
        self.accessor.create_metric(self._METRIC)
        self.accessor.insert_points(self._METRIC, self._POINTS)
        self.accessor.flush()
        self.finder = bg_graphite.Finder(accessor=self.accessor,
                                         metadata_cache=self.metadata_cache)

        # Make sure that carbonlink is enabled.
        from django.conf import settings as django_settings

        django_settings.CARBONLINK_HOSTS = ["localhost:12345"]

        self.carbonlink = self.finder.carbonlink()
        self.reader = bg_graphite.Reader(self.accessor, self.metadata_cache,
                                         self.carbonlink, _METRIC_NAME)