OTLP
Overview
OTLP sends telemetry data to a remote endpoint using the OpenTelemetry Protocol (OTLP). It supports both HTTP and gRPC transport protocols.
Supported types: Logs · Metrics · Traces
Authentication
OTLP supports optional authentication.
Authentication is configured using the Credential Type field.
| Parameter | Type | Description |
|---|---|---|
| Credential Type | string | Specifies the authentication mechanism used by OTLP. One of the available options must be selected. |
| Noauth | option | Disables authentication. Requests can be sent to the OTLP endpoint without credentials. |
| Oauth2 | option | The OAuth2 Extension provides OAuth2 client credentials authentication for outbound HTTP and gRPC requests from this destination by automatically obtaining and refreshing access tokens. |
Note: The Credential Type field is required. If you do not use authentication, select Noauth to disable it explicitly.
Protocol
Specifies the transport protocol used to send telemetry data from this destination.
| Parameter | Type | Default | Description |
|---|---|---|---|
| protocol | string | grpc | Specifies the transport protocol used to send telemetry data. Supported values: grpc, http. |
gRPC Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
| grpc_endpoint | string | none | Host and port of the downstream OTLP gRPC endpoint where telemetry data is sent. |
| grpc_compression | string | none | Compression algorithm used for gRPC requests to reduce payload size during transmission. |
| grpc_timeout | integer | none | Maximum time in seconds to wait for a gRPC request to complete before timing out. |
| grpc_headers | object | none | Custom key-value headers included with gRPC requests sent to the endpoint. |
HTTP Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
| http_endpoint | string | none | Base URL of the downstream OTLP HTTP endpoint where telemetry data is sent. |
| http_traces_endpoint | string | none | Custom endpoint URL used specifically for sending trace data. |
| http_logs_endpoint | string | none | Custom endpoint URL used specifically for sending log data. |
| http_metrics_endpoint | string | none | Custom endpoint URL used specifically for sending metric data. |
| http_compression | string | none | Compression algorithm applied to HTTP requests to reduce payload size. |
| http_timeout | integer | none | Maximum time to wait for an HTTP request to complete before timing out. |
| http_headers | object | none | Custom key-value headers included with requests sent to the endpoint. |
Note
- When TLS is not enabled, the HTTP endpoint should use the
httpscheme.endpoint: http://0.0.0.0:4318- When TLS is enabled, the HTTP endpoint must use the
httpsscheme and TLS configuration must be provided.endpoint: https://0.0.0.0:4318- The sending queue and retry on failure are enabled by default .
gRPC Advanced Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
| grpc_sending_queue | object | enabled by default | Enables an internal sending queue to buffer telemetry data before it is sent to the endpoint. |
| grpc_retry_on_failure | bool | true | Automatically retries failed gRPC send attempts. |
| grpc_tls.enabled | bool | true | Enables TLS encryption for gRPC connections. |
| grpc_tls.insecure | bool | true | Allows TLS connections without verifying the server certificate. |
| time | integer | none | Interval between keepalive pings sent to maintain the connection. |
| timeout | integer | none | Maximum time to wait for a ping acknowledgment before closing the connection. |
| permit_without_stream | bool | false | Allows keepalive pings even when there are no active streams. |
| grpc_read_buffer_size | integer | none | Size of the read buffer used by the gRPC client. |
| grpc_write_buffer_size | integer | none | Size of the write buffer used by the gRPC client. |
| grpc_authority | string | none | Value used for the :authority header in gRPC connections. |
| grpc_balancer_name | string | none | Load balancing policy name used by the gRPC client. |
HTTP Advanced Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
| http_sending_queue | object | enabled by default | Enables an internal sending queue to buffer telemetry data before it is sent to the endpoint. |
| http_retry_on_failure | bool | true | Automatically retries failed HTTP send attempts. |
| enabled | bool | true | Enables TLS encryption for HTTP connections. |
| insecure | bool | true | Allows TLS connections without verifying the server certificate. |
| http_read_buffer_size | integer | none | Size of the buffer used for reading HTTP responses. |
| http_write_buffer_size | integer | none | Size of the buffer used for writing HTTP requests. |
Sending Queue
| Parameter | Type | Default | Description |
|---|---|---|---|
| num_consumers | integer | 20 | Number of parallel workers that read from the queue and send requests to the destination. Default raised from 10 in v0.3. |
| queue_size | integer | 10000 | Maximum number of requests that can be stored in the queue before new data is dropped or blocked. Default raised from 5000 in v0.3. |
| enable_disk_backed_queue | bool | true | Stores queued data on disk so telemetry data can be preserved across service restarts. |
Retry On Failure Configuration
The Retry On Failure option enables automatic retry logic when OTLP fails to send telemetry data.
When enabled, the destination temporarily retains the telemetry batch and attempts to resend it based on the configured retry intervals.
| Parameter | Type | Default Value | Description |
|---|---|---|---|
| initial_interval | duration | 5 | Time to wait after the first failure before retrying. |
| max_interval | duration | 30 | Upper bound on retry backoff interval. Once this value is reached the delay between consecutive retries remains constant at the specified value. |
| max_elapsed_time | duration | 300 | Maximum amount of time spent retrying a failed batch. Retrying never stops if set to 0. |
| randomization_factor | float | 0.7 | Jitter applied to each backoff to spread retries across a fleet. Added in v0.3. |
| multiplier | float | 1.3 | Backoff multiplier between successive retries. Added in v0.3. |
TLS Configuration
| Parameter | Type | Default Value | Description |
|---|---|---|---|
| min_version | string | none | Defines the minimum TLS version accepted for secure connections. Supports TLS 1.2 and above. |
| cert_file | string | none | Path to the TLS certificate file used by the client. |
| key_file | string | none | Path to the TLS private key file used by the client. |
| ca_file | string | none | Path to the CA certificate file used to verify the remote server certificate. |
Example Configuration
{
"protocol": "grpc", // required, default: "grpc"
"grpc_endpoint": "", // default: none
"grpc_compression": "", // default: none
"grpc_headers": {}, // default: none
"grpc_timeout": 0, // default: none
"grpc_read_buffer_size": 0, // default: none
"grpc_write_buffer_size": 0, // default: none
"grpc_authority": "", // default: none
"grpc_balancer_name": "", // default: none
"grpc_tls": {
"enabled": true, // default: true
"insecure": true, // default: true
"min_version": "", // default: none
"cert_file": "", // default: none
"key_file": "", // default: none
"ca_file": "", // default: none
},
"grpc_sending_queue": {
"enabled": true,
"num_consumers": 10, // default: 10
"queue_size": 5000, // default: 5000
"enable_disk_backed_queue": true, // default: true
},
"grpc_retry_on_failure": true, // default: true
"grpc_retry_on_failure_settings": {
"initial_interval": 5, // default: 5
"max_interval": 30, // default: 30
"max_elapsed_time": 300, // default: 300
},
"grpc_keepalive": {
"time": 0, // default: none
"timeout": 0, // default: none
"permit_without_stream": false, // default: false
},
"http_endpoint": "", // default: none
"http_traces_endpoint": "", // default: none
"http_logs_endpoint": "", // default: none
"http_metrics_endpoint": "", // default: none
"http_compression": "", // default: none
"http_headers": {}, // default: none
"http_timeout": 0, // default: none
"http_read_buffer_size": 0, // default: none
"http_write_buffer_size": 0, // default: none
"http_tls": {
"enabled": true, // default: true
"insecure": true, // default: true
"min_version": "", // default: none
"cert_file": "", // default: none
"key_file": "", // default: none
"ca_file": "", // default: none
},
"http_sending_queue": {
"enabled": true,
"num_consumers": 10, // default: 10
"queue_size": 5000, // default: 5000
"enable_disk_backed_queue": true, // default: true
},
"http_retry_on_failure": true, // default: true
"http_retry_on_failure_settings": {
"initial_interval": 5, // default: 5
"max_interval": 30, // default: 30
"max_elapsed_time": 300, // default: 300
},
}
Related catalog destinations
Praxis exposes OTLP-based observability backends as separate palette entries; they use the same configuration as this page: