44from flask_cors import CORS
55from flask_caching import Cache
66
7- from opentelemetry .instrumentation .flask import FlaskInstrumentor
8- from opentelemetry import trace
9- from opentelemetry .sdk .resources import SERVICE_NAME as telemetery_service_name_key , Resource
10- from opentelemetry .sdk .trace import TracerProvider
11- from opentelemetry .sdk .trace .export import BatchSpanProcessor
12- from opentelemetry .exporter .jaeger .thrift import JaegerExporter
13- from opentelemetry .instrumentation .requests import RequestsInstrumentor
14- from opentelemetry .instrumentation .pymysql import PyMySQLInstrumentor
7+ try :
8+ from opentelemetry .instrumentation .flask import FlaskInstrumentor
9+ from opentelemetry import trace
10+ from opentelemetry .sdk .resources import SERVICE_NAME as telemetery_service_name_key , Resource
11+ from opentelemetry .sdk .trace import TracerProvider
12+ from opentelemetry .sdk .trace .export import BatchSpanProcessor
13+ from opentelemetry .exporter .jaeger .thrift import JaegerExporter
14+ from opentelemetry .instrumentation .requests import RequestsInstrumentor
15+ from opentelemetry .instrumentation .pymysql import PyMySQLInstrumentor
16+ OTEL_ENABLED = True
17+ except ImportError :
18+ OTEL_ENABLED = False
1519
1620#########
1721# INITS #
4852 }
4953})
5054
51- logging .info ('About to instrument app for OTEL' )
52- # set the service name for our trace provider
53- # this will tag every trace with the service name given
54- otel_service_name = app .config .get ('OTEL_SERVICE_NAME' , 'COHD' )
55- tp = TracerProvider (
56- resource = Resource .create ({telemetery_service_name_key : otel_service_name })
57- )
58- # create an exporter to jaeger
59- jaeger_host = app .config .get ('JAEGER_HOST' , 'jaeger-otel-agent.sri' )
60- jaeger_port = app .config .get ('JAEGER_PORT' , 6831 )
61- deployment_env = app .config .get ('DEPLOYMENT_ENV' , 'dev' )
62- jaeger_exporter = JaegerExporter (
63- agent_host_name = jaeger_host ,
64- agent_port = jaeger_port ,
55+ if OTEL_ENABLED :
56+ logging .info ('About to instrument app for OTEL' )
57+ # set the service name for our trace provider
58+ # this will tag every trace with the service name given
59+ otel_service_name = app .config .get ('OTEL_SERVICE_NAME' , 'COHD' )
60+ tp = TracerProvider (
61+ resource = Resource .create ({telemetery_service_name_key : otel_service_name })
6562 )
66- # here we use the exporter to export each span in a trace
67- tp .add_span_processor (
68- BatchSpanProcessor (jaeger_exporter )
69- )
70- trace .set_tracer_provider (
71- tp
72- )
73- otel_excluded_urls = 'health,api/health,api/dev/.*'
74- tracer = trace .get_tracer (__name__ )
75- FlaskInstrumentor ().instrument_app (app ,
76- excluded_urls = otel_excluded_urls )
77- RequestsInstrumentor ().instrument ()
78- PyMySQLInstrumentor ().instrument ()
79- logging .info ('Finished instrumenting app for OTEL' )
63+ # create an exporter to jaeger
64+ jaeger_host = app .config .get ('JAEGER_HOST' , 'jaeger-otel-agent.sri' )
65+ jaeger_port = app .config .get ('JAEGER_PORT' , 6831 )
66+ deployment_env = app .config .get ('DEPLOYMENT_ENV' , 'dev' )
67+ jaeger_exporter = JaegerExporter (
68+ agent_host_name = jaeger_host ,
69+ agent_port = jaeger_port ,
70+ )
71+ # here we use the exporter to export each span in a trace
72+ tp .add_span_processor (
73+ BatchSpanProcessor (jaeger_exporter )
74+ )
75+ trace .set_tracer_provider (
76+ tp
77+ )
78+ otel_excluded_urls = 'health,api/health,api/dev/.*'
79+ tracer = trace .get_tracer (__name__ )
80+ FlaskInstrumentor ().instrument_app (app ,
81+ excluded_urls = otel_excluded_urls )
82+ RequestsInstrumentor ().instrument ()
83+ PyMySQLInstrumentor ().instrument ()
84+ logging .info ('Finished instrumenting app for OTEL' )
0 commit comments