diff --git a/src/spaceone/core/connector/space_connector.py b/src/spaceone/core/connector/space_connector.py index 03d0809..21bbeff 100644 --- a/src/spaceone/core/connector/space_connector.py +++ b/src/spaceone/core/connector/space_connector.py @@ -3,6 +3,8 @@ from typing import Any, List, Tuple from google.protobuf.json_format import MessageToDict from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator +from opentelemetry import trace +from opentelemetry.trace import SpanKind from spaceone.core.connector import BaseConnector from spaceone.core import pygrpc @@ -13,7 +15,7 @@ __all__ = ["SpaceConnector"] _LOGGER = logging.getLogger(__name__) - +_TRACER = trace.get_tracer(__name__) class SpaceConnector(BaseConnector): name = "SpaceConnector" @@ -46,7 +48,8 @@ def client(self) -> GRPCClient: return self._client def dispatch(self, method: str, params: dict = None, **kwargs) -> Any: - return self._call_api(method, params, **kwargs) + with _TRACER.start_as_current_span(method, kind=SpanKind.CLIENT): + return self._call_api(method, params, **kwargs) def _call_api( self, diff --git a/src/spaceone/core/service/__init__.py b/src/spaceone/core/service/__init__.py index e1f3ab0..ac458f9 100644 --- a/src/spaceone/core/service/__init__.py +++ b/src/spaceone/core/service/__init__.py @@ -6,7 +6,7 @@ from typing import Generator, Union, Literal, Any from opentelemetry import trace -from opentelemetry.trace import format_trace_id +from opentelemetry.trace import format_trace_id, SpanKind from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator from spaceone.core.base import CoreObject @@ -129,7 +129,9 @@ def wrapped_func(self, params: dict): _traceparent = self.metadata.get("traceparent") with _TRACER.start_as_current_span( - f"{self.resource}.{_verb}", context=_get_span_context(_traceparent) + f"{self.resource}.{_verb}", + context=_get_span_context(_traceparent), + kind=SpanKind.SERVER ) as span: self.current_span_context = span.get_span_context() trace_id = format_trace_id(self.current_span_context.trace_id)