트레이스 포워딩
트레이스 포워딩
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의 평가된 트레이스를 내 스택에 넣고 싶을 때 써요. 둘은 상호 보완적입니다.
더 알아보기
- 트레이스 브로드캐스팅 — 같은 트레이스를 여러 목적지로 보내는 또 다른 방향
- 수동 계측 — 속성 매핑과 OTLP 엔드포인트 다루기
- 분산 추적 — 서비스 경계를 넘나드는 스팬 연결