feat - use traceparent to proporgate OTEL traces

This commit is contained in:
Ishaan Jaff 2024-06-11 13:57:31 -07:00
parent f0b38c5af6
commit 2d5904c9a5
2 changed files with 20 additions and 0 deletions

View file

@ -454,6 +454,23 @@ class OpenTelemetry(CustomLogger):
def _get_span_name(self, kwargs): def _get_span_name(self, kwargs):
return LITELLM_REQUEST_SPAN_NAME return LITELLM_REQUEST_SPAN_NAME
def get_traceparent_from_header(self, headers):
if headers is None:
return None
_traceparent = headers.get("traceparent", None)
if _traceparent is None:
return None
from opentelemetry.trace.propagation.tracecontext import (
TraceContextTextMapPropagator,
)
verbose_logger.debug("OpenTelemetry: GOT A TRACEPARENT {}".format(_traceparent))
propagator = TraceContextTextMapPropagator()
_parent_context = propagator.extract(carrier={"traceparent": _traceparent})
verbose_logger.debug("OpenTelemetry: PARENT CONTEXT {}".format(_parent_context))
return _parent_context
def _get_span_context(self, kwargs): def _get_span_context(self, kwargs):
from opentelemetry.trace.propagation.tracecontext import ( from opentelemetry.trace.propagation.tracecontext import (
TraceContextTextMapPropagator, TraceContextTextMapPropagator,

View file

@ -533,6 +533,9 @@ async def user_api_key_auth(
parent_otel_span = open_telemetry_logger.tracer.start_span( parent_otel_span = open_telemetry_logger.tracer.start_span(
name="Received Proxy Server Request", name="Received Proxy Server Request",
start_time=_to_ns(datetime.now()), start_time=_to_ns(datetime.now()),
context=open_telemetry_logger.get_traceparent_from_header(
headers=request.headers
),
) )
### USER-DEFINED AUTH FUNCTION ### ### USER-DEFINED AUTH FUNCTION ###
if user_custom_auth is not None: if user_custom_auth is not None: