11import logging
22from logging import Logger
33
4+ # from azure.identity import ManagedIdentityCredential
5+ from azure .monitor .opentelemetry .exporter import AzureMonitorTraceExporter
6+ from fastapi import FastAPI
47from fastapp .core .config import settings
8+ from opentelemetry .instrumentation .fastapi import FastAPIInstrumentor
9+ from opentelemetry .sdk .resources import SERVICE_NAME , Resource
10+ from opentelemetry .sdk .trace import TracerProvider
11+ from opentelemetry .sdk .trace .export import BatchSpanProcessor
512
613
714def setup_logging (module ) -> Logger :
@@ -20,3 +27,20 @@ def setup_logging(module) -> Logger:
2027 )
2128 logger .addHandler (logger_stream_handler )
2229 return logger
30+
31+
32+ def setup_tracer (app : FastAPI ):
33+ """Setup tracer for Open Telemetry.
34+
35+ app (FastAPI): The app to be instrumented by Open Telemetry.
36+ RETURNS (None): Nothing is being returned.
37+ """
38+ if settings .APPLICATIONINSIGHTS_CONNECTION_STRING :
39+ # credential = ManagedIdentityCredential()
40+ exporter = AzureMonitorTraceExporter .from_connection_string (
41+ settings .APPLICATIONINSIGHTS_CONNECTION_STRING ,
42+ # credential=credential
43+ )
44+ tracer = TracerProvider (resource = Resource ({SERVICE_NAME : "api" }))
45+ tracer .add_span_processor (BatchSpanProcessor (exporter ))
46+ FastAPIInstrumentor .instrument_app (app , tracer_provider = tracer )
0 commit comments