splunk-ao-a2a instrumentor — giving you a single distributed trace across agents, including LLM calls, tool use, and cross-agent handoffs.
Setup
1
Installation
Add the OpenTelemetry packages to your project:The
opentelemetry-api and opentelemetry-sdk packages provide the core OpenTelemetry functionality. The opentelemetry-exporter-otlp package enables sending traces to Splunk Agent Observability’s OTLP endpoint.2
Create environment variables for your Splunk Agent Observability settings
Set environment variables for your Splunk Agent Observability settings, for example in a
.env file.
These environment variables are consumed by the SplunkAOSpanProcessorto authenticate
and route traces to the correct Splunk Agent Observability Project and Agent Stream:3
Self hosted deployments: Set the OTel endpoint
Skip this step if you are using a hosted version.
-
A cloud deployment, then you don’t need to provide a custom OTel endpoint.
The default endpoint
<your-splunk-ao-api-url>/otel/traceswill be used automatically. -
A self-hosted deployment, replace the
<your-splunk-ao-api-url>/otel/tracesendpoint with your deployment URL. The format of this URL is based on your console URL, appending/otel/traces.
SPLUNK_AO_CONSOLE_URL environment variable. For example:4
Initialize and create the Splunk Agent Observability span processor
The
SplunkAOSpanProcessor automatically configures authentication
and metadata using your environment variables. It also:- Auto-builds OTLP headers using your Splunk Agent Observability credentials
- Configures the correct OTLP trace endpoint
- Registers a batch span processor that exports traces to Splunk Agent Observability
5
Install and instrument A2A
a2a-sdk client and server methods are now traced automatically.How it works
When Agent A calls Agent B, trace context is propagated through A2A message metadata. Both agents’ spans appear in one distributed trace:context_id is mapped to session.id, grouping all interactions in the same conversation into one Splunk Agent Observability session.
Full example
Two LangGraph agents in one script. Agent A (orchestrator) plans, delegates to Agent B via A2A, then synthesizes. Agent B (researcher) uses a tool and LLM to answer. Copy-paste and run..env