June 27, 2019
Fluent Bit is a Fast and Lightweight Data Forwarder for Linux, BSD and OSX. We are proud to announce the availability of Fluent Bit v1.2.0.
For people upgrading from previous versions you must read the Upgrading Notes section of our documentation:
https://docs.fluentbit.io/manual/installation/upgrade_notes
Fluent Bit v1.2.0 is the next major release and include several improvements:
By default all records in Fluent Bit are routable , meaning: after ingestion and filtering, they are routed to the output destination based on the matching rules applied to the original record tags.
Starting from this version, you can create records that are not routable. The use case is for records that aims to target the Stream Processor but do not longer need to be routed to some output destination, e.g:
[INPUT]
Name tail
Path /path/to/my/*.log
Tag logs.*
Routable false
The following version fixes all the problems with JSON encoding/decoding and UTF-8 handling, for short: if you are parsing JSON records you no longer need the parser decoders. We have fixed all related problems with encoding. Discussion thread of the original issue and fixes are described in the following ticket:
https://github.com/fluent/fluent-bit/issues/1278
Recently we introduced the new Stream Processing capabilities, for short, an additional engine that allows to perform SQL queries and create new streams of data based on conditions and windows of time. On this new v1.2 release the Stream Processor is getting extended with the new following capabilities:
It’s pretty common that records contains nested maps or sub-keys. Now we provide the ability to use sub-keys to perform conditionals and keys selection. Consider the following record:
|
|
Now you can perform queries like:
SELECT key3['sub1']['sub2'] FROM STREAM:test WHERE key3['sub1']['sub2'] = 789;
On conditionals we have introduced the new @record functions:
Function | Description |
---|---|
@record.time() | returns the record timestamp |
@record.contains(key) | returns true or false if key exists in the record |
We currently support different data types such as strings, integers, floats, maps and null. In Fluent Bit, a null value is totally valid and is not related to the absense of a value as in normal databases. To compare if an existing key in the record have a null value or not, we have introduced IS NULL and IS NOT NULL statements, e.g:
SELECT * FROM STREAM:test WHERE key3['sub1'] IS NOT NULL;
Note that to check if a key exists or not in the record you have to use @record.contains(k) function
The following version implements proper fixes for our co-routines backend in ARMv8 architecture environments. Note that the fix is only required if you are compiling with GCC, Clang compiled versions do not face any issue.
Continuing with our Windows suport, we have introduced a new Windows Event Log plugin:
https://docs.fluentbit.io/manual/input/winlog
Extending Fluent Bit through it pluggable architecture is straightforward, but sometimes we need more flexibility to incorporate plugins that are not part of the code base. The new version incorporate support for external C plugins. To get started, refer to the following helper repository:
https://github.com/fluent/fluent-bit-plugin
Core
Stream Processor
Storage
Plugins
We would like to thanks to the following people who have been involved doing coding, bug fixes, troubleshooting, reporting issues and general contributions on this release:
We want to hear about you, our community is growing and you can be part of it!, you can contact us at:
Check out the Release Notes, read the Updated Documentation or jump directly to the Downloads Section.
We are part of a wide community, no vendor lock-in.