otlp_grpc

Send OpenTelemetry traces, logs, and metrics via OTLP/gRPC protocol.

Introduced in version 4.78.0.

Sends OpenTelemetry telemetry data to a remote collector via OTLP/gRPC protocol.

Accepts batches of Redpanda OTEL v1 protobuf messages (spans, log records, or metrics) and converts them to OTLP format for transmission to OpenTelemetry collectors.

  • Common

  • Advanced

outputs:
  label: ""
  otlp_grpc:
    endpoint: "" # No default (required)
    max_in_flight: 64
outputs:
  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

Input format

Expects messages in Redpanda OTEL v1 protobuf format with metadata:

  • signal_type: "trace", "log", or "metric"

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

Supports multiple authentication methods:

  • Bearer token authentication (via auth_token field)

  • OAuth v2 (via oauth2 configuration block)

OAuth2 requires TLS to be enabled.

Fields

compression

Compression type for gRPC requests. Options: 'gzip' or 'none'.

Type: string

Default: gzip

Options: gzip, none

endpoint

The gRPC endpoint of the remote OTLP collector.

Type: string

headers

A map of headers to add to the gRPC request metadata.

This field supports interpolation functions.

Type: 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. Increase this to improve throughput.

Type: int

Default: 64

oauth2

Allows you to specify open authentication via OAuth version 2 using the client credentials token flow.

Type: object

oauth2.client_key

A value used to identify the client to the token provider.

Type: string

Default: ""

oauth2.client_secret

A 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 Secrets.

Type: string

Default: ""

oauth2.enabled

Whether to use OAuth version 2 in requests.

Type: bool

Default: false

oauth2.endpoint_params

A list of optional endpoint parameters, values should be arrays of strings.

Type: object

Default: {}

# Examples:
endpoint_params:
  audience:
    - https://example.com
  resource:
    - https://api.example.com

oauth2.scopes[]

A list of optional requested permissions.

Type: array

Default: []

oauth2.token_url

The URL of the token provider.

Type: string

Default: ""

tcp

TCP socket configuration.

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

TCP keep-alive probe configuration.

Type: object

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

tcp.tcp_user_timeout

Maximum time to wait for acknowledgment of transmitted data before killing the connection. Linux-only (kernel 2.6.37+), ignored on other platforms. When enabled, keep_alive.idle must be greater than this value per RFC 5482. Zero disables.

Type: string

Default: 0s

timeout

Timeout for gRPC requests.

Type: string

Default: 30s

tls

TLS configuration for gRPC client.

Type: object

tls.cert_file

Path to the TLS certificate file for client authentication.

Type: string

Default: ""

tls.enabled

Enable TLS connections.

Type: bool

Default: false

tls.key_file

Path to the TLS key file for client authentication.

Type: string

Default: ""

tls.skip_cert_verify

Skip certificate verification (insecure).

Type: bool

Default: false