跳至主要內容

Datadog

LiteLLM 支援記錄到以下 Datdog 整合:

Datadog 記錄

功能詳細資訊
記錄內容StandardLoggingPayload
事件成功 + 失敗
產品連結Datadog Logs

我們將使用 --config 來設定 litellm.callbacks = ["datadog"],這會將所有成功的 LLM 呼叫記錄到 DataDog

步驟 1:建立 config.yaml 檔案並設定 litellm_settingssuccess_callback

model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: gpt-3.5-turbo
litellm_settings:
callbacks: ["datadog"] # logs llm success + failure logs on datadog
service_callback: ["datadog"] # logs redis, postgres failures on datadog

Datadog LLM 可觀測性

概覽

功能詳細資訊
記錄內容StandardLoggingPayload
事件成功 + 失敗
產品連結Datadog LLM Observability
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: gpt-3.5-turbo
litellm_settings:
callbacks: ["datadog_llm_observability"] # logs llm success logs on datadog

步驟 2:為 datadog 設定必要的環境變數

直接 API

將記錄直接傳送至 Datadog API:

DD_API_KEY="5f2d0f310***********" # your datadog API Key
DD_SITE="us5.datadoghq.com" # your datadog base url
DD_SOURCE="litellm_dev" # [OPTIONAL] your datadog source. use to differentiate dev vs. prod deployments

透過 DataDog Agent

透過本機 DataDog agent 傳送記錄(適用於容器化環境):

LITELLM_DD_AGENT_HOST="localhost"         # hostname or IP of DataDog agent
LITELLM_DD_AGENT_PORT="10518" # [OPTIONAL] port of DataDog agent (default: 10518)
DD_API_KEY="5f2d0f310***********" # [OPTIONAL] your datadog API Key (Agent handles auth for Logs. REQUIRED for LLM Observability)
DD_SOURCE="litellm_dev" # [OPTIONAL] your datadog source

當設定 LITELLM_DD_AGENT_HOST 時,記錄會傳送到 agent,而不是直接傳送到 DataDog API。這對以下情境很有幫助:

  • 在容器化環境中集中傳送記錄
  • 減少來自多個服務的直接 API 呼叫
  • 利用 agent 端處理與篩選

注意: 我們使用 LITELLM_DD_AGENT_HOST 取代 DD_AGENT_HOST,以避免與 ddtrace 的衝突;後者會自動為 APM tracing 設定 DD_AGENT_HOST

[!IMPORTANT] Datadog LLM Observability:即使使用 Datadog Agent(LITELLM_DD_AGENT_HOST),DD_API_KEY 仍然是必要的。agent 會充當 proxy,但 LLM Observability endpoint 仍強制要求 API key 標頭。

步驟 3:啟動 proxy,發送測試請求

啟動 proxy

litellm --config config.yaml --debug

測試請求

curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "what llm are you"
}
],
"metadata": {
"your-custom-metadata": "custom-field",
}
}'

Datadog 上的預期輸出

遮罩訊息與回應

本節說明如何在 Datadog LLM Observability 的已記錄負載中,從訊息與回應中遮罩敏感資料。

啟用遮罩後,實際的訊息內容與回應文字會從 Datadog 記錄中排除,但仍會保留 token 數量、延遲與模型資訊等中繼資料。

步驟 1:在您的 config.yaml 中設定遮罩

config.yaml
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: gpt-3.5-turbo
litellm_settings:
callbacks: ["datadog_llm_observability"] # logs llm success logs on datadog

# Params to apply only for "datadog_llm_observability" callback
datadog_llm_observability_params:
turn_off_message_logging: true # redacts input messages and output responses

步驟 2:送出 chat completion 請求

curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "what llm are you"
}
]
}'

步驟 3:在 Datadog LLM Observability 中確認遮罩結果

在 Datadog LLM Observability 頁面上,您應該會看到輸入訊息與輸出回應都已被遮罩,而中繼資料(token 數量、時間、模型資訊)仍可見。

Datadog 自訂指標

功能詳細資訊
記錄內容延遲指標、依狀態碼統計的請求數
事件成功 + 失敗
產品連結Datadog Metrics

透過 /api/v2/series endpoint 將以下指標發佈到 Datadog:

指標類型說明
litellm.request.total_latencyGauge端到端請求延遲(秒)
litellm.llm_api.latencyGauge等待 LLM 提供者回應所花費的時間(秒)
litellm.llm_api.request_countCount請求次數,帶有狀態碼標記

使用 total_latencyllm_api.latency,您可以推導出內部延遲 = total_latency - llm_api.latency

所有指標都包含以下標籤:envserviceversionHOSTNAMEPOD_NAMEprovidermodel_namemodel_groupteamstatus_code

步驟 1:建立 config.yaml 檔案

model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: gpt-3.5-turbo
litellm_settings:
success_callback: ["datadog_metrics"]
failure_callback: ["datadog_metrics"]

步驟 2:設定必要的環境變數

DD_API_KEY="your-api-key"
DD_SITE="us5.datadoghq.com" # your datadog site

步驟 3:啟動 proxy 並發送測試請求

litellm --config config.yaml
curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer sk-1234' \
--data '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "hello"}]
}'

步驟 4:在 Datadog Metrics Explorer 中檢視指標

在 Datadog 中導覽至 Metrics > Explorer,並搜尋 litellm.request.total_latencylitellm.llm_api.latencylitellm.llm_api.request_count

Datadog 雲端成本管理

功能詳細資訊
記錄內容彙總的 LLM 成本(FOCUS 格式)
事件週期性上傳彙總成本資料
產品連結Datadog Cloud Cost Management

我們將使用 --config 來設定 litellm.callbacks = ["datadog_cost_management"]。這會定期將彙總的 LLM 成本資料上傳到 Datadog。

步驟 1:建立 config.yaml 檔案並設定 litellm_settingssuccess_callback

model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: gpt-3.5-turbo
litellm_settings:
callbacks: ["datadog_cost_management"]

步驟 2:設定必要的環境變數

DD_API_KEY="your-api-key"
DD_APP_KEY="your-app-key" # REQUIRED for Cost Management
DD_SITE="us5.datadoghq.com"

步驟 3:啟動 proxy

litellm --config config.yaml

運作方式

  • LiteLLM 會依提供者、模型、日期和標籤,在記憶體中彙總成本。
  • Custom Costs API 需要 DD_APP_KEY
  • 成本會定期上傳(flush)。

Datadog 分散式追蹤

使用 ddtrace-run 在 litellm proxy 上啟用 Datadog Tracing

DD TracerUSE_DDTRACE=true 傳遞給 docker run 指令。當 USE_DDTRACE=true 時,proxy 會將 ddtrace-run litellm 作為 ENTRYPOINT 執行,而不只是 litellm

DD Profiler

USE_DDPROFILER=true 傳遞給 docker run 指令。當 USE_DDPROFILER=true 時,proxy 會啟用 Datadog Profiler。這對於除錯 CPU% 和記憶體使用量很有幫助。

我們不建議在正式環境中使用 USE_DDPROFILER。它僅建議用於除錯 CPU% 和記憶體使用量。

docker run \
-v $(pwd)/litellm_config.yaml:/app/config.yaml \
-e USE_DDTRACE=true \
-e USE_DDPROFILER=true \
-p 4000:4000 \
docker.litellm.ai/berriai/litellm:latest \
--config /app/config.yaml --detailed_debug

設定 DD 變數(DD_SERVICE 等)

LiteLLM 支援自訂以下 Datadog 環境變數

環境變數說明預設值必要
DD_API_KEY您的 Datadog API key,用於驗證(直接 API 必要,agent 選用)None條件式*
DD_SITE您的 Datadog site(例如 "us5.datadoghq.com")(直接 API 必要)None條件式*
LITELLM_DD_AGENT_HOSTDataDog agent 的主機名稱或 IP(例如 "localhost")。設定後,記錄會傳送到 agent 而非直接 APINone❌ 否
LITELLM_DD_AGENT_PORTDataDog agent 的記錄收集埠"10518"❌ 否
DD_ENV您記錄的環境標籤(例如 "production"、"staging")"unknown"❌ 否
DD_SERVICE您記錄的服務名稱"litellm-server"❌ 否
DD_LLMOBS_ML_APPLLM Observability 的預設 ml_app 名稱(Application 欄位)。可透過 metadata.ml_app 依請求覆寫。預設為 DD_SERVICE❌ 否
DD_SOURCE您記錄的來源名稱"litellm"❌ 否
DD_VERSION您記錄的版本標籤"unknown"❌ 否
HOSTNAME您記錄的主機名稱標籤""❌ 否
POD_NAMEPod 名稱標籤(適用於 Kubernetes 部署)"unknown"❌ 否

* 使用 Direct API 時為必填(預設):DD_API_KEYDD_SITE 為必填
* 使用 DataDog Agent 時為選填:設定 LITELLM_DD_AGENT_HOST 以使用代理模式;Datadog Logs 不需要 DD_API_KEYDD_SITE。(注意:Datadog LLM Observability 需要 DD_API_KEY

自動標籤

如果請求中有可用資訊,LiteLLM 會自動將以下標籤加入您的 Datadog 記錄和指標:

標籤說明來源
team與 API 金鑰相關聯的團隊別名或 ID中繼資料中的 user_api_key_team_aliasteam_aliasuser_api_key_team_idteam_id
request_tag在請求中傳遞的自訂標籤記錄負載中的 request_tags