Skip to main content
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.
When two agents run in separate processes and call each other over HTTP, OpenTelemetry’s W3C traceparent header carries the trace context across the wire. Splunk Agent Observability joins all spans that share a trace ID into a single trace.
If both services are Python and use the Splunk Agent Observability SDK directly, Distributed Tracing (Beta) is simpler. Use the OTel approach when your services use different agent frameworks (Microsoft Agent Framework, Google ADK, LangChain, etc.) or different languages.

What you’ll see in Splunk Agent Observability

A single user request to Agent A that delegates to Agent B produces one trace:

Setup

.env
requirements.txt
SplunkAOSpanProcessor reads SPLUNK_AO_API_KEY, SPLUNK_AO_PROJECT, and SPLUNK_AO_AGENT_STREAM from the environment and exports OTLP directly to Splunk Agent Observability’s OTel endpoint. No collector required.

Agent A: Microsoft Agent Framework, calls Agent B

agent_a.py

Agent B: Google ADK research agent

agent_b.py

Run it

Open the otel-distributed-tracing project in Splunk Agent Observability, Agent Stream default. You’ll see one trace covering both agents: Distributed trace in Splunk Agent Observability UI showing both Agent A (Microsoft Agent Framework) and Agent B (Google ADK) spans nested under one trace

Self-hosted Splunk Agent Observability

The OTel endpoint is different from Splunk Agent Observability’s regular API endpoint and is specifically designed to receive telemetry data in the OTLP format. If you are using:
  • A cloud deployment, then you don’t need to provide a custom OTel endpoint. The default endpoint <your-splunk-ao-api-url>/otel/traces will be used automatically.
  • A self-hosted deployment, replace the <your-splunk-ao-api-url>/otel/traces endpoint with your deployment URL. The format of this URL is based on your console URL, appending /otel/traces.
Set SPLUNK_AO_API_ENDPOINT in .env; SplunkAOSpanProcessor picks it up automatically.