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}")
def test_constructor(self): pyramid_trace_header = 'X-Cloud-Trace-Context' trace_id = '2dd43a1d6b2549c6bc2a1a54c2fc0b05' span_id = '6e0c63257de34c92' pyramid_trace_id = '{}/{}'.format(trace_id, span_id) response = Response() def dummy_handler(request): return response mock_registry = mock.Mock(spec=Registry) mock_registry.settings = {} mock_registry.settings['OPENCENSUS_TRACE'] = { 'EXPORTER': print_exporter.PrintExporter() } middleware = pyramid_middleware.OpenCensusTweenFactory( dummy_handler, mock_registry, ) assert isinstance(middleware.sampler, always_on.AlwaysOnSampler) assert isinstance(middleware.exporter, print_exporter.PrintExporter) assert isinstance(middleware.propagator, google_cloud_format.GoogleCloudFormatPropagator) # Just a smoke test to make sure things work request = DummyRequest( registry=mock_registry, path='/', headers={pyramid_trace_header: pyramid_trace_id}, ) assert middleware(request) == response
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)
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()
def run_app(): settings = { 'OPENCENSUS': { 'TRACE': { 'EXPORTER': print_exporter.PrintExporter(), 'SAMPLER': probability.ProbabilitySampler(rate=1), } } } app = main({}, **settings) server = make_server('localhost', 8080, app) server.serve_forever()
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
def run_app(): settings = {} exporter = print_exporter.PrintExporter() sampler = probability.ProbabilitySampler(rate=1) settings['OPENCENSUS_TRACE'] = { 'EXPORTER': exporter, 'SAMPLER': sampler, } app = main({}, **settings) server = make_server('localhost', 8080, app) server.serve_forever()
def __init__(self, exporter=None, span_context=None): if exporter is None: exporter = print_exporter.PrintExporter() if span_context is None: span_context = SpanContext() self.exporter = exporter self.span_context = span_context self.trace_id = span_context.trace_id self.root_span_id = span_context.span_id # List of spans to report self._spans_list = []
def initialize_tracer(request: 'flask.Request') -> tracer.Tracer: if TRACE_PROPAGATE == "google": propagator = google_cloud_format.GoogleCloudFormatPropagator() else: propagator = trace_context_http_header_format.TraceContextPropagator() if TRACE_EXPORTER == "stackdriver": exporter = trace_exporter.StackdriverExporter(transport=AsyncTransport) sampler = samplers.AlwaysOnSampler() elif TRACE_EXPORTER == "log": exporter = logging_exporter.LoggingExporter( handler=py_logging.NullHandler(), transport=AsyncTransport) sampler = samplers.AlwaysOnSampler() elif TRACE_EXPORTER == "stdout": exporter = print_exporter.PrintExporter(transport=AsyncTransport) sampler = samplers.AlwaysOnSampler() else: exporter = print_exporter.PrintExporter(transport=AsyncTransport) sampler = samplers.AlwaysOffSampler() span_context = propagator.from_headers(request.headers) return tracer.Tracer(exporter=exporter, sampler=sampler, propagator=propagator, span_context=span_context)
def __init__( self, app: ASGIApp, excludelist_paths=None, excludelist_hostnames=None, sampler=None, exporter=None, propagator=None, ) -> None: super().__init__(app) self.app = app self.excludelist_paths = excludelist_paths self.excludelist_hostnames = excludelist_hostnames self.sampler = sampler or samplers.AlwaysOnSampler() self.exporter = exporter or print_exporter.PrintExporter() self.propagator = ( propagator or trace_context_http_header_format.TraceContextPropagator())
def test_invoke_method_with_tracer(self): tracer = Tracer(sampler=samplers.AlwaysOnSampler(), exporter=print_exporter.PrintExporter()) self.client = DaprClient(headers_callback=lambda: tracer.propagator. to_headers(tracer.span_context)) self.server.set_response(b"FOO") with tracer.span(name="test"): req = common_v1.StateItem(key='test') resp = self.client.invoke_method( self.app_id, self.method_name, http_verb='PUT', data=req, ) request_headers = self.server.get_request_headers() self.assertIn('Traceparent', request_headers) self.assertEqual(b'FOO', resp.data)
def test_constructor(self): pyramid_trace_header = 'traceparent' trace_id = '2dd43a1d6b2549c6bc2a1a54c2fc0b05' span_id = '6e0c63257de34c92' pyramid_trace_id = '00-{}-{}-00'.format(trace_id, span_id) response = Response() def dummy_handler(request): return response mock_registry = mock.Mock(spec=Registry) mock_registry.settings = { 'OPENCENSUS': { 'TRACE': { 'EXPORTER': print_exporter.PrintExporter(), } } } middleware = pyramid_middleware.OpenCensusTweenFactory( dummy_handler, mock_registry, ) assert isinstance(middleware.sampler, samplers.AlwaysOnSampler) assert isinstance( middleware.exporter, print_exporter.PrintExporter) assert isinstance( middleware.propagator, trace_context_http_header_format.TraceContextPropagator) # Just a smoke test to make sure things work request = DummyRequest( registry=mock_registry, path='/', headers={pyramid_trace_header: pyramid_trace_id}, ) assert middleware(request) == response
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)
def main(): sampler = always_on.AlwaysOnSampler() exporter = print_exporter.PrintExporter() tracer = Tracer(sampler=sampler, exporter=exporter) with tracer.span(name='root'): tracer.add_attribute_to_current_span( attribute_key='example key', attribute_value='example value') function_to_trace() with tracer.span(name='child'): function_to_trace() # Get the current tracer tracer = execution_context.get_opencensus_tracer() # Explicitly create spans tracer.start_span() # Get current span execution_context.get_current_span() # Explicitly end span tracer.end_span()
def __init__(self, span_context=None, sampler=None, exporter=None, propagator=None): if span_context is None: span_context = SpanContext() if sampler is None: sampler = always_on.AlwaysOnSampler() if exporter is None: exporter = print_exporter.PrintExporter() if propagator is None: propagator = google_cloud_format.GoogleCloudFormatPropagator() self.span_context = span_context self.sampler = sampler self.exporter = exporter self.propagator = propagator self.tracer = self.get_tracer() self.store_tracer()
def __init__(self, span_context=None, sampler=None, exporter=None, propagator=None): if span_context is None: span_context = SpanContext() if sampler is None: sampler = samplers.ProbabilitySampler() if exporter is None: exporter = print_exporter.PrintExporter() if propagator is None: propagator = \ trace_context_http_header_format.TraceContextPropagator() self.span_context = span_context self.sampler = sampler self.exporter = exporter self.propagator = propagator self.tracer = self.get_tracer() self.store_tracer()
def __init__(self, **kwargs): super().__init__(**kwargs) self.sampler = ProbabilitySampler(1) self.exporter = print_exporter.PrintExporter() self.propagator = TraceContextPropagator()
# You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from opencensus.trace import print_exporter, samplers from opencensus.trace.propagation import trace_context_http_header_format DEFAULT_PYRAMID_TRACER_CONFIG = { 'SAMPLER': samplers.AlwaysOnSampler(), 'EXPORTER': print_exporter.PrintExporter(), 'PROPAGATOR': trace_context_http_header_format.TraceContextPropagator(), # https://cloud.google.com/appengine/docs/flexible/python/ # how-instances-are-managed#health_checking 'BLACKLIST_PATHS': ['_ah/health'], } class PyramidTraceSettings(object): def __init__(self, registry): self.settings = registry.settings.get('OPENCENSUS', {}) self.settings = self.settings.get('TRACE', DEFAULT_PYRAMID_TRACER_CONFIG) _set_default_configs(self.settings, DEFAULT_PYRAMID_TRACER_CONFIG)