diff --git a/ddtrace/contrib/internal/mcp/patch.py b/ddtrace/contrib/internal/mcp/patch.py index c649b4bd4b5..e2e2e48cbb3 100644 --- a/ddtrace/contrib/internal/mcp/patch.py +++ b/ddtrace/contrib/internal/mcp/patch.py @@ -1,4 +1,3 @@ -import os import sys from typing import TYPE_CHECKING from typing import Optional @@ -17,6 +16,7 @@ from ddtrace.contrib.trace_utils import unwrap from ddtrace.contrib.trace_utils import wrap from ddtrace.internal.logger import get_logger +from ddtrace.internal.settings import env from ddtrace.internal.utils.formats import asbool from ddtrace.llmobs._integrations.mcp import CLIENT_TOOL_CALL_OPERATION_NAME from ddtrace.llmobs._integrations.mcp import SERVER_REQUEST_OPERATION_NAME @@ -32,8 +32,8 @@ config._add( "mcp", { - "distributed_tracing": asbool(os.getenv("DD_MCP_DISTRIBUTED_TRACING", default=True)), - "capture_intent": asbool(os.getenv("DD_MCP_CAPTURE_INTENT", default=False)), + "distributed_tracing": asbool(env.get("DD_MCP_DISTRIBUTED_TRACING", default=True)), + "capture_intent": asbool(env.get("DD_MCP_CAPTURE_INTENT", default=False)), }, ) diff --git a/ddtrace/contrib/internal/ray/patch.py b/ddtrace/contrib/internal/ray/patch.py index 84d50acad61..745dedcb854 100644 --- a/ddtrace/contrib/internal/ray/patch.py +++ b/ddtrace/contrib/internal/ray/patch.py @@ -18,6 +18,7 @@ from ddtrace.internal.logger import get_logger from ddtrace.internal.module import ModuleWatchdog from ddtrace.internal.schema import schematize_service_name +from ddtrace.internal.settings import env from ddtrace.internal.telemetry import get_config as _get_config from ddtrace.internal.utils import get_argument_value from ddtrace.internal.utils.formats import asbool @@ -64,7 +65,7 @@ log = get_logger(__name__) -RAY_SERVICE_NAME = os.environ.get(RAY_JOB_NAME) +RAY_SERVICE_NAME = env.get(RAY_JOB_NAME) # Ray modules that should be excluded from tracing RAY_COMMON_MODULE_DENYLIST = { @@ -84,8 +85,8 @@ "ray", dict( _default_service=schematize_service_name("ray"), - use_entrypoint_as_service_name=asbool(os.getenv("DD_TRACE_RAY_USE_ENTRYPOINT_AS_SERVICE_NAME", default=False)), - redact_entrypoint_paths=asbool(os.getenv("DD_TRACE_RAY_REDACT_ENTRYPOINT_PATHS", default=True)), + use_entrypoint_as_service_name=asbool(env.get("DD_TRACE_RAY_USE_ENTRYPOINT_AS_SERVICE_NAME", default=False)), + redact_entrypoint_paths=asbool(env.get("DD_TRACE_RAY_REDACT_ENTRYPOINT_PATHS", default=True)), trace_core_api=_get_config("DD_TRACE_RAY_CORE_API", default=False, modifier=asbool), trace_args_kwargs=_get_config("DD_TRACE_RAY_ARGS_KWARGS", default=False, modifier=asbool), ), @@ -397,12 +398,12 @@ async def _traced_run_method(self: Any, *args: Any, _dd_ray_trace_ctx=None, **kw from ddtrace.ext import SpanTypes context = _TraceContext._extract(_dd_ray_trace_ctx) if _dd_ray_trace_ctx else None - submission_id = os.environ.get(RAY_SUBMISSION_ID) + submission_id = env.get(RAY_SUBMISSION_ID) with long_running_ray_span( "actor_method.execute", resource=f"{self.__class__.__name__}.{method.__name__}", - service=os.environ.get(RAY_JOB_NAME, DEFAULT_JOB_NAME), + service=env.get(RAY_JOB_NAME, DEFAULT_JOB_NAME), span_type=SpanTypes.RAY, child_of=context, activate=True, @@ -440,7 +441,7 @@ def _traced_exec_entrypoint_method(self: Any, *args: Any, _dd_ray_trace_ctx=None with tracer.trace( "exec entrypoint", resource=f"exec {entrypoint_name}", - service=os.environ.get(RAY_JOB_NAME, DEFAULT_JOB_NAME), + service=env.get(RAY_JOB_NAME, DEFAULT_JOB_NAME), span_type=SpanTypes.RAY, ) as span: span._set_attribute(SPAN_KIND, SpanKind.CONSUMER) diff --git a/ddtrace/contrib/internal/ray/utils.py b/ddtrace/contrib/internal/ray/utils.py index e8da3d9db79..51ec1e04c73 100644 --- a/ddtrace/contrib/internal/ray/utils.py +++ b/ddtrace/contrib/internal/ray/utils.py @@ -21,6 +21,7 @@ from ddtrace.constants import _FILTER_KEPT_KEY from ddtrace.constants import _SAMPLING_PRIORITY_KEY from ddtrace.constants import _SPAN_MEASURED_KEY +from ddtrace.internal.settings import env from ddtrace.propagation.http import _TraceContext from .constants import DD_RAY_TRACE_CTX @@ -69,16 +70,16 @@ def _inject_context_in_kwargs(context: Context, kwargs: dict[str, Any]) -> None: def _inject_context_in_env(context: Context) -> None: headers = {} _TraceContext._inject(context, headers) - os.environ["traceparent"] = headers.get("traceparent", "") - os.environ["tracestate"] = headers.get("tracestate", "") + env["traceparent"] = headers.get("traceparent", "") + env["tracestate"] = headers.get("tracestate", "") def _extract_tracing_context_from_env() -> Optional[Context]: - if os.environ.get("traceparent") is not None and os.environ.get("tracestate") is not None: + if env.get("traceparent") is not None and env.get("tracestate") is not None: return _TraceContext._extract( { - "traceparent": os.environ.get("traceparent"), - "tracestate": os.environ.get("tracestate"), + "traceparent": env.get("traceparent"), + "tracestate": env.get("tracestate"), } ) return None @@ -93,7 +94,7 @@ def _inject_ray_span_tags_and_metrics(span: Span) -> None: span._set_attribute(_SPAN_MEASURED_KEY, 1) span._set_attribute(_SAMPLING_PRIORITY_KEY, 2) - submission_id = os.environ.get(RAY_SUBMISSION_ID) + submission_id = env.get(RAY_SUBMISSION_ID) if submission_id is not None: span._set_attribute(RAY_SUBMISSION_ID_TAG, submission_id)