트레이싱
트레이싱 (Tracing)
파이프라인을 프로덕션에서 운영하다 보면 "이 요청이 어디서 시간을 가장 많이 썼지?", "컴포넌트들이 어떤 순서로 실행됐지?" 같은 질문이 생겨요. 트레이스(trace) 는 요청이 애플리케이션을 통과하는 흐름을 문서화한 것으로, 프로덕션에서 애플리케이션을 모니터링하는 데 아주 중요해요. 트레이스를 보면 파이프라인 컴포넌트의 실행 순서를 이해하고, 파이프라인이 어디서 가장 많은 시간을 쓰는지 분석할 수 있습니다.
계측(instrumentation)된 애플리케이션은 보통 트레이스를 트레이스 수집기(collector)나 트레이싱 백엔드에 보내요. Haystack은 여러 백엔드를 기본 지원하고, 추가로 원하는 provider를 위한 지원도 빠르게 구현할 수 있어요.
출처: Tracing (공식 문서)
지원되는 트레이서 (Supported Tracers)
| 트레이서 | 설명 |
|---|---|
| OpenTelemetry | OpenTelemetryTracer 또는 OpenTelemetryConnector 컴포넌트로 OpenTelemetry 호환 백엔드 어디든 트레이스를 보내요. 로컬 개발용 Jaeger 설정을 포함합니다. |
| MLflow | MLflow의 네이티브 Haystack 트레이싱 지원으로 트레이스를 포착해요. |
| Datadog | DatadogTracer 또는 DatadogConnector 컴포넌트로 Datadog에서 파이프라인을 트레이스해요. |
| Langfuse | LangfuseTracer 또는 LangfuseConnector 컴포넌트로 Langfuse UI에서 파이프라인을 트레이스해요. |
| Weights & Biases Weave | WeaveTracer 또는 WeaveConnector 컴포넌트로 Weights & Biases에서 파이프라인 실행을 트레이스하고 시각화해요. |
| Rhesis | RhesisConnector 컴포넌트로 Rhesis에서 파이프라인과 Agent 실행을 트레이스하고, 테스트 실행 및 대화 턴과 트레이스를 연관지어요. |
| LoggingTracer | 백엔드 설정 없이 로그로 파이프라인을 통과하는 데이터를 실시간으로 검사해요. |
| Custom Tracer | Tracer 인터페이스를 구현해 어떤 트레이싱 백엔드든 연결해요. |
트레이싱 켜고 끄기 (Enabling and Disabling Tracing)
Haystack은 자동으로 트레이싱을 켜지 않아요. 켜려면 원하는 트레이서로 haystack.tracing.enable_tracing(...)를 호출하거나, OpenTelemetryConnector나 DatadogConnector 같은 트레이싱 커넥터 컴포넌트를 파이프라인에 추가하면 됩니다.
켠 트레이서를 끄려면:
from haystack.tracing import disable_tracing
disable_tracing()
콘텐츠 트레이싱 (Content Tracing)
Haystack은 파이프라인 컴포넌트의 입력·출력 값을 트레이스하는 것도 지원해요. 파이프라인 실행을 단계별로 조사할 때 유용하죠.
기본적으로 이 동작은 꺼져 있어서, 민감한 사용자 정보가 트레이싱 백엔드로 보내지는 걸 막아요.
콘텐츠 트레이싱을 켜는 방법은 두 가지예요.
- Haystack 애플리케이션을 실행할 때 환경 변수
HAYSTACK_CONTENT_TRACING_ENABLED를true로 설정하기
— 또는 —
- Python에서 명시적으로 콘텐츠 트레이싱을 켜기
from haystack import tracing
tracing.tracer.is_content_tracing_enabled = True