DataDog
LiteLLM 支持将日志记录到以下 Datadog 集成中
datadogDatadog 日志datadog_llm_observabilityDatadog LLM 可观测性datadog_metricsDatadog 自定义指标datadog_cost_managementDatadog 云成本管理ddtrace-runDatadog 追踪 (Tracing)
Datadog 日志
| 功能 | 详情 |
|---|---|
| 记录的内容 | StandardLoggingPayload |
| 事件 | 成功 + 失败 |
| 产品链接 | Datadog 日志 |
我们将使用 --config 来设置 litellm.callbacks = ["datadog"],这将把所有成功的 LLM 调用记录到 DataDog 中
第 1 步:创建一个 config.yaml 文件并设置 litellm_settings: success_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 可观测性 |
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,以避免与自动设置 DD_AGENT_HOST 用于 APM 追踪的 ddtrace 产生冲突。
[!IMPORTANT] Datadog LLM 可观测性:即使使用 Datadog Agent (
LITELLM_DD_AGENT_HOST),DD_API_KEY也是必须的。Agent 充当代理,但 API 密钥头对于 LLM 可观测性端点是强制要求的。
步骤 3:启动代理,发起测试请求
启动代理
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 可观测性记录的负载中脱敏来自消息和响应的敏感数据。
启用脱敏后,实际的消息内容和响应文本将从 Datadog 日志中排除,同时保留元数据(如 token 计数、延迟和模型信息)。
第 1 步:在您的 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 步:发送聊天补全请求
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 可观测性中验证脱敏情况
在 Datadog LLM 可观测性页面上,您应该看到输入消息和输出响应均已被脱敏,而元数据(token 计数、耗时、模型信息)保持可见。
Datadog 自定义指标
| 功能 | 详情 |
|---|---|
| 记录的内容 | 延迟指标,按状态码统计请求数 |
| 事件 | 成功 + 失败 |
| 产品链接 | Datadog 指标 |
通过 /api/v2/series 端点将以下指标发布到 Datadog
| 指标 | 类型 | 描述 |
|---|---|---|
litellm.request.total_latency | Gauge(仪表盘指标) | 端到端请求延迟(秒) |
litellm.llm_api.latency | Gauge(仪表盘指标) | 等待 LLM 提供商响应所花费的时间(秒) |
litellm.llm_api.request_count | Count(计数指标) | 请求计数,带有状态码标签 |
使用 total_latency 和 llm_api.latency,您可以推导出内部延迟 = total_latency - llm_api.latency。
所有指标都包含以下标签:env, service, version, HOSTNAME, POD_NAME, provider, model_name, model_group, team, status_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 步:启动代理并进行测试请求
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_latency、litellm.llm_api.latency 或 litellm.llm_api.request_count。
Datadog 云成本管理
| 功能 | 详情 |
|---|---|
| 记录的内容 | 聚合的 LLM 成本(FOCUS 格式) |
| 事件 | 定期上传聚合的成本数据 |
| 产品链接 | Datadog 云成本管理 |
我们将使用 --config 来设置 litellm.callbacks = ["datadog_cost_management"]。这将定期将聚合的 LLM 成本数据上传到 Datadog。
第 1 步:创建一个 config.yaml 文件并设置 litellm_settings: success_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 步:启动代理
litellm --config config.yaml
工作原理
- LiteLLM 按提供商、模型、日期和标签在内存中聚合成本。
- 需要
DD_APP_KEY以用于自定义成本 API。 - 成本会定期(刷新时)上传。
Datadog 追踪 (Tracing)
使用 ddtrace-run 在 litellm 代理上启用 Datadog 追踪
DD Tracer:将 USE_DDTRACE=true 传递给 docker run 命令。当 USE_DDTRACE=true 时,代理将执行 ddtrace-run litellm 作为 ENTRYPOINT,而不是仅运行 litellm。
DD Profiler
将 USE_DDPROFILER=true 传递给 docker run 命令。当 USE_DDPROFILER=true 时,代理将激活 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:main-latest \
--config /app/config.yaml --detailed_debug
设置 DD 变量 (DD_SERVICE 等)
LiteLLM 支持自定义以下 Datadog 环境变量
| 环境变量 | 描述 | 默认值 | 必需 |
|---|---|---|---|
DD_API_KEY | 用于身份验证的 Datadog API 密钥(直接 API 必需,agent 模式可选) | 无 | 条件性* |
DD_SITE | 您的 Datadog 站点(例如 "us5.datadoghq.com")(直接 API 必需) | 无 | 条件性* |
LITELLM_DD_AGENT_HOST | DataDog agent 的主机名或 IP(例如 "localhost")。设置后,日志将发送到 agent 而不是直接发送到 API | 无 | ❌ 无 |
LITELLM_DD_AGENT_PORT | 用于日志摄入的 DataDog agent 端口 | "10518" | ❌ 无 |
DD_ENV | 日志的环境标签(例如 "production", "staging") | "unknown" | ❌ 无 |
DD_SERVICE | 日志的服务名称 | "litellm-server" | ❌ 无 |
DD_LLMOBS_ML_APP | LLM 可观测性的默认 ml_app 名称(应用程序列)。可以通过 metadata.ml_app 对每个请求进行覆盖。 | 回退到 DD_SERVICE | ❌ 无 |
DD_SOURCE | 日志的源名称 | "litellm" | ❌ 无 |
DD_VERSION | 日志的版本标签 | "unknown" | ❌ 无 |
HOSTNAME | 日志的主机名标签 | "" | ❌ 无 |
POD_NAME | Pod 名称标签(对 Kubernetes 部署非常有用) | "unknown" | ❌ 无 |
* 使用直接 API(默认)时必需:DD_API_KEY 和 DD_SITE 为必需项
* 使用 DataDog Agent 时可选:设置 LITELLM_DD_AGENT_HOST 以使用 agent 模式;对于 Datadog 日志,不需要 DD_API_KEY 和 DD_SITE。(注意:Datadog LLM 可观测性仍然需要 DD_API_KEY)
自动标签
如果请求中提供了相关信息,LiteLLM 会自动将以下标签添加到您的 Datadog 日志和指标中
| 标签 | 描述 | 来源 |
|---|---|---|
team | 与 API 密钥关联的团队别名或 ID | 元数据中的 user_api_key_team_alias, team_alias, user_api_key_team_id, 或 team_id |
request_tag | 请求中传递的自定义标签 | 日志负载中的 request_tags |