Skip to main content
Version: 3.1-unstable

Tracing

Traces document the flow of requests through your application and are vital for monitoring applications in production. This helps you understand the execution order of your pipeline components and analyze where your pipeline spends the most time.

Instrumented applications typically send traces to a trace collector or a tracing backend. Haystack provides out-of-the-box support for several backends, and you can also quickly implement support for additional providers of your choosing.

Supported Tracers

TracerDescription
OpenTelemetrySend traces to any OpenTelemetry-compatible backend using the OpenTelemetryTracer or the OpenTelemetryConnector component. Includes a Jaeger setup for local development.
MLflowCapture traces with MLflow's native Haystack tracing support.
DatadogTrace your pipelines with Datadog using the DatadogTracer or the DatadogConnector component.
LangfuseTrace your pipelines with the Langfuse UI using the LangfuseTracer or the LangfuseConnector component.
Weights & Biases WeaveTrace and visualize pipeline execution in Weights & Biases using the WeaveTracer or the WeaveConnector component.
LoggingTracerInspect the data flowing through your pipeline in real time through logs, with no backend setup.
Custom TracerConnect any tracing backend by implementing the Tracer interface.

Enabling and Disabling Tracing

Haystack never enables tracing automatically. To enable it, either call haystack.tracing.enable_tracing(...) with the tracer of your choice, or add a tracing connector component such as the OpenTelemetryConnector or the DatadogConnector to your pipeline.

To disable an enabled tracer:

python
from haystack.tracing import disable_tracing

disable_tracing()

Content Tracing

Haystack also allows you to trace your pipeline components' input and output values. This is useful for investigating your pipeline execution step by step.

By default, this behavior is disabled to prevent sensitive user information from being sent to your tracing backend.

To enable content tracing, there are two options:

  • Set the environment variable HAYSTACK_CONTENT_TRACING_ENABLED to true when running your Haystack application

— or —

  • Explicitly enable content tracing in Python:

    python
    from haystack import tracing

    tracing.tracer.is_content_tracing_enabled = True