Sumo Logic
將 LiteLLM 記錄傳送至 Sumo Logic,以進行可觀測性、監控與分析。
Sumo Logic 是一個雲端原生的機器資料分析平台,能為您的應用程式與基礎架構提供即時洞察。 https://www.sumologic.com/
前置需求
- 在 https://www.sumologic.com/ 建立一個 Sumo Logic 帳戶
- 在 Sumo Logic 中設定 HTTP Logs and Metrics 來源:
- 前往 Manage Data > Collection > Collection
- 在 Hosted Collector 旁邊點擊 Add Source
- 選取 HTTP Logs & Metrics
- 複製產生的 URL(其中包含驗證權杖)
更多詳細資訊請參閱 HTTP Logs & Metrics Source 文件。
uv add litellm
快速開始
只需 2 行程式碼,即可立即將您的 LLM 回應記錄到 Sumo Logic。
Sumo Logic HTTP Source URL 已包含驗證權杖,因此不需要另外的 API key。
- SDK
- LiteLLM Proxy
litellm.callbacks = ["sumologic"]
import litellm
import os
# Sumo Logic HTTP Source URL (includes auth token)
os.environ["SUMOLOGIC_WEBHOOK_URL"] = "https://collectors.sumologic.com/receiver/v1/http/your-token-here"
# LLM API Keys
os.environ['OPENAI_API_KEY'] = ""
# Set sumologic as a callback
litellm.callbacks = ["sumologic"]
# OpenAI call
response = litellm.completion(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "Hi 👋 - I'm testing Sumo Logic integration"}
]
)
- 設定 config.yaml
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: openai/gpt-3.5-turbo
api_key: os.environ/OPENAI_API_KEY
litellm_settings:
callbacks: ["sumologic"]
environment_variables:
SUMOLOGIC_WEBHOOK_URL: os.environ/SUMOLOGIC_WEBHOOK_URL
- 啟動 LiteLLM Proxy
litellm --config /path/to/config.yaml
- 測試它!
curl -L -X POST 'http://0.0.0.0:4000/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk-1234' \
-d '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "Hey, how are you?"
}
]
}'
記錄了哪些資料?
LiteLLM 會將 標準記錄酬載 傳送到 Sumo Logic,其中包含:
- 請求詳細資訊:模型、訊息、參數
- 回應詳細資訊:完成文字、token 使用量、延遲
- 中繼資料:使用者 ID、自訂中繼資料、時間戳記
- 成本追蹤:依據 token 使用量計算的回應成本
範例酬載:
{
"id": "chatcmpl-123",
"call_type": "litellm.completion",
"model": "gpt-3.5-turbo",
"messages": [
{"role": "user", "content": "Hello"}
],
"response": {
"choices": [{
"message": {
"role": "assistant",
"content": "Hi there!"
}
}]
},
"usage": {
"prompt_tokens": 10,
"completion_tokens": 5,
"total_tokens": 15
},
"response_cost": 0.0001,
"start_time": "2024-01-01T00:00:00",
"end_time": "2024-01-01T00:00:01"
}
進階設定
記錄格式
Sumo Logic 整合預設使用 NDJSON(newline-delimited JSON) 格式。此格式最適合 Sumo Logic 的解析能力,並可讓欄位擷取規則在擷取時生效。
NDJSON 格式
每筆記錄項目會在 HTTP 請求中以獨立的一行傳送:
{"id":"chatcmpl-1","model":"gpt-3.5-turbo","response_cost":0.0001,...}
{"id":"chatcmpl-2","model":"gpt-4","response_cost":0.0003,...}
{"id":"chatcmpl-3","model":"gpt-3.5-turbo","response_cost":0.0001,...}
欄位擷取規則(FERs)的好處
使用 NDJSON 格式時,您可以直接建立欄位擷取規則:
_sourceCategory=litellm/logs
| json field=_raw "model", "response_cost", "user" as model, cost, user
NDJSON 之前(使用 JSON 陣列格式):
- 需要
parse regex ... multi因應方式 - FERs 無法在擷取時解析
- 查詢時解析會影響儀表板效能
NDJSON 之後:
- ✅ FERs 在擷取時解析欄位
- ✅ 不需要查詢時的因應方式
- ✅ 更好的儀表板效能
- ✅ 更簡單的查詢語法
變更記錄格式(進階)
如果您需要變更記錄格式(不建議用於 Sumo Logic):
callback_settings:
sumologic:
callback_type: generic_api
callback_name: sumologic
log_format: json_array # Override to use JSON array instead
批次處理設定
控制 LiteLLM 在傳送到 Sumo Logic 之前如何批次處理記錄:
- SDK
- LiteLLM Proxy
import litellm
os.environ["SUMOLOGIC_WEBHOOK_URL"] = "https://collectors.sumologic.com/receiver/v1/http/your-token"
litellm.callbacks = ["sumologic"]
# Configure batch settings (optional)
# These are inherited from CustomBatchLogger
# Default batch_size: 100
# Default flush_interval: 60 seconds
litellm_settings:
callbacks: ["sumologic"]
environment_variables:
SUMOLOGIC_WEBHOOK_URL: os.environ/SUMOLOGIC_WEBHOOK_URL
壓縮資料
Sumo Logic 支援壓縮資料(gzip 或 deflate)。LiteLLM 會在有利時自動處理壓縮。
好處:
- 降低網路使用量
- 更快的訊息傳遞
- 更低的資料傳輸成本
在 Sumo Logic 中查詢記錄
一旦記錄開始流向 Sumo Logic,您就可以使用 Sumo Logic Query Language 進行查詢:
_sourceCategory=litellm
| json "model", "response_cost", "usage.total_tokens" as model, cost, tokens
| sum(cost) by model
範例查詢:
依模型統計總成本:
_sourceCategory=litellm
| json "model", "response_cost" as model, cost
| sum(cost) as total_cost by model
| sort by total_cost desc
平均回應時間:
_sourceCategory=litellm
| json "start_time", "end_time" as start, end
| parse regex field=start "(?<start_ms>\d+)"
| parse regex field=end "(?<end_ms>\d+)"
| (end_ms - start_ms) as response_time_ms
| avg(response_time_ms) as avg_response_time
每位使用者的請求數:
_sourceCategory=litellm
| json "model_parameters.user" as user
| count by user
驗證
Sumo Logic HTTP Source URL 已包含驗證權杖,因此您只需要設定 SUMOLOGIC_WEBHOOK_URL 環境變數。
安全最佳做法:
- 請保密您的 HTTP Source URL(其中包含驗證權杖)
- 將其儲存在環境變數或密鑰管理中
- 若遭到外洩,請重新產生 URL(在 Sumo Logic UI 中)
- 為不同環境(dev、staging、prod)使用不同的 HTTP Sources
取得您的 Sumo Logic URL
- 登入 Sumo Logic
- 前往 Manage Data > Collection > Collection
- 在 Hosted Collector 旁邊點擊 Add Source
- 選取 HTTP Logs & Metrics
- 設定來源:
- Name: LiteLLM Logs
- Source Category: litellm(選用,但有助於查詢)
- 點擊 Save
- 複製顯示的 URL - 會像這樣:
https://collectors.sumologic.com/receiver/v1/http/ZaVnC4dhaV39Tn37...
疑難排解
記錄未出現在 Sumo Logic 中
- 確認 URL:確認
SUMOLOGIC_WEBHOOK_URL已正確設定 - 檢查 HTTP Source:確認它在 Sumo Logic UI 中處於啟用狀態
- 等待批次處理:記錄會以批次傳送,請等待 60 秒
- 檢查錯誤:在 LiteLLM 中啟用除錯記錄:
litellm.set_verbose = True
URL 格式
URL 必須是來自 Sumo Logic 的完整 HTTP Source URL:
- ✅ 正確:
https://collectors.sumologic.com/receiver/v1/http/ZaVnC4dhaV39Tn37...
沒有驗證錯誤
如果您遇到驗證錯誤,請在 Sumo Logic 中重新產生 HTTP Source URL:
- 前往您在 Sumo Logic 中的 HTTP Source
- 點擊設定圖示
- 點擊 Show URL
- 點擊 Regenerate URL
- 更新您的
SUMOLOGIC_WEBHOOK_URL環境變數
支援與創辦人交流
- 預約示範 👋
- 社群 Discord 💭
- 我們的電子郵件 ✉️ ishaan@berri.ai / krrish@berri.ai