diff --git a/docs/my-website/docs/proxy/alerting.md b/docs/my-website/docs/proxy/alerting.md index 230a3a22e9..fb49a89013 100644 --- a/docs/my-website/docs/proxy/alerting.md +++ b/docs/my-website/docs/proxy/alerting.md @@ -11,7 +11,7 @@ Get alerts for: - Daily Reports: - **LLM** Top 5 slowest deployments - **LLM** Top 5 deployments with most failed requests - - **Spend** Weekly & Monthly spend per Team, Tag +- **Spend** Weekly & Monthly spend per Team, Tag ## Quick Start @@ -61,8 +61,37 @@ curl -X GET 'http://localhost:4000/health/services?service=slack' \ -H 'Authorization: Bearer sk-1234' ``` +## Advanced +### Opting into specific alert types + +Set `alert_types` if you want to Opt into only specific alert types + +```shell +general_settings: + alerting: ["slack"] + alert_types: ["spend_reports"] +``` + +All Possible Alert Types + +```python +alert_types: +Optional[ +List[ + Literal[ + "llm_exceptions", + "llm_too_slow", + "llm_requests_hanging", + "budget_alerts", + "db_exceptions", + "daily_reports", + "spend_reports", + "cooldown_deployment", + "new_model_added", + ] +] +``` -## Extras ### Using Discord Webhooks diff --git a/litellm/integrations/slack_alerting.py b/litellm/integrations/slack_alerting.py index 40258af6b8..015278c557 100644 --- a/litellm/integrations/slack_alerting.py +++ b/litellm/integrations/slack_alerting.py @@ -87,6 +87,9 @@ class SlackAlerting(CustomLogger): "budget_alerts", "db_exceptions", "daily_reports", + "spend_reports", + "cooldown_deployment", + "new_model_added", ] ] = [ "llm_exceptions", @@ -95,6 +98,9 @@ class SlackAlerting(CustomLogger): "budget_alerts", "db_exceptions", "daily_reports", + "spend_reports", + "cooldown_deployment", + "new_model_added", ], alert_to_webhook_url: Optional[ Dict @@ -726,6 +732,7 @@ Model Info: "budget_alerts", "db_exceptions", "daily_reports", + "spend_reports", "new_model_added", "cooldown_deployment", ], @@ -748,6 +755,9 @@ Model Info: if self.alerting is None: return + if alert_type not in self.alert_types: + return + from datetime import datetime import json @@ -942,7 +952,7 @@ Model Info: await self.send_alert( message=_weekly_spend_message, level="Low", - alert_type="daily_reports", + alert_type="spend_reports", ) except Exception as e: verbose_proxy_logger.error("Error sending weekly spend report", e) @@ -993,7 +1003,7 @@ Model Info: await self.send_alert( message=_spend_message, level="Low", - alert_type="daily_reports", + alert_type="spend_reports", ) except Exception as e: verbose_proxy_logger.error("Error sending weekly spend report", e) diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index 5d32c333d6..c60799ac91 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -10171,8 +10171,14 @@ async def health_services_endpoint( asyncio.create_task( proxy_logging_obj.slack_alerting_instance.send_weekly_spend_report() ) + + alert_types = ( + proxy_logging_obj.slack_alerting_instance.alert_types or [] + ) + alert_types = list(alert_types) return { "status": "success", + "alert_types": alert_types, "message": "Mock Slack Alert sent, verify Slack Alert Received on your channel", } else: diff --git a/litellm/proxy/utils.py b/litellm/proxy/utils.py index 9939ab5943..09e772e10b 100644 --- a/litellm/proxy/utils.py +++ b/litellm/proxy/utils.py @@ -74,6 +74,9 @@ class ProxyLogging: "budget_alerts", "db_exceptions", "daily_reports", + "spend_reports", + "cooldown_deployment", + "new_model_added", ] ] = [ "llm_exceptions", @@ -82,6 +85,9 @@ class ProxyLogging: "budget_alerts", "db_exceptions", "daily_reports", + "spend_reports", + "cooldown_deployment", + "new_model_added", ] self.slack_alerting_instance = SlackAlerting( alerting_threshold=self.alerting_threshold, @@ -104,6 +110,9 @@ class ProxyLogging: "budget_alerts", "db_exceptions", "daily_reports", + "spend_reports", + "cooldown_deployment", + "new_model_added", ] ] ] = None,