-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp1.py
79 lines (60 loc) · 1.88 KB
/
app1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
__author__ = "Jay Modi"
import os
import requests
from flask import Flask
from flask_restful import Resource as REST_Resource, Api
from dotenv import load_dotenv
# opentelemetry
from opentelemetry import trace
from opentelemetry.trace.status import StatusCode
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
from opentelemetry.sdk.trace import TracerProvider
# flask and requests instrumentation
from opentelemetry.instrumentation.flask import FlaskInstrumentor
from opentelemetry.instrumentation.requests import RequestsInstrumentor
# exporters
from opentelemetry.sdk.trace.export import (
ConsoleSpanExporter,
SimpleSpanProcessor,
BatchSpanProcessor
)
from opentelemetry.exporter.jaeger.thrift import JaegerExporter
# propagator
from opentelemetry.propagate import set_global_textmap
from opentelemetry.propagators.b3 import B3Format
load_dotenv() # take environment variables from .env
# Set global propagator
set_global_textmap(B3Format())
# set trace provider as default one
trace.set_tracer_provider(
TracerProvider(
resource=Resource.create({SERVICE_NAME: "my-other-service"})
)
)
# jaeger exporter
jaeger_exporter = JaegerExporter(
agent_host_name="localhost",
agent_port=6831,
)
# add exporter to trace
trace.get_tracer_provider().add_span_processor(
BatchSpanProcessor(jaeger_exporter)
# SimpleSpanProcessor(ConsoleSpanExporter)
)
app = Flask(__name__)
api = Api(app)
FlaskInstrumentor().instrument_app(app)
RequestsInstrumentor().instrument()
class GetHelloWorld(REST_Resource):
def get(self):
tracer = trace.get_tracer(__name__)
world = None
with tracer.start_as_current_span("get-hello-request"):
world = "World!"
return {'hello': world}
api.add_resource(GetHelloWorld, '/get-hello')
if __name__ == "__main__":
app.run(
debug=os.getenv("DEBUG"),
port=3000
)