Skip to main content

Fluentforward Receiver

Status Available in: contrib, k8s Maintainers: @dmitryax Source: opentelemetry-collector-contrib

Supported Telemetry

Logs

Overview

This receiver:
  • Does not support TLS or the handshake portion of the Forward protocol.
  • Does support acknowledgments of events that have the chunk option, as per the spec.
  • Supports all three event types (message, forward, packed forward, including compressed packed forward)
  • Supports listening on a Unix domain socket by making the listenAddress option of the form unix://<path to socket>.
  • If using TCP, it will start a UDP server on the same port to deliver heartbeat echos, as per the spec.
Here is a basic example config that makes the receiver listen on all interfaces on port 8006:
receivers:
  fluentforward:
    endpoint: 0.0.0.0:8006

Data Conversion

The receiver converts Fluentd events to OpenTelemetry logs. Each Fluentd event is converted to a single OpenTelemetry log record and packets are stored as LogRecordSlice. The FluentD tag is stored as an attribute with key fluentd.tag. The FluentD event timestamp is used as the log record timestamp. The record message or log field is stored as the body of the log record. If both are present, it just takes the field that comes last in the message stream. Any other fields in the event are stored as attributes on the log record following these rules:
  • bool values are stored as boolean attributes
  • string values are stored as string attributes
  • uint64 values are stored as int64 attributes (if value exceeds max int64, stored as string instead)
  • int64 values are stored as int64 attributes
  • []byte values are converted to strings
  • map[string]any values are stored as nested map attributes
  • []any values are stored as array attributes
  • float32 and float64 values are stored as double attributes
  • nil values are left as empty attributes using plog.LogRecord.Attributes().PutEmpty(key)
  • All other types are converted to string representation using fmt.Sprintf("%v", val) which includes complex types

Development

If you are working on this receiver and need to regenerate any of the message pack autogenerated code, just run go generate on this package and its subpackages. You can get the msgp binary by just running go get -u -t github.com/tinylib/msgp, and make sure the Go binary path is on your shell’s PATH.

Configuration

Example Configuration

fluentforward:

Last generated: 2026-04-13