Alarmierung / Webhooks
Benachrichtigungen für
| Kategorie | Alarmtyp |
|---|---|
| LLM-Leistung | Hängende API-Aufrufe, Langsame API-Aufrufe, Fehlgeschlagene API-Aufrufe, Benachrichtigungen bei Modell-Ausfällen |
| Budget & Ausgaben | Budgetverfolgung pro Schlüssel/Benutzer, Sanfte Budget-Benachrichtigungen, Wöchentliche & Monatliche Ausgabenberichte pro Team/Tag |
| Systemzustand | Fehlgeschlagene Datenbank-Lese-/Schreibvorgänge |
| Tägliche Berichte | Die 5 langsamsten LLM-Bereitstellungen, Die 5 LLM-Bereitstellungen mit den meisten fehlgeschlagenen Anfragen, Wöchentliche & Monatliche Ausgaben pro Team/Tag |
Funktioniert über
Schnellstart
Richten Sie einen Slack-Alarmkanal ein, um Benachrichtigungen vom Proxy zu erhalten.
Schritt 1: Fügen Sie eine Slack-Webhook-URL zur Umgebungsvariable hinzu
Holen Sie sich eine Slack-Webhook-URL von https://api.slack.com/messaging/webhooks
Sie können auch Discord-Webhooks verwenden, siehe hier
Setzen Sie SLACK_WEBHOOK_URL in Ihrer Proxy-Umgebungsvariable, um Slack-Benachrichtigungen zu aktivieren.
export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/<>/<>/<>"
Schritt 2: Proxy einrichten
general_settings:
alerting: ["slack"]
alerting_threshold: 300 # sends alerts if requests hang for 5min+ and responses take 5min+
spend_report_frequency: "1d" # [Optional] set as 1d, 2d, 30d .... Specify how often you want a Spend Report to be sent
# [OPTIONAL ALERTING ARGS]
alerting_args:
daily_report_frequency: 43200 # 12 hours in seconds
report_check_interval: 3600 # 1 hour in seconds
budget_alert_ttl: 86400 # 24 hours in seconds
outage_alert_ttl: 60 # 1 minute in seconds
region_outage_alert_ttl: 60 # 1 minute in seconds
minor_outage_alert_threshold: 5
major_outage_alert_threshold: 10
max_outage_alert_list_size: 1000
log_to_console: false
Proxy starten
$ litellm --config /path/to/config.yaml
Schritt 3: Testen!
curl -X GET 'http://0.0.0.0:4000/health/services?service=slack' \
-H 'Authorization: Bearer sk-1234'
Erweitert
Nachrichten aus Benachrichtigungen ausblenden
Standardmäßig zeigen Benachrichtigungen die an messages/input, die an das LLM übergeben wurden. Wenn Sie dies aus Slack-Benachrichtigungen ausblenden möchten, setzen Sie die folgende Einstellung in Ihrer Konfiguration
general_settings:
alerting: ["slack"]
alert_types: ["spend_reports"]
litellm_settings:
redact_messages_in_exceptions: True
Sanfte Budget-Benachrichtigungen für virtuelle Schlüssel
Verwenden Sie dies, um eine Benachrichtigung zu senden, wenn ein Schlüssel/Team kurz vor dem Aufbrauchen seines Budgets steht
Schritt 1. Erstellen Sie einen virtuellen Schlüssel mit einem sanften Budget
Setzen Sie soft_budget auf 0,001
curl -X 'POST' \
'https://:4000/key/generate' \
-H 'accept: application/json' \
-H 'x-goog-api-key: sk-1234' \
-H 'Content-Type: application/json' \
-d '{
"key_alias": "prod-app1",
"team_id": "113c1a22-e347-4506-bfb2-b320230ea414",
"soft_budget": 0.001
}'
Schritt 2. Senden Sie eine Anfrage an den Proxy mit dem virtuellen Schlüssel
curl http://0.0.0.0:4000/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-Nb5eCf427iewOlbxXIH4Ow" \
-d '{
"model": "openai/gpt-4",
"messages": [
{
"role": "user",
"content": "this is a test request, write a short poem"
}
]
}'
Schritt 3. Prüfen Sie Slack auf erwartete Benachrichtigung
Metadaten zu Benachrichtigungen hinzufügen
Fügen Sie Benachrichtigungsmetadaten zu Proxy-Aufrufen für das Debugging hinzu.
import openai
client = openai.OpenAI(
api_key="anything",
base_url="http://0.0.0.0:4000"
)
# request sent to model set on litellm proxy, `litellm --model`
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages = [],
extra_body={
"metadata": {
"alerting_metadata": {
"hello": "world"
}
}
}
)
Erwartete Antwort
Spezifische Alarmtypen auswählen
Setzen Sie alert_types, wenn Sie sich nur für bestimmte Alarmtypen anmelden möchten. Wenn alert_types nicht gesetzt ist, sind alle Standard-Alarmtypen aktiviert.
👉 Alle möglichen Alarmtypen anzeigen
general_settings:
alerting: ["slack"]
alert_types: [
"llm_exceptions",
"llm_too_slow",
"llm_requests_hanging",
"budget_alerts",
"spend_reports",
"db_exceptions",
"daily_reports",
"cooldown_deployment",
"new_model_added",
]
Slack-Kanäle dem Alarmtyp zuordnen
Verwenden Sie dies, wenn Sie bestimmte Kanäle pro Alarmtyp festlegen möchten
Dies ermöglicht Ihnen Folgendes
llm_exceptions -> go to slack channel #llm-exceptions
spend_reports -> go to slack channel #llm-spend-reports
Setzen Sie alert_to_webhook_url in Ihrer config.yaml
- 1 Kanal pro Alarm
- mehrere Kanäle pro Alarm
model_list:
- model_name: gpt-4
litellm_params:
model: openai/fake
api_key: fake-key
api_base: https://exampleopenaiendpoint-production.up.railway.app/
general_settings:
master_key: sk-1234
alerting: ["slack"]
alerting_threshold: 0.0001 # (Seconds) set an artificially low threshold for testing alerting
alert_to_webhook_url: {
"llm_exceptions": "https://hooks.slack.com/services/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",
"llm_too_slow": "https://hooks.slack.com/services/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",
"llm_requests_hanging": "https://hooks.slack.com/services/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",
"budget_alerts": "https://hooks.slack.com/services/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",
"db_exceptions": "https://hooks.slack.com/services/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",
"daily_reports": "https://hooks.slack.com/services/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",
"spend_reports": "https://hooks.slack.com/services/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",
"cooldown_deployment": "https://hooks.slack.com/services/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",
"new_model_added": "https://hooks.slack.com/services/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",
"outage_alerts": "https://hooks.slack.com/services/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",
}
litellm_settings:
success_callback: ["langfuse"]
Mehrere Slack-Kanäle für einen bestimmten Alarmtyp bereitstellen
model_list:
- model_name: gpt-4
litellm_params:
model: openai/fake
api_key: fake-key
api_base: https://exampleopenaiendpoint-production.up.railway.app/
general_settings:
master_key: sk-1234
alerting: ["slack"]
alerting_threshold: 0.0001 # (Seconds) set an artificially low threshold for testing alerting
alert_to_webhook_url: {
"llm_exceptions": ["os.environ/SLACK_WEBHOOK_URL", "os.environ/SLACK_WEBHOOK_URL_2"],
"llm_too_slow": ["https://webhook.site/7843a980-a494-4967-80fb-d502dbc16886", "https://webhook.site/28cfb179-f4fb-4408-8129-729ff55cf213"],
"llm_requests_hanging": ["os.environ/SLACK_WEBHOOK_URL_5", "os.environ/SLACK_WEBHOOK_URL_6"],
"budget_alerts": ["os.environ/SLACK_WEBHOOK_URL_7", "os.environ/SLACK_WEBHOOK_URL_8"],
"db_exceptions": ["os.environ/SLACK_WEBHOOK_URL_9", "os.environ/SLACK_WEBHOOK_URL_10"],
"daily_reports": ["os.environ/SLACK_WEBHOOK_URL_11", "os.environ/SLACK_WEBHOOK_URL_12"],
"spend_reports": ["os.environ/SLACK_WEBHOOK_URL_13", "os.environ/SLACK_WEBHOOK_URL_14"],
"cooldown_deployment": ["os.environ/SLACK_WEBHOOK_URL_15", "os.environ/SLACK_WEBHOOK_URL_16"],
"new_model_added": ["os.environ/SLACK_WEBHOOK_URL_17", "os.environ/SLACK_WEBHOOK_URL_18"],
"outage_alerts": ["os.environ/SLACK_WEBHOOK_URL_19", "os.environ/SLACK_WEBHOOK_URL_20"],
}
litellm_settings:
success_callback: ["langfuse"]
Testen Sie es - senden Sie eine gültige LLM-Anfrage - erwarten Sie eine llm_too_slow Benachrichtigung in ihrem eigenen Slack-Kanal
curl -i https://:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4",
"messages": [
{"role": "user", "content": "Hello, Claude gm!"}
]
}'
MS Teams Webhooks
MS Teams bietet eine Slack-kompatible Webhook-URL, die Sie für Benachrichtigungen verwenden können
Schnellstart
Holen Sie sich eine Webhook-URL für Ihren Microsoft Teams-Kanal
Fügen Sie sie zu Ihrer .env hinzu
SLACK_WEBHOOK_URL="https://berriai.webhook.office.com/webhookb2/...6901/IncomingWebhook/b55fa0c2a48647be8e6effedcd540266/e04b1092-4a3e-44a2-ab6b-29a0a4854d1d"
- Fügen Sie sie zu Ihrer LiteLLM-Konfiguration hinzu
model_list:
model_name: "azure-model"
litellm_params:
model: "azure/gpt-35-turbo"
api_key: "my-bad-key" # 👈 bad key
general_settings:
alerting: ["slack"]
alerting_threshold: 300 # sends alerts if requests hang for 5min+ and responses take 5min+
- Gesundheitsprüfung ausführen!
Rufen Sie den /health/services-Endpunkt des Proxys auf, um zu testen, ob Ihre Benachrichtigungsverbindung korrekt eingerichtet ist.
curl --location 'http://0.0.0.0:4000/health/services?service=slack' \
--header 'Authorization: Bearer sk-1234'
Erwartete Antwort
Discord Webhooks
Discord bietet eine Slack-kompatible Webhook-URL, die Sie für Benachrichtigungen verwenden können
Schnellstart
Holen Sie sich eine Webhook-URL für Ihren Discord-Kanal
Hängen Sie
/slackan Ihren Discord-Webhook an - es sollte dann so aussehen
"https://discord.com/api/webhooks/1240030362193760286/cTLWt5ATn1gKmcy_982rl5xmYHsrM1IWJdmCL1AyOmU9JdQXazrp8L1_PYgUtgxj8x4f/slack"
- Fügen Sie sie zu Ihrer LiteLLM-Konfiguration hinzu
model_list:
model_name: "azure-model"
litellm_params:
model: "azure/gpt-35-turbo"
api_key: "my-bad-key" # 👈 bad key
general_settings:
alerting: ["slack"]
alerting_threshold: 300 # sends alerts if requests hang for 5min+ and responses take 5min+
environment_variables:
SLACK_WEBHOOK_URL: "https://discord.com/api/webhooks/1240030362193760286/cTLWt5ATn1gKmcy_982rl5xmYHsrM1IWJdmCL1AyOmU9JdQXazrp8L1_PYgUtgxj8x4f/slack"
[BETA]Webhooks für Budget-Benachrichtigungen
Hinweis: Dies ist eine Beta-Funktion, daher kann sich die Spezifikation ändern.
Setzen Sie einen Webhook, um über Budget-Benachrichtigungen informiert zu werden.
- Konfigurieren Sie config.yaml
Fügen Sie die URL zu Ihrer Umgebung hinzu. Zum Testen können Sie einen Link von hier verwenden
export WEBHOOK_URL="https://webhook.site/6ab090e8-c55f-4a23-b075-3209f5c57906"
Fügen Sie 'webhook' zu config.yaml hinzu
general_settings:
alerting: ["webhook"] # 👈 KEY CHANGE
- Proxy starten
litellm --config /path/to/config.yaml
# RUNNING on http://0.0.0.0:4000
- Testen Sie es!
curl -X GET --location 'http://0.0.0.0:4000/health/services?service=webhook' \
--header 'Authorization: Bearer sk-1234'
Erwartete Antwort
{
"spend": 1, # the spend for the 'event_group'
"max_budget": 0, # the 'max_budget' set for the 'event_group'
"token": "88dc28d0f030c55ed4ab77ed8faf098196cb1c05df778539800c9f1243fe6b4b",
"user_id": "default_user_id",
"team_id": null,
"user_email": null,
"key_alias": null,
"projected_exceeded_data": null,
"projected_spend": null,
"event": "budget_crossed", # Literal["budget_crossed", "threshold_crossed", "projected_limit_exceeded"]
"event_group": "user",
"event_message": "User Budget: Budget Crossed"
}
API-Spezifikation für Webhook-Ereignis
spendfloat: Der aktuelle Ausgabenbetrag für die 'event_group'.max_budgetfloat oder null: Das maximal zulässige Budget für die 'event_group'. null, wenn nicht gesetzt.tokenstr: Ein gehashter Wert des Schlüssels, der zur Authentifizierung oder Identifizierung verwendet wird.customer_idstr oder null: Die ID des Kunden, der mit dem Ereignis verbunden ist (optional).internal_user_idstr oder null: Die ID des internen Benutzers, der mit dem Ereignis verbunden ist (optional).team_idstr oder null: Die ID des Teams, das mit dem Ereignis verbunden ist (optional).user_emailstr oder null: Die E-Mail des internen Benutzers, der mit dem Ereignis verbunden ist (optional).key_aliasstr oder null: Ein Alias für den Schlüssel, der mit dem Ereignis verbunden ist (optional).projected_exceeded_datestr oder null: Das Datum, an dem das Budget voraussichtlich überschritten wird, zurückgegeben, wenn 'soft_budget' für den Schlüssel gesetzt ist (optional).projected_spendfloat oder null: Der prognostizierte Ausgabenbetrag, zurückgegeben, wenn 'soft_budget' für den Schlüssel gesetzt ist (optional).eventLiteral["budget_crossed", "threshold_crossed", "projected_limit_exceeded"]: Der Typ des Ereignisses, das den Webhook ausgelöst hat. Mögliche Werte sind- "spend_tracked": Wird jedes Mal ausgelöst, wenn Ausgaben für eine Kunden-ID verfolgt werden.
- "budget_crossed": Zeigt an, dass die Ausgaben das maximale Budget überschritten haben.
- "threshold_crossed": Zeigt an, dass die Ausgaben einen Schwellenwert überschritten haben (derzeit gesendet, wenn 85 % und 95 % des Budgets erreicht sind).
- "projected_limit_exceeded": Nur für "Schlüssel" - Zeigt an, dass die prognostizierten Ausgaben voraussichtlich den Schwellenwert des sanften Budgets überschreiten werden.
event_groupLiteral["customer", "internal_user", "key", "team", "proxy"]: Die Gruppe, die mit dem Ereignis verbunden ist. Mögliche Werte sind- "customer": Das Ereignis bezieht sich auf einen bestimmten Kunden
- "internal_user": Das Ereignis bezieht sich auf einen bestimmten internen Benutzer.
- "key": Das Ereignis bezieht sich auf einen bestimmten Schlüssel.
- "team": Das Ereignis bezieht sich auf ein Team.
- "proxy": Das Ereignis bezieht sich auf einen Proxy.
event_messagestr: Eine für Menschen lesbare Beschreibung des Ereignisses.
Region-Ausfall-Benachrichtigung (✨ Enterprise-Funktion)
Richten Sie Benachrichtigungen ein, wenn eine Anbieterregion einen Ausfall hat.
general_settings:
alerting: ["slack"]
alert_types: ["region_outage_alerts"]
Standardmäßig wird dies ausgelöst, wenn mehrere Modelle in einer Region 5+ Anfragen in 1 Minute fehlschlagen. Fehler mit Statuscode '400' werden nicht gezählt (d.h. BadRequestErrors).
Schwellenwerte steuern mit
general_settings:
alerting: ["slack"]
alert_types: ["region_outage_alerts"]
alerting_args:
region_outage_alert_ttl: 60 # time-window in seconds
minor_outage_alert_threshold: 5 # number of errors to trigger a minor alert
major_outage_alert_threshold: 10 # number of errors to trigger a major alert
Alle möglichen Alarmtypen
👉 Hier erfahren Sie, wie Sie bestimmte Alarmtypen einstellen
LLM-bezogene Benachrichtigungen
| Alarmtyp | Beschreibung | Standardmäßig aktiviert |
|---|---|---|
llm_exceptions | Benachrichtigungen für LLM-API-Ausnahmen | ✅ |
llm_too_slow | Benachrichtigungen für LLM-Antworten, die langsamer als der eingestellte Schwellenwert sind | ✅ |
llm_requests_hanging | Benachrichtigungen für LLM-Anfragen, die nicht abgeschlossen werden | ✅ |
cooldown_deployment | Benachrichtigungen, wenn eine Bereitstellung in den "Cooldown" versetzt wird | ✅ |
new_model_added | Benachrichtigungen, wenn ein neues Modell über /model/new zum LiteLLM-Proxy hinzugefügt wird | ✅ |
outage_alerts | Benachrichtigungen, wenn eine bestimmte LLM-Bereitstellung einen Ausfall hat | ✅ |
region_outage_alerts | Benachrichtigungen, wenn eine bestimmte LLM-Region einen Ausfall hat. Beispiel: us-east-1 | ✅ |
Budget- und Ausgabenbenachrichtigungen
| Alarmtyp | Beschreibung | Standardmäßig aktiviert |
|---|---|---|
budget_alerts | Benachrichtigungen im Zusammenhang mit Budgetgrenzen oder -schwellenwerten | ✅ |
spend_reports | Periodische Berichte über Ausgaben in Teams oder Tags | ✅ |
failed_tracking_spend | Benachrichtigungen, wenn die Ausgabenverfolgung fehlschlägt | ✅ |
daily_reports | Tägliche Ausgabenberichte | ✅ |
fallback_reports | Wöchentliche Berichte über LLM-Fallback-Vorkommnisse | ✅ |
Datenbank-Benachrichtigungen
| Alarmtyp | Beschreibung | Standardmäßig aktiviert |
|---|---|---|
db_exceptions | Benachrichtigungen für datenbankbezogene Ausnahmen | ✅ |
Benachrichtigungen für Verwaltungs-Endpunkte - Virtueller Schlüssel, Team, Interner Benutzer
| Alarmtyp | Beschreibung | Standardmäßig aktiviert |
|---|---|---|
new_virtual_key_created | Benachrichtigungen bei der Erstellung eines neuen virtuellen Schlüssels | ❌ |
virtual_key_updated | Benachrichtigungen bei Änderungen an einem virtuellen Schlüssel | ❌ |
virtual_key_deleted | Benachrichtigungen bei der Entfernung eines virtuellen Schlüssels | ❌ |
new_team_created | Benachrichtigungen bei der Erstellung eines neuen Teams | ❌ |
team_updated | Benachrichtigungen bei Änderungen von Teamdetails | ❌ |
team_deleted | Benachrichtigungen bei der Löschung eines Teams | ❌ |
new_internal_user_created | Benachrichtigungen für neue interne Benutzerkonten | ❌ |
internal_user_updated | Benachrichtigungen bei Änderungen von Details eines internen Benutzers | ❌ |
internal_user_deleted | Benachrichtigungen bei der Entfernung eines internen Benutzerkontos | ❌ |
alerting_args Spezifikation
| Parameter | Standard | Beschreibung |
|---|---|---|
daily_report_frequency | 43200 (12 Stunden) | Häufigkeit des Empfangs von Berichten über Bereitstellungslatenz/Ausfälle in Sekunden |
report_check_interval | 3600 (1 Stunde) | Wie oft geprüft wird, ob ein Bericht gesendet werden soll (Hintergrundprozess) in Sekunden |
budget_alert_ttl | 86400 (24 Stunden) | Cache-TTL für Budget-Benachrichtigungen zur Vermeidung von Spam, wenn das Budget überschritten wird |
outage_alert_ttl | 60 (1 Minute) | Zeitfenster zum Sammeln von Modell-Ausfallfehlern in Sekunden |
region_outage_alert_ttl | 60 (1 Minute) | Zeitfenster zum Sammeln von regionalen Ausfallfehlern in Sekunden |
minor_outage_alert_threshold | 5 | Anzahl der Fehler, die eine geringfügige Ausfallbenachrichtigung auslösen (400-Fehler nicht gezählt) |
major_outage_alert_threshold | 10 | Anzahl der Fehler, die eine schwerwiegende Ausfallbenachrichtigung auslösen (400-Fehler nicht gezählt) |
max_outage_alert_list_size | 1000 | Maximale Anzahl von Fehlern, die pro Modell/Region im Cache gespeichert werden |
log_to_console | false | Wenn true, wird die Benachrichtigungsnutzlast als .warning-Protokoll auf der Konsole ausgegeben. |