Esempio n. 1
0
    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
Esempio n. 2
0
def main():
    sampler = always_on.AlwaysOnSampler()
    exporter = print_exporter.PrintExporter()
    #tracer = Tracer(sampler=sampler, exporter=exporter)
    je = JaegerExporter(service_name="pitoncito",
                        host_name='jaeger-server',
                        port=9411,
                        endpoint='/api/traces')
    tracer = Tracer(exporter=je, sampler=always_on.AlwaysOnSampler())

    with tracer.span(name='root'):
        tracer.add_attribute_to_current_span(attribute_key='miclave',
                                             attribute_value='mivalor')
        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()
Esempio n. 3
0
    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 = []
Esempio n. 4
0
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()
Esempio n. 5
0
    def _instance(self):
        sampler = always_on.AlwaysOnSampler()
        exporter = print_exporter.PrintExporter(
            transport=background_thread.BackgroundThreadTransport)
        # exporter = stackdriver_exporter.StackdriverExporter(project_id="")
        tracer_interceptor = server_interceptor.OpenCensusServerInterceptor(
            sampler, exporter)
        server = grpc.server(
            futures.ThreadPoolExecutor(max_workers=self.max_workers),
            interceptors=(tracer_interceptor, ))
        ouroboros_pb2_grpc.add_OuroborosServicer_to_server(
            OuroborosServicer(), server)
        server.add_insecure_port(f"{self.host}:{self.port}")

        return server
    def __init__(self,
                 app,
                 blacklist_paths=None,
                 sampler=None,
                 exporter=None,
                 propagator=None):
        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.app = app
        self.blacklist_paths = blacklist_paths
        self.sampler = sampler
        self.exporter = exporter
        self.propagator = propagator
        self.setup_trace()
Esempio n. 7
0
    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()
Esempio n. 8
0
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()
Esempio n. 9
0
#
#     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.samplers import always_on
from opencensus.trace.exporters import print_exporter
from opencensus.trace.propagation import google_cloud_format

DEFAULT_PYRAMID_TRACER_CONFIG = {
    'SAMPLER': always_on.AlwaysOnSampler(),
    'EXPORTER': print_exporter.PrintExporter(),
    'PROPAGATOR': google_cloud_format.GoogleCloudFormatPropagator()
}

DEFAULT_PYRAMID_TRACER_PARAMS = {
    # 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_TRACE',
                                              DEFAULT_PYRAMID_TRACER_CONFIG)