otlp_grpc
Send OpenTelemetry traces, logs, and metrics via OTLP/gRPC protocol.
Sends OpenTelemetry telemetry data to a remote collector via OTLP/gRPC protocol.
Accepts batches of Redpanda OTEL v1 messages (spans, log records, or metrics) and converts them to OTLP format for transmission to OpenTelemetry collectors.
Input format
This output expects messages in Redpanda OTEL v1 format (protobuf or JSON, detected automatically) with the following metadata:
-
otel_signal_type: The signal type (trace,log, ormetric)
Messages produced by the otlp_grpc and otlp_http inputs already include this metadata.
Each batch must contain messages of the same signal type. The entire batch is converted to a single OTLP export request and sent via gRPC.
Authentication
This output supports OAuth v2 authentication using the oauth2 configuration block. OAuth v2 requires TLS to be enabled.
To send a static bearer token, add an authorization header using the headers field.
-
Common
-
Advanced
output:
label: ""
otlp_grpc:
endpoint: "" # No default (required)
max_in_flight: 64
output:
label: ""
otlp_grpc:
endpoint: "" # No default (required)
headers: {}
timeout: 30s
compression: gzip
tls:
enabled: false
skip_cert_verify: false
cert_file: ""
key_file: ""
tcp:
connect_timeout: 0s
keep_alive:
idle: 15s
interval: 15s
count: 9
tcp_user_timeout: 0s
oauth2:
enabled: false
client_key: ""
client_secret: ""
token_url: ""
scopes: []
endpoint_params: {}
max_in_flight: 64
Fields
compression
Compression type for gRPC requests. Options: 'gzip' or 'none'.
Type: string
Default: gzip
Options: gzip, none
headers
A map of headers to add to the gRPC request metadata.
This field supports interpolation functions.
Type: object<string>
Default: {}
# Examples:
headers:
X-Custom-Header: value
traceparent: ${! tracing_span().traceparent }
max_in_flight
The maximum number of messages to have in flight at a given time. For outputs that send messages in batches, this limit applies to message batches. Increase this value to improve throughput.
Type: int
Default: 64
oauth2
Configures authentication with OAuth version 2 using the client credentials token flow. To exchange a refresh token instead, add a grant_type parameter with the value refresh_token and a refresh_token parameter with the token to endpoint_params.
Type: object
oauth2.client_key
A value used to identify the client to the token provider.
Type: string
Default: ""
oauth2.client_secret
The secret used to establish ownership of the client key.
|
This field contains sensitive information that usually shouldn’t be added to a configuration directly. For more information, see Manage Secrets before adding it to your configuration. |
Type: string
Default: ""
oauth2.endpoint_params
A map of optional parameters to send to the token provider with client credentials token requests. Each value must be an array of strings.
Type: object
Default: {}
# Examples:
endpoint_params:
audience:
- https://example.com
resource:
- https://api.example.com
tcp
Configure TCP socket-level settings to optimize network performance and reliability. These low-level controls are useful for:
-
Unresponsive hosts: Set
connect_timeoutto limit how long a connection attempt can take (the default0ssets no limit) -
Long-lived connections: Configure
keep_alivesettings to detect and recover from stale connections -
Unstable networks: Tune keep-alive probes to balance between quick failure detection and avoiding false positives
-
Linux systems with specific requirements: Use
tcp_user_timeout(Linux 2.6.37+) to control data acknowledgment timeouts
Most users should keep the default values. Only modify these settings if you’re experiencing connection stability issues or have specific network requirements.
Type: object
tcp.connect_timeout
Maximum amount of time a dial will wait for a connect to complete. Zero disables.
Type: string
Default: 0s
tcp.keep_alive.count
Maximum unanswered keep-alive probes before dropping the connection. Zero defaults to 9.
Type: int
Default: 9
tcp.keep_alive.idle
Duration the connection must be idle before sending the first keep-alive probe. Zero defaults to 15s. Negative values disable keep-alive probes.
Type: string
Default: 15s
tcp.keep_alive.interval
Duration between keep-alive probes. Zero defaults to 15s.
Type: string
Default: 15s