fluent-bit 本地安装及配置

1. 安装与启动

1.1. YUM方式安装

官方文档:https://docs.fluentbit.io/manual/installation/linux/redhat-centos

1.请在/etc/yum.repos.d/中添加一个名为td-agent-bit.repo的新文件,其内容如下:

[td-agent-bit] name = TD Agent Bit baseurl =
https://packages.fluentbit.io/centos/7/$basearch/ gpgcheck=1
gpgkey=https://packages.fluentbit.io/fluentbit.key enabled=1:

2.运行以下命令进行安装

yum install td-agent-bit

3.Systemd启用服务

#启用服务
sudo service td-agent-bit start
 
#重启服务
sudo service td-agent-bit restart
 
#停止服务
sudo service td-agent-bit stop

4.状态检查

service td-agent-bit status

5. 查看

d-agent-bit的默认配置是收集CPU使用率指标并将记录发送到标准输出,您可以在/var/log/messages文件中看到传出数据。

1.2. Docker方式安装

官方文档:https://docs.fluentbit.io/manual/installation/docker

docker pull fluent/fluent-bit:1.5.6
docker run -it -v /root/fluentBit/:/fluent-bit/etc/ fluent/fluent-bit:1.5.6

在/root/fluentBit创建 parsers.conf文件和fluent-bit.conf
parsers.conf 参考2.1
fluent-bit.conf2.2

2. 配置文件修改

Inputs:https://docs.fluentbit.io/manual/pipeline/inputs/tail
Outputs:https://docs.fluentbit.io/manual/pipeline/outputs/kafka
Parsers:https://docs.fluentbit.io/manual/pipeline/filters/parser

配置文件在:/etc/td-agent-bit 目录下
2.1. 修改 parsers.conf
添加以下配置:
multiline_pattern :用于解决多行日志问题
log_parser :用于对日志进行分割
[PARSER]
Name multiline_pattern
Format regex
Regex ^(?\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3}.*)

[PARSER]
Name log_parser
Format regex
Regex (?[^]][ ]) (?[^ ]) [(?[^ ]),(?[^ ]),(?[^ ]),(?[^ ]),(?[^ ]),(?[^ ])] (?[^ ]) — [(?[^[]\n])] (?[^ ][ ]): (?[^ ]].)

正则表达式测试地址:https://rubular.com/r/X7BH0M4Ivm
表达式:
(?[^]][ ]) (?[^ ]) [(?[^ ]),(?[^ ]),(?[^ ]),(?[^ ]),(?[^ ]),(?[^ ])] (?[^ ]) — [(?[^[]\n])] (?[^ ][ ]): (?[^ ]].)
日志内容:
2020-09-11 17:27:20.261 INFO [feng-cjmfeng,b95f714e14fed76e,b95f714e14fed76e,false,] 10806 — [ Thread-53] com.bzl.feng.service.aop.ServiceAspect : Leave com.bzl.feng.service.impl.JobRelationServiceImpl::handleTrafficConflict()

2.2. 修改 td-agent-bit.conf
2.2.1. [INPUT] 获取日志
官方文档:https://docs.fluentbit.io/manual/pipeline/inputs/tail
字段值含义Nametail使用 INPUT Tail插件Tagfeng-sit.给日志打标签Path/var/log/feng-sit/.log日志所在的目录DB/var/log/feng-sit.db指定数据库文件以跟踪受监视的文件和偏移量Refresh_Interval1刷新监视文件列表的时间间隔(以秒为单位)Rotate_Wait60以秒为单位指定额外时间,以防在刷新某些未决数据时旋转文件后对其进行监视Skip_Long_LinesOn当受监视的文件由于行很长(Buffer_Max_Size)而达到缓冲区容量时,默认行为是停止监视该文件。Skip_Long_Lines会更改该行为,并指示Fluent Bit跳过长行并继续处理适合缓冲区大小的其他行MultilineOn如果启用,插件将尝试发现多行消息,并使用适当的解析器来编写传出的消息Parser_Firstlinemultiline_pattern匹配多行消息开头的解析器的名称,在parsers.conf中配置
2.2.2.
[FILTER] 过滤日志
官方文档:https://docs.fluentbit.io/manual/pipeline/filters/parser
字段值含义Nameparser使用 FILTER parser插件Matchfeng-sit.匹配 feng-sit. 的日志,在INPUT中打过标签Key_Namelog指定要解析的记录中的字段名Parserlog_parser使用的 Parser规则,在parsers.conf 配置Reserve_DataOn在解析后的结果中保留所有其他原始字段,如果为false,则将删除所有其他原始字段。Preserve_KeyOn如果键是一个转义的字符串(例如stringify JSON),在应用解析器之前取消转义。
2.2.3. [OUTPUT] 输出日志~调试
查看效果: tail -f /var/log/messages
[OUTPUT]
Name stdout
Match feng-sit.*


字段值含义Namestdout使用 OUTPUT stdout插件Matchfeng-sit.匹配 feng-sit. 的日志,在INPUT中打过标签
2.2.4.
[OUTPUT] 输出日志 到kafka
官方文档:https://docs.fluentbit.io/manual/pipeline/outputs/kafka
字段值含义Namestdout使用 OUTPUT stdout插件Matchfeng-sit.var.log.feng-sit.feng-cjmfeng匹配var/log/feng-sit/feng-cjmfeng 的日志
feng INPUT中的Tag为: feng-sit.* Path为:/var/log/feng-sit/.log
Math写成 feng-sit.var.log.feng-sit.feng-cjmfeng
Brokers10.8.xxx.xxx:32001,10.8.xxx.xxx:32002,10.8.xxx.xxx:32003kafka地址Topicstest.sit.feng-cjmfeng.logkafka 的Topic。命名规则:环境.项目.log 例:sit.feng-cjmfeng.logrdkafka.message.max.bytes200000000最大Kafka协议请求消息大小。由于协议版本之间的框架开销不同,生成方无法可靠地在生成时强制执行严格的最大消息限制,并且可能超过协议生成方请求中的最大消息大小,代理将强制执行主题的max.message。字节限制(请参阅Apache Kafka文档)。rdkafka.fetch.message.max.bytes204857600从代理获取消息时,每个主题+分区请求的初始最大字节数。如果客户端遇到大于此值的消息,它将逐步尝试增加该值,直到可以获取整个消息。

[SERVICE]
Flush 5
Daemon Off
Log_Level info
Parsers_File parsers.conf
Plugins_File plugins.conf
HTTP_Server Off
HTTP_Listen 0.0.0.0
HTTP_Port 2020

[INPUT]
Name tail
Tag feng-sit.*
Path /var/log/feng-sit/*.log
DB /var/log/feng-sit.db
Refresh_Interval 1
Rotate_Wait 60
Skip_Long_Lines On
Multiline On
Parser_Firstline multiline_pattern

[INPUT]
Name tail
Tag feng-elevator.*
Path /var/log/feng-elevator/*.log
DB /var/log/feng-elevator.db
Refresh_Interval 1
Rotate_Wait 60
Skip_Long_Lines On
Multiline On
Parser_Firstline multiline_pattern

[FILTER]
Name parser
Match feng-sit.*
Key_Name log
Parser log_parser
Reserve_Data On
Preserve_Key On

[FILTER]
Name parser
Match feng-elevator.*
Key_Name log
Parser log_parser
Reserve_Data On
Preserve_Key On

[OUTPUT]
Name kafka
Match feng-sit.var.log.feng-sit.feng-cjmfeng*
Brokers 10.8.xxx.xxx:32001,10.8.xxx.xxx:32002,10.8.xxx.xxx:32003
Topics test.sit.feng-cjmfeng.log
rdkafka.message.max.bytes 200000000
rdkafka.fetch.message.max.bytes 204857600

[OUTPUT]
Name kafka
Match feng-elevator.var.log.feng-elevator.feng-cjmfeng*
Brokers 10.8.xxx.xxx:32001,10.8.xxx.xxx:32002,10.8.xxx.xxx:32003
Topics test.elevator.feng-cjmfeng.log
rdkafka.message.max.bytes 200000000
rdkafka.fetch.message.max.bytes 204857600

上一篇:【CF587F】Duff is Mad


下一篇:搬运 RGB格式是个啥