Skip to content

Commit 886ce6a

Browse files
committed
Add span for connection phase
1 parent 99a0283 commit 886ce6a

File tree

2 files changed

+17
-1
lines changed
  • instrumentation/opentelemetry-instrumentation-sqlalchemy/src/opentelemetry/instrumentation/sqlalchemy

2 files changed

+17
-1
lines changed

instrumentation/opentelemetry-instrumentation-sqlalchemy/src/opentelemetry/instrumentation/sqlalchemy/__init__.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
_get_tracer,
6464
_wrap_create_async_engine,
6565
_wrap_create_engine,
66+
_wrap_connect,
6667
)
6768
from opentelemetry.instrumentation.sqlalchemy.package import _instruments
6869
from opentelemetry.instrumentation.utils import unwrap
@@ -101,7 +102,11 @@ def _instrument(self, **kwargs):
101102
"create_async_engine",
102103
_wrap_create_async_engine(tracer_provider),
103104
)
104-
105+
_w(
106+
"sqlalchemy.engine.base",
107+
"Engine.connect",
108+
_wrap_connect(tracer_provider)
109+
)
105110
if kwargs.get("engine") is not None:
106111
return EngineTracer(
107112
_get_tracer(tracer_provider),

instrumentation/opentelemetry-instrumentation-sqlalchemy/src/opentelemetry/instrumentation/sqlalchemy/engine.py

+11
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,17 @@ def _wrap_create_engine_internal(func, module, args, kwargs):
7777
return _wrap_create_engine_internal
7878

7979

80+
def _wrap_connect(tracer_provider=None):
81+
def _wrap_connect_internal(func, module, args, kwargs):
82+
tracer = trace.get_tracer(
83+
module.name,
84+
__version__,
85+
tracer_provider=tracer_provider,
86+
)
87+
with tracer.start_as_current_span("database-connect") as span:
88+
return func(*args, **kwargs)
89+
return _wrap_connect_internal
90+
8091
class EngineTracer:
8192
def __init__(self, tracer, engine, enable_commenter=False):
8293
self.tracer = tracer

0 commit comments

Comments
 (0)