forked from phoenix/litellm-mirror
v0 log auth exceptions on DD
This commit is contained in:
parent
df0b9adc44
commit
d7033a3564
2 changed files with 58 additions and 14 deletions
|
@ -32,12 +32,14 @@ from litellm.llms.custom_httpx.http_handler import (
|
||||||
get_async_httpx_client,
|
get_async_httpx_client,
|
||||||
httpxSpecialProvider,
|
httpxSpecialProvider,
|
||||||
)
|
)
|
||||||
|
from litellm.proxy._types import UserAPIKeyAuth
|
||||||
from litellm.types.services import ServiceLoggerPayload
|
from litellm.types.services import ServiceLoggerPayload
|
||||||
|
|
||||||
from .types import DD_ERRORS, DatadogPayload, DataDogStatus
|
from .types import DD_ERRORS, DatadogPayload, DataDogStatus
|
||||||
from .utils import make_json_serializable
|
from .utils import make_json_serializable
|
||||||
|
|
||||||
DD_MAX_BATCH_SIZE = 1000 # max number of logs DD API can accept
|
DD_MAX_BATCH_SIZE = 1000 # max number of logs DD API can accept
|
||||||
|
DD_SOURCE_NAME = "litellm"
|
||||||
|
|
||||||
|
|
||||||
class DataDogLogger(CustomBatchLogger):
|
class DataDogLogger(CustomBatchLogger):
|
||||||
|
@ -382,3 +384,56 @@ class DataDogLogger(CustomBatchLogger):
|
||||||
No user has asked for this so far, this might be spammy on datatdog. If need arises we can implement this
|
No user has asked for this so far, this might be spammy on datatdog. If need arises we can implement this
|
||||||
"""
|
"""
|
||||||
return
|
return
|
||||||
|
|
||||||
|
async def async_post_call_failure_hook(
|
||||||
|
self,
|
||||||
|
request_data: dict,
|
||||||
|
original_exception: Exception,
|
||||||
|
user_api_key_dict: UserAPIKeyAuth,
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Async Proxy Post Call Failure Hook
|
||||||
|
|
||||||
|
Logs client side errors when using LiteLLM Proxy
|
||||||
|
|
||||||
|
Args:
|
||||||
|
kwargs (Dict[str, Any]): Original request kwargs
|
||||||
|
response_obj (Optional[Any]): Response object if any
|
||||||
|
start_time (datetime.datetime): Start time of request
|
||||||
|
end_time (datetime.datetime): End time of request
|
||||||
|
error (str): Error message
|
||||||
|
"""
|
||||||
|
import json
|
||||||
|
|
||||||
|
try:
|
||||||
|
verbose_logger.debug(
|
||||||
|
"Datadog: Logging - Enters failure logging function for model %s",
|
||||||
|
request_data,
|
||||||
|
)
|
||||||
|
_json_message = {
|
||||||
|
"exception": str(original_exception),
|
||||||
|
"request_data": request_data,
|
||||||
|
"user_api_key_dict": user_api_key_dict.model_dump(),
|
||||||
|
}
|
||||||
|
dd_payload = DatadogPayload(
|
||||||
|
ddsource=DD_SOURCE_NAME,
|
||||||
|
ddtags="",
|
||||||
|
hostname="",
|
||||||
|
message=json.dumps(_json_message),
|
||||||
|
service="litellm-server",
|
||||||
|
status=DataDogStatus.ERROR,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.log_queue.append(dd_payload)
|
||||||
|
verbose_logger.debug(
|
||||||
|
f"Datadog, failure event added to queue. Will flush in {self.flush_interval} seconds..."
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(self.log_queue) >= self.batch_size:
|
||||||
|
await self.async_send_batch()
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
verbose_logger.exception(
|
||||||
|
f"Datadog Layer Error - {str(e)}\n{traceback.format_exc()}"
|
||||||
|
)
|
||||||
|
pass
|
||||||
|
|
|
@ -8,18 +8,7 @@ model_list:
|
||||||
model: anthropic/fake
|
model: anthropic/fake
|
||||||
api_base: https://exampleanthropicendpoint-production.up.railway.app/
|
api_base: https://exampleanthropicendpoint-production.up.railway.app/
|
||||||
|
|
||||||
router_settings:
|
|
||||||
provider_budget_config:
|
|
||||||
openai:
|
|
||||||
budget_limit: 0.3 # float of $ value budget for time period
|
|
||||||
time_period: 1d # can be 1d, 2d, 30d
|
|
||||||
anthropic:
|
|
||||||
budget_limit: 5
|
|
||||||
time_period: 1d
|
|
||||||
redis_host: os.environ/REDIS_HOST
|
|
||||||
redis_port: os.environ/REDIS_PORT
|
|
||||||
redis_password: os.environ/REDIS_PASSWORD
|
|
||||||
|
|
||||||
litellm_settings:
|
litellm_settings:
|
||||||
callbacks: ["prometheus"]
|
callbacks: ["datadog"] # will log success & failures
|
||||||
success_callback: ["langfuse"]
|
service_callbacks: ["datadog"] # will log DB fails / exceptions
|
||||||
|
turn_off_message_logging: True # will redact message / response content
|
Loading…
Add table
Add a link
Reference in a new issue