Fluent Bit Fluent Bit is a an open source observability
pipeline. Tenzir embeds Fluent Bit, exposing all its inputs via
from_fluent_bit
and
outputs via to_fluent_bit
This makes Tenzir effectively a superset of Fluent Bit.
Amazon CloudWatch Amazon Kinesis Data Firehose Amazon Kinesis Data Streams Amazon S3 Azure Blob Azure Data Explorer Azure Log Analytics Azure Logs Ingestion API Counter Datadog Elasticsearch File FlowCounter Forward GELF Google Chronicle Google Cloud BigQuery HTTP InfluxDB Kafka Kafka REST Proxy LogDNA Loki NATS New Relic Observe Oracle Log Analytics OpenSearch OpenTelemetry PostgreSQL Prometheus Exporter Prometheus Remote Write SkyWalking Slack Splunk Stackdriver Standard Output Syslog TCP & TLS Treasure Data Vivo Exporter WebSocket Collectd CPU Log Based Metrics Disk I/O Log Based Metrics Docker Log Based Metrics Docker Events Dummy Elasticsearch Exec Exec Wasi Fluent Bit Metrics Forward Head HTTP Health Kafka Kernel Logs Kubernetes Events Memory Metrics MQTT Network I/O Log Based Metrics NGINX Exporter Metrics Node Exporter Metrics Podman Metrics Process Log Based Metrics Prometheus Scrape Metrics Random Serial Interface Splunk Standard Input StatsD Syslog Systemd Tail TCP Thermal UDP OpenTelemetry Windows Event Log Windows Event Log (winevtlog) Windows Exporter Metrics
Fluent Bit parsers map to Tenzir operators that accept bytes as input
and produce events as output. Fluent Bit filters correspond to
Tenzir operators that perform event-to-event transformations. Tenzir does not
expose Fluent Bit parsers and filters, only inputs and output.
Internally, Fluent Bit uses MsgPack to encode events
whereas Tenzir uses Arrow record batches. The
fluentbit
source operator transposes MsgPack to Arrow, and the fluentbit
sink performs the reverse operation.
Usage An invocation of the fluent-bit
commandline utility
fluent-bit -o input_plugin -p key1=value1 -p key2=value2 -p…
translates to Tenzir's from_fluent_bit
operator as follows:
from_fluent_bit "input_plugin" , options = {key1 : value1, key2 : value2, …}
with the to_fluent_bit
operator working
exactly analogous.
Examples Ingest OpenTelemetry logs, metrics, and traces from_fluent_bit "opentelemetry"
You can then send JSON-encoded log data to a freshly created API endpoint:
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
Imitate a Splunk HEC endpoint from_fluent_bit "splunk" , options = {port : 8088 }
Imitate an ElasticSearch & OpenSearch Bulk API endpoint This allows you to ingest from beats (e.g., Filebeat, Metricbeat, Winlogbeat).
from_fluent_bit "elasticsearch" , options = {port : 9200 }
Send to Datadog to_fluent_bit "datadog" , options = {apikey : "XXX" }
Send to ElasticSearch to_fluent_bit "es" , options = {host : 192.168 . 2.3 , port : 9200 , index : "my_index" , type : "my_type" }