Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ dependencies = [
"httpx>=0.28.1",
"Jinja2>=3.1.4",
"openai>=1.61.1",
"opentelemetry-sdk>=1.38.0",
"pillow>=11.0.0",
"py-machineid>=0.7.0",
"pydantic-settings>=2.9.1",
Expand Down Expand Up @@ -223,7 +224,6 @@ bedrock = [
otel = [
"prometheus-fastapi-instrumentator>=7.1.0",
"opentelemetry-api>=1.38.0",
"opentelemetry-sdk>=1.38.0",
"opentelemetry-instrumentation-fastapi>=0.59b0",
"opentelemetry-exporter-otlp-proto-http>=1.38.0",
"opentelemetry-instrumentation-httpx>=0.59b0",
Expand Down
20 changes: 16 additions & 4 deletions src/askui/telemetry/otel.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
from fastapi import FastAPI
from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor
from opentelemetry.instrumentation.sqlalchemy import SQLAlchemyInstrumentor
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
Expand Down Expand Up @@ -51,6 +47,22 @@ def setup_opentelemetry_tracing(app: FastAPI, settings: OtelSettings) -> None:
None

"""
try:
from opentelemetry.exporter.otlp.proto.http.trace_exporter import ( # type: ignore[import-not-found]
OTLPSpanExporter,
)
from opentelemetry.instrumentation.fastapi import ( # type: ignore[import-not-found]
FastAPIInstrumentor,
)
from opentelemetry.instrumentation.httpx import ( # type: ignore[import-not-found]
HTTPXClientInstrumentor,
)
from opentelemetry.instrumentation.sqlalchemy import ( # type: ignore[import-not-found]
SQLAlchemyInstrumentor,
)
except ImportError:
return

resource = Resource.create(
{
"service.name": settings.service_name,
Expand Down
Loading