mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-27 03:34:10 +00:00
v0 - log proxy server exceptions on OTEL
This commit is contained in:
parent
6ffe5e75ba
commit
cb4bdee18d
1 changed files with 28 additions and 0 deletions
|
@ -9,10 +9,13 @@ from typing import Union, Optional, TYPE_CHECKING, Any
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from opentelemetry.trace import Span as _Span
|
from opentelemetry.trace import Span as _Span
|
||||||
|
from litellm.proxy.proxy_server import UserAPIKeyAuth as _UserAPIKeyAuth
|
||||||
|
|
||||||
Span = _Span
|
Span = _Span
|
||||||
|
UserAPIKeyAuth = _UserAPIKeyAuth
|
||||||
else:
|
else:
|
||||||
Span = Any
|
Span = Any
|
||||||
|
UserAPIKeyAuth = Any
|
||||||
|
|
||||||
|
|
||||||
LITELLM_TRACER_NAME = os.getenv("OTEL_TRACER_NAME", "litellm")
|
LITELLM_TRACER_NAME = os.getenv("OTEL_TRACER_NAME", "litellm")
|
||||||
|
@ -111,6 +114,31 @@ class OpenTelemetry(CustomLogger):
|
||||||
service_logging_span.set_status(Status(StatusCode.OK))
|
service_logging_span.set_status(Status(StatusCode.OK))
|
||||||
service_logging_span.end(end_time=self._to_ns(end_time))
|
service_logging_span.end(end_time=self._to_ns(end_time))
|
||||||
|
|
||||||
|
async def async_post_call_failure_hook(
|
||||||
|
self, original_exception: Exception, user_api_key_dict: UserAPIKeyAuth
|
||||||
|
):
|
||||||
|
from opentelemetry.trace import Status, StatusCode
|
||||||
|
from opentelemetry import trace
|
||||||
|
|
||||||
|
parent_otel_span = user_api_key_dict.parent_otel_span
|
||||||
|
if parent_otel_span is not None:
|
||||||
|
parent_otel_span.set_status(Status(StatusCode.ERROR))
|
||||||
|
_span_name = "Failed Proxy Server Request"
|
||||||
|
|
||||||
|
# Exception Logging Child Span
|
||||||
|
exception_logging_span = self.tracer.start_span(
|
||||||
|
name=_span_name,
|
||||||
|
context=trace.set_span_in_context(parent_otel_span),
|
||||||
|
)
|
||||||
|
exception_logging_span.set_attribute(
|
||||||
|
key="exception", value=str(original_exception)
|
||||||
|
)
|
||||||
|
exception_logging_span.set_status(Status(StatusCode.ERROR))
|
||||||
|
exception_logging_span.end(end_time=self._to_ns(datetime.now()))
|
||||||
|
|
||||||
|
# End Parent OTEL Sspan
|
||||||
|
parent_otel_span.end(end_time=self._to_ns(datetime.now()))
|
||||||
|
|
||||||
def _handle_sucess(self, kwargs, response_obj, start_time, end_time):
|
def _handle_sucess(self, kwargs, response_obj, start_time, end_time):
|
||||||
from opentelemetry.trace import Status, StatusCode
|
from opentelemetry.trace import Status, StatusCode
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue