"本文主要对fluent-bit特性及使用场景介绍"
1、简介
fluent-bit是一种在Linux,OSX和BSD系列操作系统运行,兼具快速、轻量级日志处理器和转发器。它非常注重性能,通过简单的途径从不同来源收集日志事件。
2、功能
fluent-bit是一个开源的、多平台的、旨在成为像一把瑞士军刀一样进行日志收集和转发。它为我们提供一个终端到终端的解决方案,收集,存储和分析的基础架构。fluent-bit是此管道中是不可或缺的一部分,它可以解决日志收集需求。作为一个开源项目,它已被广泛采用,fluent-bit能够胜任和解决docker和Kubernetes等关键组件的云服务日志记录需求。
3、fluent-bit工作原理
fluent-bit是一个简单日志收集工具,上图就是对它工作流程的全局概述,它通过输入、转换、过滤、缓冲、路由到输出而完成日志的收集。
4、为什么使用fluent-bit
如今,我们环境中的信息源数量正在不断增加,数据收集和日志转发很困难,大规模处理数据收集非常复杂,并且收集和汇总各种数据需要一个专门的工具来处理:
- 不同的信息来源。
- 不同的数据格式。
- 多个目的地。
fluent-bit出于满足对高性能的需求和优化工具,它可以从任何输入源收集数据,统一的数据并将其发送到多个目的地而且支持delimiter、key-value、json等主流格式。比如我们常见的logstash耗费资源严重,filebeat可以作为轻量级日志收集工具,目前只能对接对接到ES、logstash、kafaka、redis而且对数据处理能力有限必须配合大数据平台使用(具体查看:Kubernetes日志收集解决方案)。fluent-bit兼具filebeat的功能,但是filebeat不具备fluent-bit数据处理和路由转发能力,如果我只想简单收集日志,filebeat不能满足,具体请查看:Kubernetes集群环境下fluentd日志收集方案介绍
5、fluentd和fluent-bit的关系及特性
日志收集场景和需求是多变的,为了满足日志收集的灵活性,我们会根据需求选择不同的插件,比如:ELK常见解决方案Kubernetes日志收集解决方案,当前我们主要介绍fluentd和fluent-bit两个开源项目之间的关系及特性,fluentd和fluent-bit都是有Treasure Data公司赞助开发,目标是解决日志收集、处理和转发。
这两个项目有很多相似之处,fluent-bit完全基于Fluentd体系结构和设计经验。从体系结构的角度来看,选择使用哪个取决于使用场景,我们可以考虑:
- Fluentd是日志收集器,处理器和聚合器。
- fluent-bit是一个日志收集器和处理器(它没有Fluentd等强大的聚合功能)。
fluentd | fluent-bit | |
范围 | 容器/服务器 | 容器/服务器 |
语言 | C和Ruby | C |
大小 | 约40MB | 约450KB |
性能 | 高性能 | 高性能 |
依赖关系 | 作为Ruby Gem构建,主要依赖gems | 除了一些安装编译插件(GCC、CMAKE)其它零依赖。 |
插件支持 | 超过650个可用插件 | 大约35个可用插件 |
许可证 | Apache许可证2.0版 | Apache许可证2.0版 |
根据两个组件不同特点可以考虑将Fluentd主要用作聚合器,将fluent-bit作为日志转发器,两个项目相互补充,从而提供了完整的可靠轻量级日志解决方案,当然fluent-bit也可以独立完成日志收集。
6、fluent-bit支持平台
操作系统 | 平台 | cpu架构 |
Linux | Centos 7 | x86_64 |
Debian 8 (Jessie) | x86_64 | |
Debian 9 (Stretch) | x86_64 | |
Raspbian 8 (Debian Jessie) | AArch32 | |
Raspbian 9 (Debian Stretch) | AArch32 | |
Ubuntu 16.04 (Xenial Xerus) | x86_64 | |
Ubuntu 18.04 (Bionic Beaver) | x86_64 |
从体系结构支持的角度来看,fluent-bit在基于x86,x86_64,AArch32和AArch64的处理器上具有全部功能。fluent-bit也可以在OSX和*BSD系统上工作,但并非所有插件在所有平台上都可用。官方支持将根据社区需求而扩大。
7、下载地址及参考文档
http://fluentbit.io/download/
https://docs.fluentbit.io/manual/
8、安装及使用方法
参考:日志收集工具fluentd安装配置及使用介绍
9、总结
本文主要介绍了fluent-bit特性及功能,接下来我会分为三遍文章进行分享,分别是fluent-bit在docker和Kubernetes中的使用、fluent-bit插件使用和指令介绍、fluentd和fluent-bit在线上环境的使用,敬请关注。
推荐阅读:
Kubernetes排障指南
从零搭建Kubernetes下的nignx和tomcat
Kubernetes中如何使用ClusterDNS进行服务发现?
从Ice到Kubernetes容器技术,微服务架构经历了什么?
如何使用docker?