11import logging .config
22
3- from flask import Flask , request , redirect
3+ from flask import Flask
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+
714from .google_analytics import GoogleAnalytics
815
916#########
4047 'handlers' : ['wsgi' , 'file' ]
4148 }
4249})
50+
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+ tp = TracerProvider (
55+ resource = Resource .create ({telemetery_service_name_key : 'COHD' })
56+ )
57+ # create an exporter to jaeger
58+ jaeger_host = 'localhost'
59+ deployment_env = app .config .get ('DEPLOYMENT_ENV' , 'dev' )
60+ if deployment_env [:4 ] == 'ITRB' :
61+ jaeger_host = 'jaeger-otel-agent.sri'
62+ # jaeger_exporter = OTLPSpanExporter(endpoint=jaeger_host)
63+ jaeger_exporter = JaegerExporter (
64+ agent_host_name = jaeger_host ,
65+ agent_port = 6831 ,
66+ )
67+ # here we use the exporter to export each span in a trace
68+ tp .add_span_processor (
69+ BatchSpanProcessor (jaeger_exporter )
70+ )
71+ trace .set_tracer_provider (
72+ tp
73+ )
74+ otel_excluded_urls = 'health,api/health'
75+ tracer = trace .get_tracer (__name__ )
76+ FlaskInstrumentor ().instrument_app (app )
77+ logging .info ('Finished instrumenting app for OTEL' )
0 commit comments