Distributed Tracing in the new Splunk Agent Observability Python SDK is under construction. Please expect code details to change until Distributed Tracing is generally available.
Distributed Traces in the Splunk Agent Observability UI
Inputs and outputs from distributed traces are combined into one view in the UI.
- Retrieval Service: A FastAPI service running on port 8000 that handles information retrieval.
- Orchestrator Service: The main client that coordinates the RAG pipeline by calling the retrieval service.
Example: Two-service RAG pipeline
A code example of setting up Distributed Tracing is available in this Python SDK repository location. This code example follows a client-server model where:- Client starts a trace
- Client makes HTTP requests to one or more server(s)
- Server processes the request and reports back to the client
- Client concludes the trace
How to enable Distributed mode
To enable Distributed Tracing, specify themode in your .env file:
Beta limitations for Distributed Tracing
Distributed tracing does not currently support:- Fire-and-forget patterns: Where the client starts a span and doesn’t wait for the server to complete. The client must await the server’s response.
-
Parallel nested workflows: Starting multiple child workflows in parallel using
asyncio.gather()where each child makes its own HTTP requests to servers.Note: This limitation will be addressed in a future release for both distributed tracing and default modes. - Integrations - Distributed Tracing does not yet support the following integrations: ADK, OTel, LangChain
Troubleshooting Tips
Traces not linking across services?- Ensure you’re passing
get_tracing_headers()to downstream HTTP requests - Verify the server has
TracingMiddlewareconfigured - Check that both services have distributed mode enabled
- Confirm that the server is sending responses back to the client (not fire-and-forget)
- Verify that the client awaits the server response before concluding the trace