Docs » Get started with the Splunk Distribution of the OpenTelemetry Collector » Collector components » Collector components: Exporters » OTLP exporter

OTLP exporter 🔗

The OTLP exporter sends metrics, traces, and logs through gRPC using the OTLP format. The supported pipeline types are traces, metrics, and logs. See Process your data with pipelines for more information. By default, this exporter requires TLS and provides queued retry capabilities.

To send OTLP data through HTTP, use the OTLP/HTTP exporter. Learn how at OTLP/HTTP exporter.

If you need to bypass the Collector and send data in the OTLP format directly to Splunk Observability Cloud:

Read more about the OTLP format at the OTel repo OpenTelemetry Protocol Specification .

Note

For information on the OTLP receiver, see OTLP receiver.

Get started 🔗

Note

This component is included in the default configuration of the Splunk Distribution of the OpenTelemetry Collector when deploying in data forwarding (gateway) mode. See Collector deployment modes for more information.

For details about the default configuration, see Configure the Collector for Kubernetes with Helm, Collector for Linux default configuration, or Collector for Windows default configuration. You can customize your configuration any time as explained in this document.

Follow these steps to configure and activate the component:

  1. Deploy the Splunk Distribution of the OpenTelemetry Collector to your host or container platform:

  1. Configure the exporter as described in the next section.

  2. Restart the Collector.

Sample configuration 🔗

To activate the component, add otlp to the exporters section of your configuration file:

exporters:
  otlp:

The OTLP exporter is included in the Splunk Distribution of OpenTelemetry Collector default configuration in all data pipelines: metrics, traces, and logs.

service:
  pipelines:
    metrics:
      processors: [otlp]
    logs:
      processors: [otlp]
    traces:
      processors: [otlp]

The following settings are required:

  • endpoint. Address to which the exporter is going to send OTLP data, using the gRPC protocol.

    • No default value.

    • gRPC supports DNS as the default name-system. To learn more about the valid name syntax, see gRCP Name Resolution in GitHub.

    • If you’re using a scheme of https, then client transport security is enabled and overrides the insecure setting.

  • tls. See the exporter’s Settings in this document for the full set of available options, and learn more at Configure TLS.

Configuration examples 🔗

This is a sample configuration for the exporter:

exporters:
  otlp:
    endpoint: otelcol2:4317
    tls:
      cert_file: file.cert
      key_file: file.key
  otlp/2:
    endpoint: otelcol2:4317
    tls:
      insecure: true

Configure gzip compression 🔗

By default, gzip compression is enabled. To turn it off, use the following configuration:

exporters:
  otlp:
    ...
    compression: none

Settings 🔗

The following table shows the configuration options for the OTLP exporter:

NameTypeDefaultDescription
timeoutint645s

Timeout is the timeout for every attempt to send data to the backend. A zero timeout means no timeout.

sending_queue (see fields)struct

QueueSettings defines configuration for queueing batches before sending to the consumerSender.

retry_on_failure (see fields)struct
batcher (see fields)struct

Config defines a configuration for batching requests based on a timeout and a minimum number of items. MaxSizeItems defines batch splitting functionality if it's more than zero. Experimental: This API is at the early stage of development and may change without backward compatibility until https://github.com/open-telemetry/opentelemetry-collector/issues/8122 is resolved.

endpointstring
compressionstringgzip
tls (see fields)struct

ClientConfig contains TLS configurations that are specific to client connections in addition to the common configurations. This should be used by components configuring TLS client connections.

keepalive (see fields)ptr
read_buffer_sizeint
write_buffer_sizeint524288
wait_for_readyboolfalse
headersmap
balancer_namestring
authoritystring
auth (see fields)ptr

Fields of sending_queue

NameTypeDefaultDescription
enabledbooltrue

Enabled indicates whether to not enqueue batches before sending to the consumerSender.

num_consumersint10

NumConsumers is the number of consumers from the queue. Defaults to 10. If batching is enabled, a combined batch cannot contain more requests than the number of consumers. So it's recommended to set higher number of consumers if batching is enabled.

queue_sizeint1000

QueueSize is the maximum number of batches allowed in queue at a given time.

storageptr

StorageID if not empty, enables the persistent storage and uses the component specified as a storage extension for the persistent queue

Fields of retry_on_failure

NameTypeDefaultDescription
enabledbooltrue
initial_intervalint645s
randomization_factorfloat64
multiplierfloat64
max_intervalint6430s
max_elapsed_timeint645m0s

Fields of batcher

NameTypeDefaultDescription
enabledboolfalse

Enabled indicates whether to not enqueue batches before sending to the consumerSender.

flush_timeoutint64200ms

FlushTimeout sets the time after which a batch will be sent regardless of its size.

min_size_itemsint8192

MinSizeItems is the number of items (spans, data points or log records for OTLP) at which the batch should be sent regardless of the timeout. There is no guarantee that the batch size always greater than this value. This option requires the Request to implement RequestItemsCounter interface. Otherwise, it will be ignored.

max_size_itemsint

MaxSizeItems is the maximum number of the batch items, i.e. spans, data points or log records for OTLP. If the batch size exceeds this value, it will be broken up into smaller batches if possible. Setting this value to zero disables the maximum size limit.

Fields of tls

NameTypeDefaultDescription
ca_filestring

Path to the CA cert. For a client this verifies the server certificate. For a server this verifies client certificates. If empty uses system root CA. (optional)

ca_pemstring

In memory PEM encoded cert. (optional)

include_system_ca_certs_poolboolfalse

If true, load system CA certificates pool in addition to the certificates configured in this struct.

cert_filestring

Path to the TLS cert to use for TLS required connections. (optional)

cert_pemstring

In memory PEM encoded TLS cert to use for TLS required connections. (optional)

key_filestring

Path to the TLS key to use for TLS required connections. (optional)

key_pemstring

In memory PEM encoded TLS key to use for TLS required connections. (optional)

min_versionstring

MinVersion sets the minimum TLS version that is acceptable. If not set, TLS 1.2 will be used. (optional)

max_versionstring

MaxVersion sets the maximum TLS version that is acceptable. If not set, refer to crypto/tls for defaults. (optional)

cipher_suitesslice

CipherSuites is a list of TLS cipher suites that the TLS transport can use. If left blank, a safe default list is used. See https://go.dev/src/crypto/tls/cipher_suites.go for a list of supported cipher suites.

reload_intervalint64

ReloadInterval specifies the duration after which the certificate will be reloaded If not set, it will never be reloaded (optional)

insecureboolfalse

In gRPC and HTTP when set to true, this is used to disable the client transport security. See https://godoc.org/google.golang.org/grpc#WithInsecure for gRPC. Please refer to https://godoc.org/crypto/tls#Config for more information. (optional, default false)

insecure_skip_verifyboolfalse

InsecureSkipVerify will enable TLS but not verify the certificate.

server_name_overridestring

ServerName requested by client for virtual hosting. This sets the ServerName in the TLSConfig. Please refer to https://godoc.org/crypto/tls#Config for more information. (optional)

Fields of keepalive

NameTypeDefaultDescription
timeint64
timeoutint64
permit_without_streamboolfalse

Fields of auth

NameTypeDefaultDescription
authenticatorstruct

ID represents the identity for a component. It combines two values:

  • type - the Type of the component.
  • name - the name of that component. The component ID (combination type + name) is unique for a given component.Kind.

Troubleshooting 🔗

If you are a Splunk Observability Cloud customer and are not able to see your data in Splunk Observability Cloud, you can get help in the following ways.

Available to Splunk Observability Cloud customers

Available to prospective customers and free trial users

  • Ask a question and get answers through community support at Splunk Answers .

  • Join the Splunk #observability user group Slack channel to communicate with customers, partners, and Splunk employees worldwide. To join, see Chat groups in the Get Started with Splunk Community manual.

This page was last updated on Feb 11, 2025.