商城网站开发的任务书,外贸网站怎么做促销,设计制作费属于什么服务,潍坊专升本考点在最近的上海和北美KubeCon大会上#xff0c;来自于Treasure Data的Eduardo Silva#xff08;Fluentd Maintainer#xff09;带来了最期待的关于容器日志采集工具FluentBit的最新进展以及深入解析的分享#xff1b;我们知道Fluentd是在2016年底正式加入CNCF#xff0c;成为…在最近的上海和北美KubeCon大会上来自于Treasure Data的Eduardo SilvaFluentd 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-Pilothttps://github.com/AliyunContainerService/log-pilot 其不仅能够采集容器的标准输出日志而且还能动态地发现采集容器内文件日志同时支持简单高效的日志声明式配置、支持日志路由、日志数据打标以及多种日志采集插件未来我们将进一步与社区紧密结合整合FluentBit的高性能采集特性以及Log-Pilot的动态发现和声明式配置优势来进一步增强容器化应用日志的配置采集效率。 原文链接 本文为云栖社区原创内容未经允许不得转载。