from flask import Flask, redirect, request from jaeger_client import Config from flask_opentracing import FlaskTracer #, FlaskTracing import opentracing import requests import traceback import os # A very boring and basic hip-hop-service to demonstrate # observability via tracing. service = os.environ.get('HIPHOP', 'hiphop') tier = int(os.environ.get('TIER', '1')) app = Flask(__name__) config = Config(config = { 'sampler': { 'type': 'const', 'param': 1 }, 'logging': True, 'reporter_batch_size': 1 }, service_name=service) #tracer = config.initialize_tracer() tracer = FlaskTracer(config.initialize_tracer(), True, app) #tracing = FlaskTracing(tracer, True, app) @app.route('/') def index(): return redirect('/hip') @app.route('/hip') def hip(): print(request.headers) r = "" try: parent_span = tracer.get_span(request) with opentracing.tracer.start_span(f"{service}-{tier + 1}", child_of=parent_span) as span: url = f"http://{service}-{tier + 1}" span.set_tag("http.url", url) r = requests.get(url) span.set_tag("http.status_code", r.status_code) print(r) r = r.content.decode('utf-8') except Exception as ex: print(ex) traceback.print_exc() r = "END" return f"hop-{ tier } -> { r }" app.run(host="0.0.0.0", port=80)