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:
To send metrics, use the OTLP endpoint. Find out more in the dev portal at Sending data points . Note that this option only accepts protobuf payloads.
To send traces, use the gRPC endpoint. For more information, see Send traces to Splunk Observability Cloud using the gRPC endpoint.
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:
Deploy the Splunk Distribution of the OpenTelemetry Collector to your host or container platform:
Configure the exporter as described in the next section.
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 theinsecure
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:
Name | Type | Default | Description |
---|---|---|---|
timeout | int64 | 5s | 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. | |
endpoint | string | ||
compression | string | gzip | |
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_size | int | ||
write_buffer_size | int | 524288 | |
wait_for_ready | bool | false | |
headers | map | ||
balancer_name | string | ||
authority | string | ||
auth (see fields) | ptr |
Fields of sending_queue
Name | Type | Default | Description |
---|---|---|---|
enabled | bool | true | Enabled indicates whether to not enqueue batches before sending to the consumerSender. |
num_consumers | int | 10 | 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_size | int | 1000 | QueueSize is the maximum number of batches allowed in queue at a given time. |
storage | ptr | 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
Name | Type | Default | Description |
---|---|---|---|
enabled | bool | true | |
initial_interval | int64 | 5s | |
randomization_factor | float64 | ||
multiplier | float64 | ||
max_interval | int64 | 30s | |
max_elapsed_time | int64 | 5m0s |
Fields of batcher
Name | Type | Default | Description |
---|---|---|---|
enabled | bool | false | Enabled indicates whether to not enqueue batches before sending to the consumerSender. |
flush_timeout | int64 | 200ms | FlushTimeout sets the time after which a batch will be sent regardless of its size. |
min_size_items | int | 8192 | 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_items | int | 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
Name | Type | Default | Description |
---|---|---|---|
ca_file | string | 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_pem | string | In memory PEM encoded cert. (optional) | |
include_system_ca_certs_pool | bool | false | If true, load system CA certificates pool in addition to the certificates configured in this struct. |
cert_file | string | Path to the TLS cert to use for TLS required connections. (optional) | |
cert_pem | string | In memory PEM encoded TLS cert to use for TLS required connections. (optional) | |
key_file | string | Path to the TLS key to use for TLS required connections. (optional) | |
key_pem | string | In memory PEM encoded TLS key to use for TLS required connections. (optional) | |
min_version | string | MinVersion sets the minimum TLS version that is acceptable. If not set, TLS 1.2 will be used. (optional) | |
max_version | string | MaxVersion sets the maximum TLS version that is acceptable. If not set, refer to crypto/tls for defaults. (optional) | |
cipher_suites | slice | 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_interval | int64 | ReloadInterval specifies the duration after which the certificate will be reloaded If not set, it will never be reloaded (optional) | |
insecure | bool | false | 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_verify | bool | false | InsecureSkipVerify will enable TLS but not verify the certificate. |
server_name_override | string | 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
Name | Type | Default | Description |
---|---|---|---|
time | int64 | ||
timeout | int64 | ||
permit_without_stream | bool | false |
Fields of auth
Name | Type | Default | Description |
---|---|---|---|
authenticator | struct | ID represents the identity for a component. It combines two values:
|
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
Submit a case in the Splunk Support Portal .
Contact Splunk Support .
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.