OpenTelemetry
An input plugin to ingest OpenTelemetry logs, metrics, and traces
The OpenTelemetry input plugin lets you receive data based on the OpenTelemetry specification from various OpenTelemetry exporters, the OpenTelemetry Collector, or the Fluent Bit OpenTelemetry output plugin.
Fluent Bit has a compliant implementation which fully supports OTLP/HTTP
and OTLP/GRPC
. The single port
configured defaults to 4318
and supports both transport methods.
Configuration
listen
The network address to listen on.
0.0.0.0
port
The port for Fluent Bit to listen for incoming connections. In Fluent Bit 3.0.2 or later, this port is used for both transport OTLP/HTTP
and OTLP/GRPC
.
4318
tag
Tag for all data ingested by this plugin. This will only be used if tag_from_uri
is set to false
. Otherwise, the tag will be created from the URI.
none
tag_key
Specify the key name to overwrite a tag. If set, the tag will be overwritten by a value of the key.
none
raw_traces
Route trace data as a log.
false
buffer_max_size
Specify the maximum buffer size in KB
, MB
, or GB
to the HTTP payload.
4M
buffer_chunk_size
Initial size and allocation strategy to store the payload (advanced users only)`
512K
successful_response_code
Allows for setting a successful response code. Supported values: 200
, 201
, or 204
.
201
tag_from_uri
By default, the tag will be created from the URI. For example, v1_metrics
from /v1/metrics
. This must be set to false if using tag
.
true
Raw traces means that any data forwarded to the traces endpoint (/v1/traces
) will be packed and forwarded as a log message, and won' be processed by Fluent Bit. The traces endpoint by default expects a valid protobuf
encoded payload, but you can set the raw_traces
option in case you want to get trace telemetry data to any of the Fluent Bit supported outputs.
OpenTelemetry transport protocol endpoints
Fluent Bit exposes the following endpoints for data ingestion based on the OpenTelemetry protocol:
For OTLP/HTTP
:
Logs
/v1/logs
Metrics
/v1/metrics
Traces
/v1/traces
For OTLP/GRPC
:
Logs
/opentelemetry.proto.collector.log.v1.LogService/Export
/opentelemetry.proto.collector.log.v1.LogService/Export
Metrics
/opentelemetry.proto.collector.metric.v1.MetricService/Export
/opentelemetry.proto.collector.metrics.v1.MetricsService/Export
Traces
/opentelemetry.proto.collector.trace.v1.TraceService/Export
/opentelemetry.proto.collector.traces.v1.TracesService/Export
Get started
The OpenTelemetry input plugin supports the following telemetry data types:
Logs
Stable
Stable
Stable
Metrics
Unimplemented
Stable
Stable
Traces
Unimplemented
Stable
Stable
A sample configuration file to get started will look something like the following:
pipeline:
inputs:
- name: opentelemetry
listen: 127.0.0.1
port: 4318
outputs:
- name: stdout
match: '*'
With this configuration, Fluent Bit listens on port 4318
for data. You can now send telemetry data to the endpoints /v1/metrics
for metrics, /v1/traces
for traces, and /v1/logs
for logs.
A sample curl request to POST JSON encoded log data would be:
$ curl --header "Content-Type: application/json" --request POST --data '{"resourceLogs":[{"resource":{},"scopeLogs":[{"scope":{},"logRecords":[{"timeUnixNano":"1660296023390371588","body":{"stringValue":"{\"message\":\"dummy\"}"},"traceId":"","spanId":""}]}]}]}' http://0.0.0.0:4318/v1/logs
Last updated
Was this helpful?