트레이스 포워딩

트레이스 포워딩

Confident AI가 수집한 트레이스에 온라인 평가 점수, 비용, 토큰 사용량이 채워지면, 그 결과물을 내가 운영하는 OTLP 컬렉터로 계속 보내고 싶을 때가 있어요. 트레이스 포워딩(trace forwarding)은 코드 없이 이 작업을 처리해 줍니다.

포워딩은 완전히 서버 측에서 동작해요. 대시보드에서 컬렉터 엔드포인트를 Confident AI에 지정하면, 그 뒤로 수집되는 새 트레이스에 대해 자동으로 포워딩이 이루어집니다. SDK, exporter, 애플리케이션 변경은 필요 없어요.

포워딩은 트레이스 브로드캐스팅의 아웃바운드 거울상입니다. 브로드캐스팅에서는 내 파이프라인이 각 트레이스의 사본을 Confident AI 안으로 보내요. 포워딩에서는 Confident AI가 각 트레이스를 밖으로 내 컬렉터로 보내요 — 평가 결과가 채워진 뒤에요. 아래 포워딩 vs. 브로드캐스팅을 참고하세요.

출처: 문서

본문

개요

트레이스가 수집·평가되면, 팀은 그 데이터를 자신의 시스템에도 담고 싶을 때가 많아요. 포워딩은 다음과 같은 경우에 유용합니다.

  • 중앙 집중 옵저버빌리티 — 이미 운영 중인 APM이나 트레이스 백엔드(Datadog, Grafana Tempo, Jaeger)에 (평가 점수·비용이 담긴) LLM 트레이스를 넣기
  • 장기 보관 / 규정 준수 — 모든 트레이스 사본을 자체 웨어하우스나 데이터 저장소에 보관
  • 다운스트림 파이프라인 — API를 폴링하지 않고 평가 결과를 자체 대시보드, 알림, 데이터 레이크로 공급

핵심 속성:

  • 서버 측 — 대시보드에서 프로젝트별로 구성하며, 설치하거나 실행할 것이 없음
  • 채워진(enriched) — 포워딩되는 스팬에는 Confident AI가 계산한 confident.*와 gen_ai.* 속성, 온라인 평가의 메트릭 수집 점수가 포함. 이것은 수집 이후에만 존재하는 데이터
  • 표준 OTLP — 페이로드는 OTLP/HTTP protobuf라서, 어떤 OTLP 호환 컬렉터든 커스텀 통합 없이 받을 수 있음

동작 방식

sequenceDiagram
    participant App as Your Application
    participant Confident as Confident AI
    participant Evals as Online Evals
    participant Collector as Your OTLP Collector

    App->>Confident: Ingest trace (spans)
    Confident->>Evals: Run metric collections
    Evals-->>Confident: Scores, reasons
    Note over Confident: Wait until the trace settles<br/>(~1 min, after eval results land)
    Confident->>Collector: POST OTLP/HTTP protobuf<br/>(enriched spans + your headers)
  • 타이밍. 트레이스가 끝나고 얼마 지나지 않아, 새 스팬이 없이 조용해진 지 약 1분이 지나면 포워딩돼요. Confident AI는 온라인 평가 결과가 계산되어 페이로드에 포함되도록 일부러 기다립니다.
  • 전달. 일시적 실패(HTTP 429, 5xx, 네트워크 오류, 타임아웃)는 백오프를 두고 자동으로 재시도돼요. 전달은 적어도 한 번(at-least-once) 이며, 포워딩되는 각 트레이스는 안정적인 트레이스 ID를 유지합니다 — 그래서 재시도 후 중복을 받으면 트레이스 ID로 중복 제거하면 돼요.
  • 전송. Confident AI는 HTTP에 protobuf 인코딩(Content-Type: application/x-protobuf)으로 OTLP를 보내요. gRPC는 지원되지 않으며, 엔드포인트는 HTTPS여야 합니다.

포워딩 커넥터 설정

포워딩 커넥터(forwarding connector) 는 하나의 목적지입니다: 엔드포인트, 인증 헤더, 선택적 환경 필터로 이루어져요. 프로젝트당 최대 3개의 커넥터를 구성할 수 있습니다. 커넥터 관리에는 trace:evaluate 권한이 필요해요.

Forwarding 탭 열기

Project Settings → Exports → Forwarding로 가서 Add connector를 클릭하세요.

목적지 구성

커넥터를 채우세요.

  • Name — 알아보기 쉬운 라벨, 예: Snowflake production
  • Collector endpoint — 컬렉터의 HTTPS OTLP 트레이스 엔드포인트, 예: https://collector.example.com/v1/traces
  • Environments — 포워딩할 환경. 비워 두면 모두 포워딩
  • Headers — 컬렉터가 요구하는 인증 헤더, 예: Authorization: Bearer ... 또는 x-api-key. 헤더 값은 저장 후 숨겨짐

연결 테스트

Test connection을 클릭합니다. Confident AI가 헤더와 함께 최소한의 OTLP 테스트 스팬을 엔드포인트로 보내고, 컬렉터에 도달 가능한지 알려줘요.

저장

Save connector를 클릭합니다. 그 시점부터 수집되는 트레이스에 대해 포워딩이 자동으로 시작돼요. 각 커넥터의 토글을 사용해 구성을 삭제하지 않고 일시 중지·재개할 수 있어요.

엔드포인트는 공개적으로 도달 가능한 HTTPS URL이어야 합니다. Confident AI는 내부 또는 라우팅 불가 주소를 거부해요.

무엇이 포워딩되나

각 Confident AI 트레이스는 원래의 스팬 트리, 이름, 타임스탬프, 오류 상태를 유지하는 OTLP 트레이스로 변환됩니다. 스팬은 Confident AI 전반에서 쓰이는 동일한 confident.* 및 GenAI 시맨틱 컨벤션 gen_ai.* 속성을 담고, 수집 중에 추가된 enrichment — 특히 온라인 평가 점수 — 도 담아요.

가독성을 위해 protobuf에서 디코딩한 단일 LLM 스팬은 대략 이렇게 생겼어요.

{
  "resource": {
    "service.name": "confident-ai",
    "confident.project_id": "proj_abc123",
    "deployment.environment": "production"
  },
  "span": {
    "name": "generate_answer",
    "attributes": {
      "confident.span.type": "llm",
      "gen_ai.system": "openai",
      "gen_ai.request.model": "gpt-4o",
      "gen_ai.usage.input_tokens": 412,
      "gen_ai.usage.output_tokens": 87,
      "confident.metric.answer_relevancy.score": 0.92,
      "confident.metric.answer_relevancy.success": true
    }
  }
}

위 스팬별 속성 외에도, 포워딩되는 트레이스에는 트레이스 수준 컨텍스트(이름, 태그, 스레드, 사용자, 고객), 평가 점수와 사유, 사람이 남긴 주석, 커스텀 메타데이터가 포함돼요 — 모두 confident.* 네임스페이스 아래에요. 전체 속성 용어집은 OpenTelemetry 페이지의 속성 매핑을 참고하세요.

포워딩되는 스팬은 표준 OTLP와 GenAI 컨벤션을 따르기 때문에, 내 컬렉터는 Confident AI를 다른 OTLP 소스처럼 취급할 수 있어요. 백엔드 앞에 OpenTelemetry Collector를 두고 Confident AI를 건드리지 않고 스팬을 라우팅·필터링·변환할 수 있습니다.

커넥터 모니터링

각 커넥터는 Forwarding 탭에서 최근 전달 상태를 보여줘요.

  • Last forwarded — 트레이스가 가장 최근에 전달된 시각(또는 Never)
  • Delivered / failed — 누적 성공·실패 횟수
  • Last error — 전달 실패 시 표시되는 가장 최근 오류 메시지

꺼 둔 커넥터는 Currently disabled 배지를 표시하고 재활성화할 때까지 포워딩을 멈춰요. 커넥터를 삭제하면 즉시 해당 컬렉터로의 포워딩이 중단됩니다.

포워딩 vs. 브로드캐스팅

둘 다 OTLP 트레이스를 내 시스템으로 가져오지만, 방향과 트레이스 수명 주기 동안의 시점이 반대예요.

트레이스 포워딩(이 페이지) 트레이스 브로드캐스팅
방향 Confident AI → 내 컬렉터 내 앱 → Confident AI(및 다른 곳)
실행 위치 서버 측, Confident AI 안에서 클라이언트 측, 내 파이프라인 또는 SDK
설정 방식 대시보드, 코드 없음 Collector 구성 또는 SDK exporter
페이로드 평가 점수와 비용이 채워진 상태 앱이 만든 그대로의 원시 스팬
언제 쓰나 내 스택에 Confident AI의 평가된 트레이스를 원할 때 여러 백엔드에 원시 트레이스 사본을 원할 때

브로드캐스팅은 Confident AI에 도달하기 전에 웨어하우스에 원시 스팬이 필요할 때 쓰고, 포워딩은 수집 이후에 Confident AI의 평가된 트레이스를 내 스택에 넣고 싶을 때 써요. 둘은 상호 보완적입니다.

더 알아보기