트레이싱

트레이싱 (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(...)를 호출하거나, OpenTelemetryConnectorDatadogConnector 같은 트레이싱 커넥터 컴포넌트를 파이프라인에 추가하면 됩니다.

켠 트레이서를 끄려면:

from haystack.tracing import disable_tracing

disable_tracing()

콘텐츠 트레이싱 (Content Tracing)

Haystack은 파이프라인 컴포넌트의 입력·출력 값을 트레이스하는 것도 지원해요. 파이프라인 실행을 단계별로 조사할 때 유용하죠.

기본적으로 이 동작은 꺼져 있어서, 민감한 사용자 정보가 트레이싱 백엔드로 보내지는 걸 막아요.

콘텐츠 트레이싱을 켜는 방법은 두 가지예요.

  • Haystack 애플리케이션을 실행할 때 환경 변수 HAYSTACK_CONTENT_TRACING_ENABLEDtrue로 설정하기

— 또는 —

  • Python에서 명시적으로 콘텐츠 트레이싱을 켜기
from haystack import tracing

tracing.tracer.is_content_tracing_enabled = True

더 알아보기 (Learn more)