Datadog

Datadog

LiteLLM은 다음 Datadog 통합으로 로깅을 지원해요:

  • datadogDatadog Logs
  • datadog_llm_observabilityDatadog LLM Observability
  • datadog_metrics — Datadog Custom Metrics
  • datadog_cost_management — Datadog Cloud Cost Management
  • ddtrace-run — Datadog Tracing

출처: 문서

본문

Datadog Logs

기능 세부
로깅되는 것 StandardLoggingPayload
이벤트 성공 + 실패
제품 링크 Datadog Logs

--configlitellm.callbacks = ["datadog"]을 설정하면 모든 성공 LLM 호출이 DataDog에 로깅돼요.

1단계: config.yaml 파일을 만들고 litellm_settings: success_callback 설정

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

Datadog LLM Observability

개요

기능 세부
로깅되는 것 StandardLoggingPayload
이벤트 성공 + 실패
제품 링크 Datadog LLM Observability
model_list:
  - model_name: gpt-5.6-luna
    litellm_params:
      model: gpt-5.6-luna
litellm_settings:
  callbacks: ["datadog_llm_observability"] # logs llm success logs on datadog

2단계: datadog용 필수 환경 변수 설정

직접 API(Direct 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 경유(Via DataDog Agent): 로컬 DataDog 에이전트로 로그 전송(컨테이너 환경에 유용):

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를 설정하면 로그가 Datadog API 대신 에이전트로 전송돼요. 이는 다음에 유용해요:

  • 컨테이너 환경에서 중앙 집중식 로그 전송
  • 여러 서비스의 직접 API 호출 감소
  • 에이전트 측 처리·필터링 사용

참고: ddtrace가 APM 추적용으로 DD_AGENT_HOST를 자동 설정하므로 충돌을 피하기 위해 DD_AGENT_HOST 대신 LITELLM_DD_AGENT_HOST를 사용해요.

infoDatadog LLM Observability: DataDog Agent(LITELLM_DD_AGENT_HOST)를 사용할 때도 DD_API_KEY필수예요. 에이전트는 프록시 역할을 하지만 LLM Observability 엔드포인트에는 API 키 헤더가 필수예요.

3단계: 프록시를 시작하고 테스트 요청 보내기

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

메시지·응답 마스킹 (Redacting Messages and Responses)

이 섹션은 Datadog LLM Observability의 로깅 페이로드에서 메시지와 응답의 민감 데이터를 마스킹하는 방법을 다뤄요.

마스킹을 활성화하면 실제 메시지 내용과 응답 텍스트가 Datadog 로그에서 제외되면서 토큰 수, 지연 시간, 모델 정보 같은 메타데이터는 보존돼요.

1단계: config.yaml에서 마스킹 구성

config.yaml:

model_list:
  - model_name: gpt-5.6-luna
    litellm_params:
      model: gpt-5.6-luna
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-5.6-luna",
    "messages": [
        {
        "role": "user",
        "content": "what llm are you"
        }
    ]
}'

3단계: Datadog LLM Observability에서 마스킹 확인

Datadog LLM Observability 페이지에서 입력 메시지와 출력 응답이 모두 마스킹되고, 메타데이터(토큰 수, 타이밍, 모델 정보)는 계속 보이는 것을 확인할 수 있어요.

Datadog Custom Metrics

기능 세부
로깅되는 것 지연 시간 메트릭, 상태 코드별 요청 수
이벤트 성공 + 실패
제품 링크 Datadog Metrics

/api/v2/series 엔드포인트로 다음 메트릭을 Datadog에 게시해요:

메트릭 타입 설명
litellm.request.total_latency Gauge 종단 간 요청 지연 시간(초)
litellm.llm_api.latency Gauge LLM 프로바이더 응답을 기다리는 데 걸린 시간(초)
litellm.llm_api.request_count Count 상태 코드로 태깅된 요청 수

total_latencyllm_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-5.6-luna
    litellm_params:
      model: gpt-5.6-luna
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 ***" \
    --data '{
    "model": "gpt-5.6-luna",
    "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 Cloud Cost Management

기능 세부
로깅되는 것 집계된 LLM 비용(FOCUS 형식)
이벤트 집계 비용 데이터의 주기적 업로드
제품 링크 Datadog Cloud Cost Management

--configlitellm.callbacks = ["datadog_cost_management"]을 설정하면 집계된 LLM 비용 데이터를 Datadog에 주기적으로 업로드해요.

1단계: config.yaml 파일을 만들고 litellm_settings: success_callback 설정

model_list:
  - model_name: gpt-5.6-luna
    litellm_params:
      model: gpt-5.6-luna
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

동작 방식(How it works)

  • LiteLLM은 비용을 프로바이더·모델·날짜·태그별로 메모리에서 집계해요.
  • Custom Costs API에는 DD_APP_KEY가 필요해요.
  • 비용은 주기적으로 업로드(플러시)돼요.

Datadog Tracing

ddtrace-run을 사용해 litellm 프록시에서 Datadog Tracing을 활성화해요.

DD Tracer: docker run 명령에 USE_DDTRACE=true를 전달해 주세요. USE_DDTRACE=true이면 프록시가 litellm 대신 ddtrace-run litellmENTRYPOINT로 실행해요.

DD Profiler:

docker run 명령에 USE_DDPROFILER=true를 전달해 주세요. 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:latest \
    --config /app/config.yaml --detailed_debug

DD 변수 설정 (DD_SERVICE 등)

LiteLLM은 다음 Datadog 환경 변수 커스터마이징을 지원해요.

환경 변수 설명 기본값 필수
DD_API_KEY 인증용 Datadog API 키(직접 API 필수, 에이전트는 선택) 없음 조건부*
DD_SITE Datadog 사이트(예: "us5.datadoghq.com")(직접 API 필수) 없음 조건부*
LITELLM_DD_AGENT_HOST DataDog 에이전트의 호스트명 또는 IP(예: "localhost"). 설정 시 로그가 직접 API 대신 에이전트로 전송 없음 ❌ 아니오
LITELLM_DD_AGENT_PORT 로그 수집용 DataDog 에이전트 포트 "10518" ❌ 아니오
DD_ENV 로그용 환경 태그(예: "production", "staging") "unknown" ❌ 아니오
DD_SERVICE 로그용 서비스 이름 "litellm-server" ❌ 아니오
DD_LLMOBS_ML_APP LLM Observability용 기본 ml_app 이름(Application 열). metadata.ml_app로 요청별 오버라이드 가능 DD_SERVICE로 폴백 ❌ 아니오
DD_SOURCE 로그용 소스 이름 "litellm" ❌ 아니오
DD_VERSION 로그용 버전 태그 "unknown" ❌ 아니오
HOSTNAME 로그용 호스트명 태그 "" ❌ 아니오
POD_NAME Pod 이름 태그(Kubernetes 배포에 유용) "unknown" ❌ 아니오
  • 직접 API 사용 시(기본값) 필수: DD_API_KEYDD_SITE가 필요해요.
  • DataDog Agent 사용 시 선택: 에이전트 모드를 쓰려면 LITELLM_DD_AGENT_HOST를 설정하세요. Datadog Logs에는 DD_API_KEYDD_SITE가 필요하지 않아요. (참고: Datadog LLM Observability에는 DD_API_KEY가 필수입니다).

자동 태그 (Automatic Tags)

LiteLLM은 요청에 정보가 있으면 다음 태그를 Datadog 로그·메트릭에 자동으로 추가해요.

태그 설명 소스
team API 키와 연결된 팀 별칭 또는 ID metadata의 user_api_key_team_alias, team_alias, user_api_key_team_id 또는 team_id
request_tag 요청에 전달된 사용자 지정 태그 로깅 페이로드의 request_tags

더 알아보기 (Learn more)