官方文档:https://docs.fluentbit.io/manual/installation/linux/redhat-centos
[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:
yum install td-agent-bit
#启用服务
sudo service td-agent-bit start
#重启服务
sudo service td-agent-bit restart
#停止服务
sudo service td-agent-bit stop
service td-agent-bit status
d-agent-bit的默认配置是收集CPU使用率指标并将记录发送到标准输出,您可以在/var/log/messages文件中看到传出数据。
官方文档: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
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-cjmfengBrokers10.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