mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-29 13:12:39 +08:00
@ -15,6 +15,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
([#1055](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1055))
|
([#1055](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1055))
|
||||||
- Refactoring custom header collection API for consistency
|
- Refactoring custom header collection API for consistency
|
||||||
([#1064](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1064))
|
([#1064](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1064))
|
||||||
|
- `opentelemetry-instrumentation-sqlalchemy` will correctly report `otel.library.name`
|
||||||
|
([#1086](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1086))
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
- `opentelemetry-instrument` and `opentelemetry-bootstrap` now include a `--version` flag
|
- `opentelemetry-instrument` and `opentelemetry-bootstrap` now include a `--version` flag
|
||||||
|
@ -104,7 +104,7 @@ class SQLAlchemyInstrumentor(BaseInstrumentor):
|
|||||||
|
|
||||||
if kwargs.get("engine") is not None:
|
if kwargs.get("engine") is not None:
|
||||||
return EngineTracer(
|
return EngineTracer(
|
||||||
_get_tracer(kwargs.get("engine"), tracer_provider),
|
_get_tracer(tracer_provider),
|
||||||
kwargs.get("engine"),
|
kwargs.get("engine"),
|
||||||
kwargs.get("enable_commenter", False),
|
kwargs.get("enable_commenter", False),
|
||||||
)
|
)
|
||||||
|
@ -16,6 +16,9 @@ import os
|
|||||||
from sqlalchemy.event import listen # pylint: disable=no-name-in-module
|
from sqlalchemy.event import listen # pylint: disable=no-name-in-module
|
||||||
|
|
||||||
from opentelemetry import trace
|
from opentelemetry import trace
|
||||||
|
from opentelemetry.instrumentation.sqlalchemy.package import (
|
||||||
|
_instrumenting_module_name,
|
||||||
|
)
|
||||||
from opentelemetry.instrumentation.sqlalchemy.version import __version__
|
from opentelemetry.instrumentation.sqlalchemy.version import __version__
|
||||||
from opentelemetry.instrumentation.utils import (
|
from opentelemetry.instrumentation.utils import (
|
||||||
_generate_opentelemetry_traceparent,
|
_generate_opentelemetry_traceparent,
|
||||||
@ -40,9 +43,9 @@ def _normalize_vendor(vendor):
|
|||||||
return vendor
|
return vendor
|
||||||
|
|
||||||
|
|
||||||
def _get_tracer(engine, tracer_provider=None):
|
def _get_tracer(tracer_provider=None):
|
||||||
return trace.get_tracer(
|
return trace.get_tracer(
|
||||||
_normalize_vendor(engine.name),
|
_instrumenting_module_name,
|
||||||
__version__,
|
__version__,
|
||||||
tracer_provider=tracer_provider,
|
tracer_provider=tracer_provider,
|
||||||
)
|
)
|
||||||
@ -55,7 +58,7 @@ def _wrap_create_async_engine(tracer_provider=None):
|
|||||||
object that will listen to SQLAlchemy events.
|
object that will listen to SQLAlchemy events.
|
||||||
"""
|
"""
|
||||||
engine = func(*args, **kwargs)
|
engine = func(*args, **kwargs)
|
||||||
EngineTracer(_get_tracer(engine, tracer_provider), engine.sync_engine)
|
EngineTracer(_get_tracer(tracer_provider), engine.sync_engine)
|
||||||
return engine
|
return engine
|
||||||
|
|
||||||
return _wrap_create_async_engine_internal
|
return _wrap_create_async_engine_internal
|
||||||
@ -68,7 +71,7 @@ def _wrap_create_engine(tracer_provider=None):
|
|||||||
object that will listen to SQLAlchemy events.
|
object that will listen to SQLAlchemy events.
|
||||||
"""
|
"""
|
||||||
engine = func(*args, **kwargs)
|
engine = func(*args, **kwargs)
|
||||||
EngineTracer(_get_tracer(engine, tracer_provider), engine)
|
EngineTracer(_get_tracer(tracer_provider), engine)
|
||||||
return engine
|
return engine
|
||||||
|
|
||||||
return _wrap_create_engine_internal
|
return _wrap_create_engine_internal
|
||||||
|
@ -12,5 +12,6 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
_instrumenting_module_name = "opentelemetry.instrumentation.sqlalchemy"
|
||||||
|
|
||||||
_instruments = ("sqlalchemy",)
|
_instruments = ("sqlalchemy",)
|
||||||
|
@ -70,6 +70,10 @@ class TestSqlalchemyInstrumentation(TestBase):
|
|||||||
self.assertEqual(len(spans), 1)
|
self.assertEqual(len(spans), 1)
|
||||||
self.assertEqual(spans[0].name, "SELECT :memory:")
|
self.assertEqual(spans[0].name, "SELECT :memory:")
|
||||||
self.assertEqual(spans[0].kind, trace.SpanKind.CLIENT)
|
self.assertEqual(spans[0].kind, trace.SpanKind.CLIENT)
|
||||||
|
self.assertEqual(
|
||||||
|
spans[0].instrumentation_scope.name,
|
||||||
|
"opentelemetry.instrumentation.sqlalchemy",
|
||||||
|
)
|
||||||
|
|
||||||
asyncio.get_event_loop().run_until_complete(run())
|
asyncio.get_event_loop().run_until_complete(run())
|
||||||
|
|
||||||
@ -104,6 +108,10 @@ class TestSqlalchemyInstrumentation(TestBase):
|
|||||||
self.assertEqual(len(spans), 1)
|
self.assertEqual(len(spans), 1)
|
||||||
self.assertEqual(spans[0].name, "SELECT :memory:")
|
self.assertEqual(spans[0].name, "SELECT :memory:")
|
||||||
self.assertEqual(spans[0].kind, trace.SpanKind.CLIENT)
|
self.assertEqual(spans[0].kind, trace.SpanKind.CLIENT)
|
||||||
|
self.assertEqual(
|
||||||
|
spans[0].instrumentation_scope.name,
|
||||||
|
"opentelemetry.instrumentation.sqlalchemy",
|
||||||
|
)
|
||||||
|
|
||||||
def test_custom_tracer_provider(self):
|
def test_custom_tracer_provider(self):
|
||||||
provider = TracerProvider(
|
provider = TracerProvider(
|
||||||
@ -154,6 +162,10 @@ class TestSqlalchemyInstrumentation(TestBase):
|
|||||||
self.assertEqual(len(spans), 1)
|
self.assertEqual(len(spans), 1)
|
||||||
self.assertEqual(spans[0].name, "SELECT :memory:")
|
self.assertEqual(spans[0].name, "SELECT :memory:")
|
||||||
self.assertEqual(spans[0].kind, trace.SpanKind.CLIENT)
|
self.assertEqual(spans[0].kind, trace.SpanKind.CLIENT)
|
||||||
|
self.assertEqual(
|
||||||
|
spans[0].instrumentation_scope.name,
|
||||||
|
"opentelemetry.instrumentation.sqlalchemy",
|
||||||
|
)
|
||||||
|
|
||||||
asyncio.get_event_loop().run_until_complete(run())
|
asyncio.get_event_loop().run_until_complete(run())
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user