Fluent Bit在CentOS 6下面的编译和代码修正

Fluent Bit是一个用C写成的轻量级开源日志收集工具。它允许从不同的源收集数据并输出到多个日志系统中。在笔者的简单实践中,该工具占用资源不高,表现稳定,值得推荐用于终端日志收集。

官方地址:https://fluentbit.io/

官方的Fluent Bit并没有说明支持RHEL 6 / CentOS 6,而经过一位日本网友验证【1】,在 CentOS 6 下面是能够编译和运行的。不过笔者发现,收集网卡数据的插件 in_netif 输出的网卡数据并不准确【2】。为此,笔者对此进行了修正,并发布了修复分支“1.3-el6-patch”【3】。经实践,本分支已经在CentOS 6稳定运行数月。

以下为笔者在CentOS 6编译 Fluent Bit 的全过程,大部分参考了日本网友的文章,除了最后一部分。

(一)在CentOS 6运行yum保证开发工具齐全

yum -y install epel-release
yum -y install cmake3 zlib-devel
yum -y groupinstall "Development Tools"

(二)编译Bison

CentOS 6的 Bison版本为2.x,不一定兼容Fluent Bit,故编译一个Bison 3.x。此处使用 Bison 3.4.2,安装目录为/opt/bison-3.4.2

curl http://ftp.gnu.org/gnu/bison/bison-3.4.2.tar.gz
tar zxf bison-3.4.2.tar.gz
cd bison-3.4.2
./configure --prefix=/opt/bison-3.4.2
make -j 4
make install

(三)编译Fluent Bit

笔者和日本网友在这里的编译方法有些不一致。日本网友使用命令行前置PATH常量来指定Bison位置;笔者选择修改CMakeLists.txt来完成指定。

首先从 https://github.com/HorseLuke/fluent-bit/tree/1.3-el6-patch 获取笔者修改的Fluent Bit。

然后修改CMakeLists.txt,找到“find_package(BISON)”,在上一行加上“set(BISON_EXECUTABLE “/opt/bison-3.4.2/bin/bison” CACHE PATH “Bison executable”)”。最终效果如下:

# Optional features like Stream Processor and Record Accessor needs Flex
# and Bison to generate it parsers.
set(BISON_EXECUTABLE "/opt/bison-3.4.2/bin/bison" CACHE PATH "Bison executable")
find_package(FLEX)
find_package(BISON)

最后就是使用cmake3编译和安装。最终安装位置为/opt/fluent-bit-1.3.2。

mkdir build
cd build
cmake3 \
    -DCMAKE_INSTALL_PREFIX:PATH=/opt/fluent-bit-1.3.2 \
    ..
make -j 4
make install

参考信息:

【1】日本网友的编译过程: https://heartbeats.jp/hbblog/2019/10/fluent-bitcentos6.html

【2】Input netif always output value 0 if raw value is bigger than some value? #2366: https://github.com/fluent/fluent-bit/issues/2366

【3】 修复分支“1.3-el6-patch”: https://github.com/HorseLuke/fluent-bit/tree/1.3-el6-patch

本页永久链接:https://www.orztip.com/?p=316&article_title=fluent-bit-in-centos-6