def trace_request(self, event, context): response = {} span_tags = {tags.SPAN_KIND: tags.SPAN_KIND_RPC_SERVER} with self.tracer.start_span('trace_request', tags=span_tags) as span: span.set_tag('aws_request_id', context.aws_request_id) requests_config.propagate = True requests_config.tracer = self.tracer auto_instrument() traced_session = requests.Session() #traced_post_response = traced_session.post("http://35.236.100.236:6000/echo") response = {} if event['method'].upper().decode('utf-8', 'ignore') == 'POST': resp = traced_session.post(event['url'], headers=event['headers'], data=event['body']) response['responseCode'] = resp.status_code response['elapsedTime'] = resp.elapsed.total_seconds() * 1000 elif event['method'].upper().decode( 'utf-8', 'ignore') == 'GET' or event['method'].decode( 'utf-8', 'ignore') == '': resp = traced_session.get(event['url'], headers=event['headers']) response['responseCode'] = resp.status_code response['elapsedTime'] = resp.elapsed.total_seconds() * 1000 else: response['error'] = True return response
def init_jaeger_tracer(context): global _tracer if _tracer: return _tracer endpoint = utils.get_tracing_url() service_name = os.getenv('SIGNALFX_SERVICE_NAME', context.function_name) access_token = utils.get_access_token() logger = logging.getLogger('signalfx-tracing') tracer_config = { 'sampler': { 'type': 'const', 'param': 1 }, 'propagation': 'b3', 'jaeger_endpoint': endpoint, 'logging': True, 'logger': logger, } if access_token: tracer_config['jaeger_user'] = '******' tracer_config['jaeger_password'] = access_token config = Config(config=tracer_config, service_name=service_name) tracer = config.new_tracer() _tracer = opentracing.tracer = tracer auto_instrument(_tracer) return tracer
def create_celery_tracer(): import opentracing tracer_proxy = TracerProxy() opentracing.tracer = tracer_proxy auto_instrument(tracer_proxy) from celery.signals import worker_process_init @worker_process_init.connect(weak=False) def create_global_tracer(*args, **kwargs): tracer = create_tracer(access_token=access_token, set_global=False) tracer_proxy.set_tracer(tracer)
auto_instrument(tracer_proxy) from celery.signals import worker_process_init @worker_process_init.connect(weak=False) def create_global_tracer(*args, **kwargs): tracer = create_tracer(access_token=access_token, set_global=False) tracer_proxy.set_tracer(tracer) if hasattr(sys, 'argv') and sys.argv[0].split( os.path.sep)[-1] == 'celery' and 'worker' in sys.argv: create_celery_tracer() else: try: auto_instrument( create_tracer(access_token=access_token, set_global=True)) except Exception: print(traceback.format_exc()) # Do not prevent existing sitecustomize module import. Done by # removing this module's package and attempting to import # sitecustomize module. # Removing references to this sitecustomize module # can trigger garbage collection and cause lookup failures in other modules. sys.modules['sfx_sitecustomize'] = sys.modules.pop('sitecustomize', None) sys.path.remove(os.path.abspath(os.path.dirname(__file__))) # Attempt to load any existing sitecustomize module = get_module('sitecustomize') if module is None: # reset to our own if no preexisting
import time import requests from signalfx_tracing import auto_instrument, create_tracer, trace import opentracing from opentracing.ext import tags tracer = create_tracer() auto_instrument(tracer) @trace def pythonrequests(): try: print(opentracing.tracer.active_span) with opentracing.tracer.active_span as span: span.set_tag(tags.SPAN_KIND, tags.SPAN_KIND_RPC_SERVER) requests.get('http://httpbin.org/get') except requests.exceptions.RequestException as err: print(err) for x in range (1,1000): pythonrequests() time.sleep(1)
def post_fork(server, worker): auto_instrument(create_tracer())