KubeCon 2018 参会记录 —— FluentBit Deep Dive
在最近的上海和北美KubeCon大会上,来自于Treasure Data的Eduardo Silva(Fluentd Maintainer)带来了最期待的关于容器日志采集工具FluentBit的最新进展以及深入解析的分享;我们知道Fluentd是在2016年底正式加入CNCF,成为CNCF项目家族的一员,其被广泛用于容器集群中进行应用日志的采集、处理和聚合,但今天主要是跟大家分享一下同样来自于Treasure Data新开源的日志采集工具——FluentBit。
FluentBit vs Fluentd
既然已经有了Fluentd,那么为什么还要开发一个FluentBit呢?我们知道,Fluentd是基于Ruby语言的,在一些应用日志量较大或者单节点日志量较大的场景下,通过Fluentd采集日志的速率会远落后于应用日志的产生速率,进而导致日志采集的延迟时间较大,这对于一些实时性要求较高的业务系统或者监控系统来说是不可接受的;另外一方面,也是由于Fluentd自身的日志处理逻辑越来越复杂,全部放置在一个组件里来完成会导致越来越臃肿,因此Treasure Data在基于Fluentd优秀的架构和设计理念上重新开发了一个更加轻量级、更加高性能的日志采集工具——FluentBit,其主要采用C语言进行开发。
从上面我们可以清晰地看到FluentBit本身占用的内存资源会比Fluentd少很多,且基本没有其他额外的环境依赖,但是支持的插件数相较于Fluentd会少很多,需要时间来慢慢丰富。
FluentBit Workflow
FluentBit 内置了一个Service Engine,其每采集到一条日志时都会执行从Input到Output的整个Action Chain:
- Input
日志数据入口,FluentBit支持多种不同数据来源类型的Input Plugin,不仅能采集容器日志、内核日志、syslog、systemd日志,还支持通过TCP监听接收远程客户端的日志,同时还能够采集系统的CPU、内存和DISK的使用率情况以及本机Network流量日志。
- Parser
通过情况下我们的应用日志都是非结构化的,那么Parser主要是负责将采集到的非结构化日志解析成结构化的日志数据,一般为JSON格式;FluentBit 默认已经预置了下面几种Parser:
- JSON:按照JSON格式来进行日志数据解析;
- Regex:依据配置的正则表达式来进行日志数据解析;
- Apache:遵循Apache日志格式来进行解析;
- Nginx:遵循Nginx日志格式来进行解析;
- Docker:遵循Docker标准输出日志格式进行解析;
- Syslog rfc5424:按照syslog rfc5424规范格式进行日志解析;
- Syslog rfc3164:按照syslog rfc3164规范格式进行日志解析;
- Filter
在实际的生产应用中,我们通常需要对采集到的应用日志记录进行修改或者添加一些关键信息,这都可以Filter Plugin来完成;目前FluentBit也已预置了多种Filter插件:
- Grep:允许匹配或者过滤掉符合特定正则表达式的日志记录;
- Record Modifier:允许对日志数据进行修改或者添加新的KV数据,通过此可以方便我们对日志数据进行打标;
- Throttle:支持采用漏桶和滑动窗口算法进行日志采集速率控制;
- Kubernetes:自动提取容器或者POD相关信息并添加到日志数据中;
- Modify:基于设置的规则来对日志数据进行修改;
- Standard Output:允许将日志数据直接打印到标准输出;
- Lua:支持通过嵌入Lua Script来修改添加日志数据;
- Buffer
FluentBit 内部本身提供了Buffer机制,会将采集到的日志数据暂存在Memory中直到该日志数据被成功路由转发到指定的目标存储后端。
- Routing
路由是FluentBit的一个核心功能,它允许我们配置不同的路由规则来将同一条日志数据记录转发到一个或多个不同的接收后端,其内部主要是基于每条日志数据的Tag
来进行路由转发,同时支持正则匹配方式;如下面配置则表示希望将Tag
满足正则表达式my_*
的日志直接打印到标准输出中:
[INPUT]Name cpuTag my_cpu
[INPUT]Name memTag my_mem
[OUTPUT]Name stdoutMatch my_*
- Output
Output 主要是用来配置采集到的日志数据将要被转发到哪些日志存储服务中,目前已支持多种主流的存储服务,如ElasticSearch、NATS、InfluxDB、Kafka、Splunk、File、Console等,同样也支持将日志数据继续通过HTTP(S)协议将其传输到其他服务接口中;另外这里有一个比较特殊的Output就是Fluentd,可能大家会比较奇怪,其实在未来的日志架构模型中,FluentBit主要是在采集端专职负责日志的高性能采集,然后可以将采集到的日志在Fluentd中进行较复杂的聚合处理(同Filebeat和Logstash):
Other Features
- Event Driven
内置的Service Engine采用完全异步的事件驱动模型来进行日志的采集和分发。 - Configuration
简单灵活的、高可读性的配置方式,FluentBit的Workflow模型可完全通过配置文件的方式清晰制定。 - Upstream Manager
采用统一的日志上游服务的网络连接管理,包括Keepalive和IO Error处理。 - TLSv1.2 / Security
对于安全敏感的日志数据,支持通过TLS加密通道进行日志传输。
Upcoming Features
- Filesystem buffering mode
当前FluentBit只支持Memory的buffer方式,但考虑到内存的易失性,未来也将会支持基于Filesystem的buffer机制。 - Optional plugins as shared libraries
未来会将一些已内置的但又不是必需的插件以共享链接库的方式来进行动态加载。 - Kubernetes Filter improvements
未来会继续深度整合Kubernetes,通过API获取更多POD关键信息并自动添加到日志数据记录中。
Summary
这两次的KubeCon大会上Eduardo Silva对日志采集工具FluentBit都进行了深度的解析分享,不仅介绍了FluentBit的整个架构模型,而且还分享了未来的发展方向,从整个分享来看FluentBit会侧重在日志的高性能采集方面;而阿里云容器服务在2017年初开源的Log-Pilot:https://github.com/AliyunContainerService/log-pilot ,其不仅能够采集容器的标准输出日志,而且还能动态地发现采集容器内文件日志,同时支持简单高效的日志声明式配置、支持日志路由、日志数据打标以及多种日志采集插件,未来我们将进一步与社区紧密结合,整合FluentBit的高性能采集特性以及Log-Pilot的动态发现和声明式配置优势来进一步增强容器化应用日志的配置采集效率。
原文链接
本文为云栖社区原创内容,未经允许不得转载。
KubeCon 2018 参会记录 —— FluentBit Deep Dive相关推荐
- KubeCon 2018 参会记录 —— FluentBit Deep Dive 1
在最近的上海和北美KubeCon大会上,来自于Treasure Data的Eduardo Silva(Fluentd Maintainer)带来了最期待的关于容器日志采集工具FluentBit的最新进 ...
- mmWave EVMs Deep Dive(mmWave EVMs深入理解)
Hi. This is Millimeter Wave EVMS Deep Dive. 大家好!下面深入介绍毫米波EVM Here's the agenda. 这是议程 We'll first tal ...
- AWS re:Invent 2018 参会攻略
又是一年AWS re:Invent 季,加上今年的行程已经是我参加re:Invent的连续第四年. 今年re:Invent票价($ 1799) 也是有点贵得让人望而却步,但是听闻2019年的活动规模较 ...
- 拥抱变革——RSNA2017参会记录
拥抱变革--2017年RSNA参会记录 推荐搜索关注微信公众号:医影杂记 每年11月份的芝加哥有两件事情从不爽约.第一,来自密歇根湖的带着几分冷意却并不刺骨的寒风:第二,全球放射学界的顶级盛会北美放射 ...
- 重磅解读:K8s Cluster Autoscaler模块及对应华为云插件Deep Dive
背景信息 基于业务团队(Cloud BU 应用平台)在开发Serverless引擎框架的过程中完成的K8s Cluster Autoscaler华为云插件. 目前该插件已经贡献给了K8s开源社区,见下 ...
- Amazon EC2 Deep Dive 亚马逊EC2深度解析 Lynda课程中文字幕
Amazon EC2 Deep Dive 中文字幕 亚马逊EC2深度解析 中文字幕Amazon EC2 Deep Dive Amazon Elastic Compute Cloud(Amazon EC ...
- Webpack Deep Dive Webpack详解 Lynda课程中文字幕
Webpack Deep Dive 中文字幕 Webpack详解 中文字幕Webpack Deep Dive 构建和部署前端应用程序可能会很快变得复杂 webpack通过提供满足各种JavaScrip ...
- MapInfo2007年用户大会参会记录
昨天去北五环五洲皇冠参加了MapInfo2007年用户大会,从大会规模上感觉MapInfo公司的规模比起ESRI级别的巨牛公司要小不少.但MapInfo刚被收购,也重新调整了市场策略,应该有较大的增长 ...
- A Deep Dive into Spark SQL's Catalyst Optimizer with Yin Huai
A Deep Dive into Spark SQL's Catalyst Optimizer with Yin Huai Two kind Query Plan Logical Plan Physi ...
最新文章
- segMatch:基于3D点云分割的回环检测
- c:redirect标签的使用
- 关于numy中np.expand_dims方法的理解?
- Android 经典欧美小游戏 guess who
- boost::graph模块实现拉马努金图的周长和直径的测试程序
- [机器学习] Boosting算法4 --- LightGBM介绍与分布式
- 面试题之--实现取余
- 点击右侧导航栏,实现iframe嵌入子页面中div,滑动到最上面
- 前端学习(536):多列布局3列得间距
- agile java_《Agile Java》阅读笔记
- python降序排列说true不存在_【图片】Python3萌新入门笔记(8)【python吧】_百度贴吧...
- java 运算符适用类型_java基础(数据类型,运算符)
- cocos2dx 圆盘抽奖_Cocos2D-X转盘游戏制作教程:博彩大转盘
- [RK3288][Android7.1][Camera] IMX307 mclk 37.125M补丁
- HTML,CSS,font-family:中文字体的英文名称 (宋体 微软雅黑)
- 利用matlab信号带宽,测量均值频率、功率、带宽
- 鸿蒙DevEco Studio 无法下载Gradle问题
- WiFi基础知识讲解
- 关于HTML中常用选择器
- 阿童木录机固态硬盘MOV视频损坏修复
热门文章
- 【LeetCode笔记】141. 环形链表(Java、快慢指针、链表)
- 【LeetCode笔记】2. 两数相加(JAVA、链表)
- android 访问服务器josn文件,Android客户端对服务器回来的json文件进行解析
- axure 输入框默认灰色字_Axure如何应对意外关闭
- vim 显示行号_Vim给文件加行号,这通惊为天人的操作没sei了!文末天书慎点
- Linux_ppc下软件包安装,Linux下软件包安装详解
- 如何在验证集加噪声_B端硬件如何开展产品测试?
- cupload怎么保存图片_原生js的图片上传插件cupload
- 检查虚ip跟实ip之间网络问题_虚电路有哪些特点 虚电路原理介绍【详解】
- 64位java_树莓派3B+安装64位ubuntu系统和docker工具