4848{% - endif % }
4949
5050{% - if cookiecutter .otlp_enabled == "True" % }
51+ from opentelemetry import metrics , trace
52+ from opentelemetry .exporter .otlp .proto .grpc ._log_exporter import OTLPLogExporter
53+ from opentelemetry .exporter .otlp .proto .grpc .metric_exporter import OTLPMetricExporter
5154from opentelemetry .exporter .otlp .proto .grpc .trace_exporter import OTLPSpanExporter
5255from opentelemetry .instrumentation .fastapi import FastAPIInstrumentor
5356from opentelemetry .sdk .resources import (DEPLOYMENT_ENVIRONMENT , SERVICE_NAME ,
5457 TELEMETRY_SDK_LANGUAGE , Resource )
5558from opentelemetry .sdk .trace import TracerProvider
5659from opentelemetry .sdk .trace .export import BatchSpanProcessor
57- from opentelemetry .trace import set_tracer_provider
60+ from opentelemetry .sdk .metrics .export import PeriodicExportingMetricReader
61+ from opentelemetry .sdk .metrics import MeterProvider
62+ from opentelemetry .sdk ._logs import LoggerProvider , LoggingHandler
63+ from opentelemetry .sdk ._logs .export import BatchLogRecordProcessor
5864
5965{% - if cookiecutter .enable_redis == "True" % }
6066from opentelemetry .instrumentation .redis import RedisInstrumentor
@@ -164,24 +170,44 @@ def setup_opentelemetry(app: FastAPI) -> None: # pragma: no cover
164170 if not settings .opentelemetry_endpoint :
165171 return
166172
167- tracer_provider = TracerProvider (
168- resource = Resource (
169- attributes = {
170- SERVICE_NAME : "{{cookiecutter.project_name}}" ,
171- TELEMETRY_SDK_LANGUAGE : "python" ,
172- DEPLOYMENT_ENVIRONMENT : settings .environment ,
173- }
174- )
173+ otlp_resource = Resource (
174+ attributes = {
175+ SERVICE_NAME : "{{cookiecutter.project_name}}" ,
176+ TELEMETRY_SDK_LANGUAGE : "python" ,
177+ DEPLOYMENT_ENVIRONMENT : settings .environment ,
178+ }
175179 )
176180
181+
182+ tracer_provider = TracerProvider (resource = otlp_resource )
183+
177184 tracer_provider .add_span_processor (
178185 BatchSpanProcessor (
179186 OTLPSpanExporter (
180187 endpoint = settings .opentelemetry_endpoint ,
181- insecure = True ,
182188 )
183189 )
184190 )
191+ trace .set_tracer_provider (tracer_provider = tracer_provider )
192+
193+ meter_provider = MeterProvider (
194+ resource = otlp_resource ,
195+ metric_readers = [
196+ (PeriodicExportingMetricReader (OTLPMetricExporter (endpoint = settings .opentelemetry_endpoint ))),
197+ ],
198+ )
199+ metrics .set_meter_provider (meter_provider )
200+
201+ logger_provider = LoggerProvider (resource = otlp_resource )
202+ logger_provider .add_log_record_processor (
203+ BatchLogRecordProcessor (OTLPLogExporter (endpoint = settings .opentelemetry_endpoint )),
204+ )
205+ logging .getLogger ().addHandler (
206+ LoggingHandler (
207+ level = logging .NOTSET ,
208+ logger_provider = logger_provider ,
209+ ),
210+ )
185211
186212 excluded_endpoints = [
187213 app .url_path_for ('health_check' ),
@@ -220,22 +246,13 @@ def setup_opentelemetry(app: FastAPI) -> None: # pragma: no cover
220246 tracer_provider = tracer_provider ,
221247 )
222248 {% - endif % }
223- {% - if cookiecutter .enable_loguru != "True" % }
224- LoggingInstrumentor ().instrument (
225- tracer_provider = tracer_provider ,
226- set_logging_format = True ,
227- log_level = logging .getLevelName (settings .log_level .value ),
228- )
229- {% - endif % }
230249 {% - if cookiecutter .enable_taskiq == "True" % }
231- TaskiqInstrumentor .instrument_broker (
250+ TaskiqInstrumentor () .instrument_broker (
232251 broker ,
233252 tracer_provider = tracer_provider ,
234253 )
235254 {% - endif % }
236255
237- set_tracer_provider (tracer_provider = tracer_provider )
238-
239256
240257def stop_opentelemetry (app : FastAPI ) - > None : # pragma: no cover
241258 """
@@ -259,6 +276,9 @@ def stop_opentelemetry(app: FastAPI) -> None: # pragma: no cover
259276 {% - if cookiecutter .enable_rmq == "True" % }
260277 AioPikaInstrumentor ().uninstrument ()
261278 {% - endif % }
279+ {% - if cookiecutter .enable_taskiq == "True" % }
280+ TaskiqInstrumentor ().uninstrument_broker (broker )
281+ {% - endif % }
262282
263283{% - endif % }
264284
0 commit comments