otlp_grpc

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

Exposes an OpenTelemetry Collector gRPC receiver that accepts traces, logs, and metrics via gRPC.

Telemetry data is received in OTLP protobuf format and converted to individual Redpanda OTEL v1 protobuf messages. Each signal (span, log record, or metric) becomes a separate message with embedded Resource and Scope metadata, optimized for Kafka partitioning.

  • Common

  • Advanced

inputs:
  label: ""
  otlp_grpc:
    address: 0.0.0.0:4317
    rate_limit: ""
inputs:
  label: ""
  otlp_grpc:
    address: 0.0.0.0:4317
    tls:
      enabled: false
      cert_file: ""
      key_file: ""
    auth_token: ""
    max_recv_msg_size: 4194304
    rate_limit: ""
    tcp:
      reuse_addr: false
      reuse_port: false

Protocols

This input supports OTLP/gRPC on the default port 4317 using the standard OTLP protobuf format for all signal types (traces, logs, metrics).

Output format

Each OTLP export request is unbatched into individual messages:

  • Traces: One message per span

  • Logs: One message per log record

  • Metrics: One message per metric

Messages are encoded in Redpanda OTEL v1 protobuf format.

Metadata

This input adds the following metadata fields to each message:

  • signal_type - The signal type: "trace", "log", or "metric"

You can access these metadata fields using function interpolation.

Authentication

When auth_token is configured, clients must include the token in the gRPC metadata.

Go client example

import (
    "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
)

exporter, err := otlptracegrpc.New(ctx,
    otlptracegrpc.WithEndpoint("localhost:4317"),
    otlptracegrpc.WithInsecure(), // or WithTLSCredentials() for TLS
    otlptracegrpc.WithHeaders(map[string]string{
        "authorization": "Bearer your-token-here",
    }),
)

Environment variable

export OTEL_EXPORTER_OTLP_HEADERS="authorization=Bearer your-token-here"

Rate limiting

An optional rate limit resource can be specified to throttle incoming requests. When the rate limit is breached, requests will receive a ResourceExhausted gRPC status code.

Fields

address

The address to listen on for gRPC connections.

Type: string

Default: 0.0.0.0:4317

auth_token

Optional bearer token for authentication. When set, requests must include 'authorization: Bearer <token>' metadata.

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: ""

max_recv_msg_size

Maximum size of gRPC messages to receive in bytes.

Type: int

Default: 4194304

rate_limit

An optional rate limit resource to throttle requests.

Type: string

Default: ""

tcp

TCP listener socket configuration.

Type: object

tcp.reuse_addr

Enable SO_REUSEADDR, allowing binding to ports in TIME_WAIT state. Useful for graceful restarts and config reloads where the server needs to rebind to the same port immediately after shutdown.

Type: bool

Default: false

tcp.reuse_port

Enable SO_REUSEPORT, allowing multiple sockets to bind to the same port for load balancing across multiple processes/threads.

Type: bool

Default: false

tls

TLS configuration for gRPC.

Type: object

tls.cert_file

Path to the TLS certificate file.

Type: string

Default: ""

tls.enabled

Enable TLS connections.

Type: bool

Default: false

tls.key_file

Path to the TLS key file.

Type: string

Default: ""