File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11from fastapi import FastAPI
22from fastapp .api .v1 .api_v1 import api_v1_router
33from fastapp .core .config import settings
4+ from fastapp .utils import setup_tracer
45
56
67def get_app () -> FastAPI :
@@ -24,7 +25,7 @@ def get_app() -> FastAPI:
2425@app .on_event ("startup" )
2526async def startup_event ():
2627 """Gracefully start the application before the server reports readiness."""
27- pass
28+ setup_tracer ( app = app )
2829
2930
3031@app .on_event ("shutdown" )
Original file line number Diff line number Diff line change 11import logging
22from logging import Logger
33
4+ from azure .monitor .opentelemetry .exporter import AzureMonitorTraceExporter
5+ from fastapi import FastAPI
46from fastapp .core .config import settings
7+ from opentelemetry .instrumentation .fastapi import FastAPIInstrumentor
8+ from opentelemetry .sdk .resources import SERVICE_NAME , Resource
9+ from opentelemetry .sdk .trace import TracerProvider
10+ from opentelemetry .sdk .trace .export import BatchSpanProcessor
511
612
713def setup_logging (module ) -> Logger :
@@ -20,3 +26,18 @@ def setup_logging(module) -> Logger:
2026 )
2127 logger .addHandler (logger_stream_handler )
2228 return logger
29+
30+
31+ def setup_tracer (app : FastAPI ):
32+ """Setup tracer for Open Telemetry.
33+
34+ app (FastAPI): The app to be instrumented by Open Telemetry.
35+ RETURNS (None): Nothing is being returned.
36+ """
37+ if settings .APPLICATIONINSIGHTS_CONNECTION_STRING :
38+ exporter = AzureMonitorTraceExporter .from_connection_string (
39+ settings .APPLICATIONINSIGHTS_CONNECTION_STRING
40+ )
41+ tracer = TracerProvider (resource = Resource ({SERVICE_NAME : "api" }))
42+ tracer .add_span_processor (BatchSpanProcessor (exporter ))
43+ FastAPIInstrumentor .instrument_app (app , tracer_provider = tracer )
Original file line number Diff line number Diff line change 55azure-functions ~= 1.14.0
66fastapi ~= 0.96.1
77aiohttp ~= 3.8.4
8+ opentelemetry-instrumentation-fastapi == 0.39b0
9+ azure-monitor-opentelemetry-exporter == 1.0.0b14
You can’t perform that action at this time.
0 commit comments