Commit 35b630a3 authored by Nane Kratzke's avatar Nane Kratzke
Browse files

Distributed tracing?

parent 95d7a4c3
Pipeline #29749 passed with stages
in 43 seconds
from flask import Flask, redirect, request
import requests, os, logging, json
from elasticapm.contrib.flask import ElasticAPM
import elasticapm
from elasticapm.utils.disttracing import TraceParent
# A very boring and basic hip-hop-service to demonstrate
# observability via tracing across multiple services.
......@@ -10,7 +11,7 @@ logging.basicConfig(level=logging.INFO)
service = os.environ.get('HIPHOP', 'hiphop')
tier = int(os.environ.get('TIER', '1'))
app = Flask(__name__)
apm = ElasticAPM(app, service_name=service)
client = elasticapm.Client(service_name=service)
@app.route('/')
def index():
......@@ -19,6 +20,8 @@ def index():
@app.route('/hip')
def hip():
logging.info(f"Request from { request.remote_addr } with headers { json.dumps(dict(request.headers)) }")
trace_parent = TraceParent.from_headers(request.headers)
client.begin_transaction("main", trace_parent=trace_parent)
r = ""
url = f"http://{service}-{tier + 1}/hip"
try:
......@@ -28,6 +31,8 @@ def hip():
r = "END"
hip = "hip " if tier == 1 else ""
client.end_transaction()
return f"{hip} hop-{ tier } -> { r }".strip()
app.run(host="0.0.0.0", port=80)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment