def __init__(self, get_response=None):
        settings = getattr(django.conf.settings, 'OPENCENSUS', {})
        settings = settings.get('TRACE', {})

        self.sampler = (settings.get('SAMPLER', None)
                        or samplers.ProbabilitySampler())
        if isinstance(self.sampler, six.string_types):
            self.sampler = configuration.load(self.sampler)

        self.exporter = settings.get('EXPORTER', None) or \
            print_exporter.PrintExporter()
        if isinstance(self.exporter, six.string_types):
            self.exporter = configuration.load(self.exporter)

        self.propagator = settings.get('PROPAGATOR', None) or \
            trace_context_http_header_format.TraceContextPropagator()
        if isinstance(self.propagator, six.string_types):
            self.propagator = configuration.load(self.propagator)

        self.excludelist_paths = settings.get(EXCLUDELIST_PATHS, None)

        self.excludelist_hostnames = settings.get(EXCLUDELIST_HOSTNAMES, None)

        if django.VERSION >= (2, ):  # pragma: NO COVER
            connection.execute_wrappers.append(_trace_db_call)

        super().__init__(get_response)
示例#2
0
    def init_app(self, app):
        self.app = app

        # get settings from app config
        settings = self.app.config.get('OPENCENSUS', {})
        settings = settings.get('TRACE', {})

        if self.sampler is None:
            self.sampler = (settings.get('SAMPLER', None)
                            or samplers.ProbabilitySampler())
            if isinstance(self.sampler, six.string_types):
                self.sampler = configuration.load(self.sampler)

        if self.exporter is None:
            self.exporter = settings.get('EXPORTER', None) or \
                print_exporter.PrintExporter()
            if isinstance(self.exporter, six.string_types):
                self.exporter = configuration.load(self.exporter)

        if self.propagator is None:
            self.propagator = settings.get('PROPAGATOR', None) or \
                trace_context_http_header_format.TraceContextPropagator()
            if isinstance(self.propagator, six.string_types):
                self.propagator = configuration.load(self.propagator)

        self.blacklist_paths = settings.get(BLACKLIST_PATHS,
                                            self.blacklist_paths)

        self.blacklist_hostnames = settings.get(BLACKLIST_HOSTNAMES, None)

        self.setup_trace()
示例#3
0
    def __init__(self, get_response=None):
        self.get_response = get_response
        settings = getattr(django.conf.settings, 'OPENCENSUS', {})
        settings = settings.get('TRACE', {})

        self.sampler = (settings.get('SAMPLER', None)
                        or samplers.ProbabilitySampler())
        if isinstance(self.sampler, six.string_types):
            self.sampler = configuration.load(self.sampler)

        self.exporter = settings.get('EXPORTER', None) or \
            print_exporter.PrintExporter()
        if isinstance(self.exporter, six.string_types):
            self.exporter = configuration.load(self.exporter)

        self.propagator = settings.get('PROPAGATOR', None) or \
            trace_context_http_header_format.TraceContextPropagator()
        if isinstance(self.propagator, six.string_types):
            self.propagator = configuration.load(self.propagator)

        self.blacklist_paths = settings.get(BLACKLIST_PATHS, None)

        self.blacklist_hostnames = settings.get(BLACKLIST_HOSTNAMES, None)
    
        self.explain_mode = settings.get('EXPLAIN', None)

        logger.debug(f"OpenCensus Exporter: {self.exporter}")
示例#4
0
    def load_config(self, settings):
        if settings.get('TRACE', {}):
            settings = settings.get('TRACE', {})

            self.sampler = (settings.get('SAMPLER', None) or self.sampler)
            if isinstance(self.sampler, six.string_types):
                self.sampler = configuration.load(self.sampler)

            self.exporter = settings.get('EXPORTER', None) or self.exporter
            if isinstance(self.exporter, six.string_types):
                self.exporter = configuration.load(self.exporter)

            self.propagator = settings.get('PROPAGATOR',
                                           None) or self.propagator
            if isinstance(self.propagator, six.string_types):
                self.propagator = configuration.load(self.propagator)
示例#5
0
def get_tracer_exporter():
    global _tracer_exporter

    if _tracer_exporter is None:
        settings_ = getattr(settings, 'OPENCENSUS', {})
        settings_ = settings_.get('TRACE', {})

        _tracer_exporter = settings_.get('EXPORTER', None) or \
            print_exporter.PrintExporter()
        if isinstance(_tracer_exporter, str):
            _tracer_exporter = configuration.load(_tracer_exporter)

    return _tracer_exporter
示例#6
0
def get_tracer_sampler():
    global _tracer_sampler

    if _tracer_sampler is None:
        settings_ = getattr(settings, 'OPENCENSUS', {})
        settings_ = settings_.get('TRACE', {})

        _tracer_sampler = settings_.get('SAMPLER', None) or \
            samplers.ProbabilitySampler()
        if isinstance(_tracer_sampler, str):
            _tracer_sampler = configuration.load(_tracer_sampler)

    return _tracer_sampler
示例#7
0
def get_tracer_propagator():
    global _tracer_propagator

    if _tracer_propagator is None:
        settings_ = getattr(settings, 'OPENCENSUS', {})
        settings_ = settings_.get('TRACE', {})

        _tracer_propagator = settings_.get('PROPAGATOR', None) or \
            trace_context_http_header_format.TraceContextPropagator()
        if isinstance(_tracer_propagator, str):
            _tracer_propagator = configuration.load(_tracer_propagator)

    return _tracer_propagator
示例#8
0
    def __init__(self, get_response=None):
        self.get_response = get_response
        settings = getattr(django.conf.settings, 'OPENCENSUS', {})
        settings = settings.get('TRACE', {})

        self.sampler = settings.get('SAMPLER', None) or \
            always_on.AlwaysOnSampler()
        if isinstance(self.sampler, six.string_types):
            self.sampler = configuration.load(self.sampler)

        self.exporter = settings.get('EXPORTER', None) or \
            print_exporter.PrintExporter()
        if isinstance(self.exporter, six.string_types):
            self.exporter = configuration.load(self.exporter)

        self.propagator = settings.get('PROPAGATOR', None) or \
            trace_context_http_header_format.TraceContextPropagator()
        if isinstance(self.propagator, six.string_types):
            self.propagator = configuration.load(self.propagator)

        self.blacklist_paths = settings.get(BLACKLIST_PATHS, None)

        self.blacklist_hostnames = settings.get(BLACKLIST_HOSTNAMES, None)
示例#9
0
 def test_load(self):
     ns = configuration.load(
         'opencensus.common.configuration.Namespace("foo")')
     self.assertEqual(ns.name, 'foo')
示例#10
0
 def test_load_syntax_error(self):
     with self.assertRaises(SyntaxError):
         configuration.load(')')
示例#11
0
 def test_load_name_error(self):
     with self.assertRaises(NameError):
         configuration.load('nonexist.foo()')
示例#12
0
 def test_load_import_error(self):
     with self.assertRaises(ImportError):
         configuration.load('opencensus.nonexist.foo()')
示例#13
0
        from django.core.management import execute_from_command_line
        import django
        import django.conf
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?") from exc

    # Get OpenCensus settings from settings.py
    SETTINGS = getattr(django.conf.settings, 'OPENCENSUS', {})
    SETTINGS = SETTINGS.get('TRACE', {})

    SAMPLER = (SETTINGS.get('SAMPLER', None) or ProbabilitySampler(rate=1.0))
    if isinstance(SAMPLER, six.string_types):
        SAMPLER = configuration.load(SAMPLER)

    EXPORTER = SETTINGS.get('EXPORTER', None) or PrintExporter()
    if isinstance(EXPORTER, six.string_types):
        EXPORTER = configuration.load(EXPORTER)

    TRACER = Tracer(
        exporter=EXPORTER,
        sampler=SAMPLER,
    )

    # Add tracing for PostgreSQL
    config_integration.trace_integrations(['postgresql'])

    # Configure logging from settings.py
    logging.config.dictConfig(getattr(django.conf.settings, 'LOGGING', {}))