| Concern | What the exporter does |
|---|---|
| Serialization | Converts spans into Protobuf, JSON, or another wire format. |
| Transport | Sends the bytes over HTTP, gRPC, or another protocol. |
| Authentication | Attaches API keys, tokens, or TLS credentials. |
| Compression | Reduces payload size (typically gzip). |
| Timeouts | Protects you from slow or broken networks. |
Exporter timeouts are different from Span Processor timeouts. The exporter timeout protects you from slow networks; the processor timeout protects you from slow or overloaded export pipelines. Set the processor timeout higher than the exporter timeout — see the pitfalls section below.
OTLP (OpenTelemetry Protocol)
OTLP is the standardized wire format and transport for OpenTelemetry data. Arize AX accepts spans over OTLP, and most OTel-compatible backends do too. OTLP defines three things:| Layer | Options |
|---|---|
| Data model | The structure of spans, metrics, and logs on the wire. |
| Serialization | Protocol Buffers (compact binary format) or JSON. |
| Transport | gRPC or HTTP. |
Transport: gRPC vs HTTP
OTLP supports two transports. They’re not identical — pick based on your environment.| OTLP/gRPC | OTLP/HTTP | |
|---|---|---|
| Serialization | Protobuf only | Protobuf or JSON |
| Underlying protocol | HTTP/2 (via gRPC) | Standard HTTP POST |
| Default port | 4317 | 4318 |
| Strengths | Best for production, high-throughput workloads | Easier through proxies, meshes, and corporate firewalls; JSON is easier to debug |
| Trade-offs | Some proxies and load balancers don’t handle gRPC well | Slightly higher overhead than gRPC |
OTLP/gRPC Configuration
OTLP/HTTP Configuration
- No
credentialsconstructor argument — TLS is automatic when the endpoint starts withhttps://. For client certificates, passcertificate_file,client_key_file, orclient_certificate_file. - No
insecure=Trueoption — controlled entirely by thehttp://vshttps://scheme on the endpoint. - No
protocolconstructor argument. To switch the body format betweenhttp/protobuf(default) andhttp/json, setOTEL_EXPORTER_OTLP_TRACES_PROTOCOLin the environment.
Multiple Exporters
You can attach multiple exporters to the same Tracer Provider — useful for development (export to Arize AX and to the console) or for fan-out to multiple backends.Environment Variables
You can configure the exporter entirely from the environment, which is the recommended pattern for production:| Generic | Traces-only override |
|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT | OTEL_EXPORTER_OTLP_TRACES_ENDPOINT |
OTEL_EXPORTER_OTLP_PROTOCOL | OTEL_EXPORTER_OTLP_TRACES_PROTOCOL |
OTEL_EXPORTER_OTLP_HEADERS | OTEL_EXPORTER_OTLP_TRACES_HEADERS |
OTEL_EXPORTER_OTLP_CERTIFICATE | OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE |
OTEL_EXPORTER_OTLP_INSECURE | OTEL_EXPORTER_OTLP_TRACES_INSECURE |
OTEL_EXPORTER_OTLP_COMPRESSION | OTEL_EXPORTER_OTLP_TRACES_COMPRESSION |
OTEL_EXPORTER_OTLP_TIMEOUT | OTEL_EXPORTER_OTLP_TRACES_TIMEOUT |
Common Pitfalls
A few exporter failure modes worth knowing about up front:- Wrong OTLP port or endpoint — gRPC defaults to 4317, HTTP to 4318. Mixing them up surfaces as connection refused or 404s.
- Wrong encoding for the transport — gRPC requires Protobuf. Trying to send JSON over gRPC will silently fail.
- Proxies breaking gRPC — corporate proxies, service meshes, and some load balancers don’t handle HTTP/2 well. If you see flaky gRPC errors, switch to HTTP.
- TLS mismatches — forgetting
insecure=Truewhen running against a local collector overhttp://fails. So does settinginsecure=Falseagainst anhttp://endpoint. Matchinsecureto the scheme:Trueforhttp://,False(default) forhttps://. - Exporter timeout too high — if the exporter timeout exceeds the Span Processor timeout, the processor can fire a retry while the original export is still in flight, leading to queue buildup and dropped spans.
- Spans over 4 MB hit gRPC message-size limits — very large attributes (full document text, base64 images) can blow past the gRPC default. Truncate large attributes with
TraceConfigor chunk them.