Contents
介绍
Fluent Bit 是一个快速易伸缩的日志处理程序,主要用于收集、解析、过滤和发送日志到远程数据库,这样就可以做数据分析。
数据分析通常在数据存储并且被索引在数据库后进行,但是为了实时且复杂分析的需要,日志处理器在运行时就对动态数据进行了处理,这种方法被称为边缘流处理。
Fluent Bit 是 Fluentd 项目生态的一部分,由 Apache License v2.0条款授权,由 Arm & Treasure Data 公司制作和赞助。
概要
Fluent Bit 实现了流式的结构化查询引擎来做流处理,能够查询持续的动态的数据流。
为了理解 Fluent Bit 是如何做流处理的,这里我们可以快速浏览一下 Fluent Bit 体系架构和数据是如何通过数据管道的,
Fluent Bit 数据管道
Fluent Bit 收集来自不同的输入源的日志记录,在内存或文件系统中安全地对数据解析、过滤,再将数据路由到指定的输出,最终写入目标存储。
Fluent Bit 数据管道的大多数阶段是通过插件实现的:输入、过滤和输出。
过滤接口能够对特定的日志记录做修改、追加或删除,例如在Kubernetes的过滤上使用指定的元数据填充记录,或者根据指定条件丢弃记录,在记录不再需要修改后可以写入存储,或者将记录重定向到其他流处理器做进一步的处理后再写入存储。
流处理器
流处理器是用于在数据被写入存储之前实时处理数据的独立子系统,可通过灵活的配置所指定的输入插件来收集记录,或者根据适配的标记和匹配规则收集记录。
每个输入实例用于一个收集记录并送入数据管道
通过配置查询语句,用户可以根据类似键选择的方式执行指定的任务,过滤数据并聚合和其他数据聚合,要注意这不是数据库上的查询和聚合的概念,没有任何数据模型,没有通常所说的关系型数据库表,所有的处理都是基于内存的。
Fluent Bit 流处理器强大特性之一就是可以根据需求创建新的数据流来将之前查询后的结果重新送入管道做进一步处理,或者使用标签和匹配规则路由到指定的输出目标。这里注意的是流处理结果可以被标记。
更新记录
在新版的 Flunet Bit 中,流处理引擎得到了新的改进,在下面章节中,你可以了解到主要版本的新特性。
Fluent Bit v1.2
发布日期:2019-06-27
支持子键嵌套查询和条件查询
记录中包含嵌套的映射或子健是很常见的,现在我们提供了通过条件查询和子健查询,看如下的记录:
{ "key1": 123, "key2": 456, "key3": { "sub1": { "sub2": 789 } } }
对此记录,结构化查询SQL如下:
SELECT key3['sub1']['sub2'] FROM STREAM:test WHERE key3['sub1']['sub2'] = 789;
在条件句中,我们引入了新的@record 函数:
功能函数 | 描述 |
---|---|
@record.time() | 返回记录的时间戳 |
@record.contains(key) | 如果记录中存在键,则返回 true 或 false |
支持空判断查询
我们现在已经支持不同种类的数据类型:strings, integers, floats, maps 和null,null在 Flunet Bit 完全合法的,判断记录中是否某个键值,使用 is null 或者 is not null 条件语句即可。
Fluent Bit v1.1
发布日期:2019-05-09
这是 Fluent Bit 加入流处理器的初始版本。