Initial OpenTelemetry implementation

This commit is contained in:
João Silva
2023-11-23 00:10:20 +00:00
parent 0a2502f77e
commit 543a5fdf49

34
main.py
View File

@@ -8,6 +8,12 @@ from controllers import (
stravaController,
)
from datetime import datetime, timedelta
from opentelemetry import trace
from opentelemetry.exporter.jaeger.thrift import JaegerExporter
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
import logging
app = FastAPI()
@@ -23,6 +29,20 @@ file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
# Configure Jaeger Exporter
jaeger_exporter = JaegerExporter(
agent_host_name="192.168.2.80", # Update with your Jaeger host
agent_port=6831, # Update with your Jaeger port
)
# Create a TracerProvider with Jaeger exporter
tracer_provider = TracerProvider(resource=Resource.create({"service.name": "gearguardian-api"}))
trace.set_tracer_provider(tracer_provider)
tracer_provider.add_span_processor(SimpleSpanProcessor(jaeger_exporter))
# Instrument FastAPI app
FastAPIInstrumentor.instrument_app(app, tracer_provider=tracer_provider)
# Router files
app.include_router(sessionController.router)
app.include_router(userController.router)
@@ -47,9 +67,19 @@ scheduler.add_job(
@app.on_event("startup")
async def startup_event():
print("Backend started!")
# Get the tracer
tracer = trace.get_tracer(__name__)
# Start a span for the startup event
with tracer.start_as_current_span("startup_event"):
print("Backend started!")
# Add the background scheduler to the app's shutdown event
@app.on_event("shutdown")
async def shutdown_event():
scheduler.shutdown()
# Get the tracer
tracer = trace.get_tracer(__name__)
# Start a span for the startup event
with tracer.start_as_current_span("shutdown_event"):
scheduler.shutdown()