Sumo Logic

Sumo Logic

LiteLLM 로그를 관측성, 모니터링, 분석을 위해 Sumo Logic으로 보낼 수 있어요.

출처: 문서

본문

Sumo Logic은 애플리케이션과 인프라에 대한 실시간 인사이트를 제공하는 클라우드 네이티브 머신 데이터 분석 플랫폼이에요. https://www.sumologic.com/

사전 준비 (Pre-Requisites)

  1. https://www.sumologic.com/ 에서 Sumo Logic 계정 생성
  2. Sumo Logic에서 HTTP Logs and Metrics 소스 설정:
    • Manage Data > Collection > Collection으로 이동
    • Hosted Collector 옆 Add Source 클릭
    • HTTP Logs & Metrics 선택
    • 생성된 URL 복사 (인증 토큰 포함)
    • 자세한 내용은 HTTP Logs & Metrics Source 문서 참조
  3. uv add litellm

빠른 시작 (Quick Start)

단 2줄의 코드로 LLM 응답을 Sumo Logic에 즉시 기록할 수 있어요. Sumo Logic HTTP Source URL에는 인증 토큰이 포함되어 있으므로 별도의 API 키가 필요하지 않아요.

SDK

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-5.6-luna",
  messages=[
    {"role": "user", "content": "Hi 👋 - I'm testing Sumo Logic integration"}
  ]
)

LiteLLM Proxy

config.yaml 설정:

model_list:
  - model_name: gpt-5.6-luna
    litellm_params:
      model: openai/gpt-5.6-luna
      api_key: os.environ/OPENAI_API_KEY

litellm_settings:
  callbacks: ["sumologic"]

environment_variables:
  SUMOLOGIC_WEBHOOK_URL: os.environ/SUMOLOGIC_WEBHOOK_URL

프록시 시작:

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 ***" \
  -d '{
  "model": "gpt-5.6-luna",
  "messages": [
    {
      "role": "user",
      "content": "Hey, how are you?"
    }
  ]
}'

기록되는 데이터 (What Data is Logged?)

LiteLLM은 Standard Logging Payload를 Sumo Logic으로 전송하며, 여기에는 다음이 포함돼요:

  • 요청 세부 정보: 모델, 메시지, 파라미터
  • 응답 세부 정보: 완료 텍스트, 토큰 사용량, 지연 시간
  • 메타데이터: 사용자 ID, 커스텀 메타데이터, 타임스탬프
  • 비용 추적: 토큰 사용량에 기반한 응답 비용

예시 페이로드:

{
  "id": "chatcmpl-123",
  "call_type": "litellm.completion",
  "model": "gpt-5.6-luna",
  "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.000008,
  "start_time": "2024-01-01T00:00:00",
  "end_time": "2024-01-01T00:00:01"
}

고급 구성 (Advanced Configuration)

로그 형식 (Log Format)

Sumo Logic 통합은 기본적으로 NDJSON(줄바꿈 구분 JSON) 형식을 사용해요. 이 형식은 Sumo Logic의 파싱 기능에 최적이며 Field Extraction Rules가 수집 시점에 동작할 수 있게 해요.

NDJSON 형식

각 로그 항목은 HTTP 요청에서 별도의 줄로 전송돼요:

{"id":"chatcmpl-1","model":"gpt-5.6-luna","response_cost":0.0001,...}
{"id":"chatcmpl-2","model":"gpt-5.6-terra","response_cost":0.0003,...}
{"id":"chatcmpl-3","model":"gpt-5.6-luna","response_cost":0.0001,...}

Field Extraction Rules(FERs)에 대한 이점

NDJSON 형식을 사용하면 Field Extraction Rules를 바로 만들 수 있어요:

_sourceCategory=litellm/logs| json field=_raw "model", "response_cost", "user" as model, cost, user

NDJSON 이전(JSON 배열 형식)에는:

  • 필요한 parse regex ... 멀티 워크어라운드
  • FERs가 수집 시점에 파싱할 수 없음
  • 쿼리 시점 파싱이 대시보드 성능에 영향

NDJSON 이후에는:

  • ✅ FERs가 수집 시점에 필드 파싱
  • ✅ 쿼리 시점 워크어라운드 불필요
  • ✅ 더 나은 대시보드 성능
  • ✅ 더 단순한 쿼리 문법

로그 형식 변경 (Changing the Log Format, 고급)

로그 형식을 변경해야 한다면(Sumo Logic에서는 권장하지 않음):

callback_settings:
  sumologic:
    callback_type: generic_api
    callback_name: sumologic
    log_format: json_array  # Override to use JSON array instead

배칭 설정 (Batching Settings)

LiteLLM이 Sumo Logic으로 보내기 전에 로그를 배칭하는 방식을 제어해요:

SDK

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 Proxy

litellm_settings:
  callbacks: ["sumologic"]

environment_variables:
  SUMOLOGIC_WEBHOOK_URL: os.environ/SUMOLOGIC_WEBHOOK_URL

압축 데이터 (Compressed Data)

Sumo Logic은 압축 데이터(gzip 또는 deflate)를 지원해요. LiteLLM은 유익할 때 압축을 자동으로 처리해요.

이점:

  • 네트워크 사용량 감소
  • 더 빠른 메시지 전달
  • 더 낮은 데이터 전송 비용

Sumo Logic에서 로그 조회 (Query Logs in Sumo Logic)

로그가 Sumo Logic으로 흘러가면 Sumo Logic 쿼리 언어로 조회할 수 있어요:

_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

인증 (Authentication)

Sumo Logic HTTP Source URL에는 인증 토큰이 포함되어 있으므로 SUMOLOGIC_WEBHOOK_URL 환경 변수만 설정하면 돼요.

보안 모범 사례:

  • HTTP Source URL을 비밀로 유지 (인증 토큰 포함)
  • 환경 변수나 시크릿 관리에 저장
  • 손상 시 URL 재생성 (Sumo Logic UI에서)
  • 환경(dev, staging, prod)마다 별도 HTTP Source 사용

Sumo Logic URL 가져오기 (Getting Your Sumo Logic URL)

  1. Sumo Logic에 로그인
  2. Manage Data > Collection > Collection으로 이동
  3. Hosted Collector 옆 Add Source 클릭
  4. HTTP Logs & Metrics 선택
  5. 소스 구성:
    • 이름: LiteLLM Logs
    • Source Category: litellm (선택 사항이지만 쿼리에 도움)
  6. Save 클릭
  7. 표시된 URL 복사 - 다음과 같이 보임:
https://collectors.sumologic.com/receiver/v1/http/ZaVnC4dhaV39Tn37...

트러블슈팅 (Troubleshooting)

Sumo Logic에 로그가 표시되지 않음 (Logs not appearing in Sumo Logic)

  • URL 확인: SUMOLOGIC_WEBHOOK_URL이 올바르게 설정됐는지 확인
  • HTTP Source 확인: Sumo Logic UI에서 활성 상태인지 확인
  • 배칭 대기: 로그는 배치로 전송되므로 60초 대기
  • 오류 확인: LiteLLM에서 디버그 로깅 활성화:
litellm.set_verbose = True

URL 형식 (URL Format)

URL은 Sumo Logic의 완전한 HTTP Source URL이어야 해요:

✅ 올바름: https://collectors.sumologic.com/receiver/v1/http/ZaVnC4dhaV39Tn37...

인증 오류 (No authentication errors)

인증 오류가 발생하면 Sumo Logic에서 HTTP Source URL을 재생성하세요:

  1. Sumo Logic에서 HTTP Source로 이동
  2. 설정 아이콘 클릭
  3. Show URL 클릭
  4. Regenerate URL 클릭
  5. SUMOLOGIC_WEBHOOK_URL 환경 변수 업데이트

더 알아보기 (Learn more)