Fluent Bit 日志合并正则表达式(下)
#作者:张桐瑞
文章目录
- 7.使用 Fluent Bit 1.9.4 版本,仅配置 multiline -> modify 插件。
- 8.使用 Fluent Bit 1.9.4 版本,仅配置 multiline -> modify 插件。
- 9.使用 Fluent Bit 1.9.4 版本,仅配置 multiline -> modify 插件。
- 10.使用 Fluent Bit 3.0.2 版本,仅配置 multiline 插件。
- 11.使用 Fluent Bit 3.0.2 版本,仅配置 multiline 插件。
- 12.使用 Fluent Bit 1.9.4 版本,仅配置 multiline 插件。
- 13.使用 Fluent Bit 1.9.4 版本,仅配置 multiline 插件。
- 测试结论
- 测试结果
7.使用 Fluent Bit 1.9.4 版本,仅配置 multiline -> modify 插件。
在 FILTER.multiline 中使用正则表达式 new 进行压力测试。
测试配置文件
[SERVICE]Flush 1Parsers_File parsers.confHTTP_Server OnHTTP_Listen 0.0.0.0HTTP_PORT 3194
[INPUT]Name tailTag regex-old-1.9.4DB ./db/regex-old-1.9.4.dbRead_from_Head truePath /var/log/pods/logtest/*.logPath_Key pod_log_path
[FILTER]Name multilineMatch *multiline.key_content logmultiline.parser multiline-regex-newemitter_mem_buf_limit 2048M
[FILTER]Name modifyMatch *Add paas_log_belong userAdd paas_log_type middlewareAdd paas_collection_type userfileAdd paas_account_id 123456789Add paas_region_id lftstAdd paas_product_id cccAdd paas_instance_name test10Add paas_host_ip 127.0.0.1Add paas_manager_ip 127.0.0.1Add pod_namespace defaultAdd pod_name test-0Add pod_container_name test
[OUTPUT]Name fileMatch *Path /vdata/logtest
启动命令
touch /var/log/pods/logtest/error.log
./bin/fluent-bit-1.9.4 -c etc/3.3.7-fluent.conf &> logs/fluent-bit.log &
8.使用 Fluent Bit 1.9.4 版本,仅配置 multiline -> modify 插件。
在 INPUT.tail 中使用正则表达式 old 进行压力测试。
测试配置文件
[SERVICE]Flush 1Parsers_File parsers.confHTTP_Server OnHTTP_Listen 0.0.0.0HTTP_PORT 3194
[INPUT]Name tailTag regex-old-1.9.4DB ./db/regex-old-1.9.4.dbRead_from_Head truePath /var/log/pods/logtest/*.logPath_Key pod_log_pathmultiline.parser multiline-regex-go
[FILTER]Name modifyMatch *Add paas_log_belong userAdd paas_log_type middlewareAdd paas_collection_type userfileAdd paas_account_id 123456789Add paas_region_id lftstAdd paas_product_id cccAdd paas_instance_name test10Add paas_host_ip 127.0.0.1Add paas_manager_ip 127.0.0.1Add pod_namespace defaultAdd pod_name test-0Add pod_container_name test
[OUTPUT]Name fileMatch *Path /vdata/logtest
启动命令
touch /var/log/pods/logtest/error.log
./bin/fluent-bit-1.9.4 -c etc/3.3.8-fluent.conf &> logs/fluent-bit.log &
能识别到文件,但是不采集
[root@cdp-10-191-193-8 fluentbit]# cat logs/fluent-bit.log
Fluent Bit v1.9.4
* Copyright (C) 2015-2022 The Fluent Bit Authors
* Fluent Bit is a CNCF sub-project under the umbrella of Fluentd
* https://fluentbit.io
[2024/07/08 17:13:06] [ info] [fluent bit] version=1.9.4, commit=08de43e474, pid=2373901
[2024/07/08 17:13:06] [ info] [storage] version=1.2.0, type=memory-only, sync=normal, checksum=disabled, max_chunks_up=128
[2024/07/08 17:13:06] [ info] [cmetrics] version=0.3.1
[2024/07/08 17:13:06] [ info] [input:tail:tail.0] multiline core started
[2024/07/08 17:13:06] [ info] [output:file:file.0] worker #0 started
[2024/07/08 17:13:06] [ info] [http_server] listen iface=0.0.0.0 tcp_port=3194
[2024/07/08 17:13:06] [ info] [sp] stream processor started
[2024/07/08 17:13:06] [ info] [input:tail:tail.0] inotify_fs_add(): inode=1074791925 watch_fd=1 name=/var/log/pods/logtest/error.log
采集的日志文件有变化
[root@cdp-10-191-193-8 fluentbit]# ls -l /var/log/pods/logtest/error.log
-rw-r--r-- 1 root root 11941696512 7月 8 17:20 /var/log/pods/logtest/error.log
[root@cdp-10-191-193-8 fluentbit]# ls -l /var/log/pods/logtest/error.log
-rw-r--r-- 1 root root 11983160736 7月 8 17:20 /var/log/pods/logtest/error.log
[root@cdp-10-191-193-8 fluentbit]# ls -l /var/log/pods/logtest/error.log
-rw-r--r-- 1 root root 12107553408 7月 8 17:20 /var/log/pods/logtest/error.log
output指定的目录无任何内容
[root@cdp-10-191-193-8 fluentbit]# ls -l /vdata/logtest/
总用量 0
[root@cdp-10-191-193-8 fluentbit]#
也无法采集到监控
9.使用 Fluent Bit 1.9.4 版本,仅配置 multiline -> modify 插件。
在 INPUT.tail 中使用正则表达式 new 进行压力测试。
测试配置文件
[SERVICE]Flush 1Parsers_File parsers.confHTTP_Server OnHTTP_Listen 0.0.0.0HTTP_PORT 3194
[INPUT]Name tailTag regex-old-1.9.4DB ./db/regex-old-1.9.4.dbRead_from_Head truePath /var/log/pods/logtest/*.logPath_Key pod_log_pathmultiline.parser multiline-regex-new
[FILTER]Name modifyMatch *Add paas_log_belong userAdd paas_log_type middlewareAdd paas_collection_type userfileAdd paas_account_id 123456789Add paas_region_id lftstAdd paas_product_id cccAdd paas_instance_name test10Add paas_host_ip 127.0.0.1Add paas_manager_ip 127.0.0.1Add pod_namespace defaultAdd pod_name test-0Add pod_container_name test
[OUTPUT]Name fileMatch *Path /vdata/logtest
启动命令
touch /var/log/pods/logtest/error.log
./bin/fluent-bit-1.9.4 -c etc/3.3.9-fluent.conf &> logs/fluent-bit.log &
10.使用 Fluent Bit 3.0.2 版本,仅配置 multiline 插件。
在 INPUT.tail 中使用正则表达式 old 进行压力测试。
测试配置文件
[SERVICE]Flush 1Parsers_File parsers.confHTTP_Server OnHTTP_Listen 0.0.0.0HTTP_PORT 3302
[INPUT]Name tailTag regex-fluentDB ./db/regex-fluent.dbRead_from_Head truePath /var/log/pods/logtest/*.logPath_Key pod_log_pathmultiline.parser multiline-regex-go
[OUTPUT]Name fileMatch *Path /vdata/logtest
启动命令
touch /var/log/pods/logtest/error.log
./bin/fluent-bit-3.0.2 -c etc/3.3.10-fluent.conf &> logs/fluent-bit.log &
11.使用 Fluent Bit 3.0.2 版本,仅配置 multiline 插件。
在 INPUT.tail 中使用正则表达式 new 进行压力测试。
测试配置文件
[SERVICE]Flush 1Parsers_File parsers.confHTTP_Server OnHTTP_Listen 0.0.0.0HTTP_PORT 3302
[INPUT]Name tailTag regex-fluentDB ./db/regex-fluent.dbRead_from_Head truePath /var/log/pods/logtest/*.logPath_Key pod_log_pathmultiline.parser multiline-regex-new
[OUTPUT]Name fileMatch *Path /vdata/logtest
启动命令
touch /var/log/pods/logtest/error.log
./bin/fluent-bit-3.0.2 -c etc/3.3.11-fluent.conf &> logs/fluent-bit.log &
12.使用 Fluent Bit 1.9.4 版本,仅配置 multiline 插件。
在 FILTER.multilinel 中使用正则表达式 old 进行压力测试。
测试配置文件
[SERVICE]Flush 1Parsers_File parsers.confHTTP_Server OnHTTP_Listen 0.0.0.0HTTP_PORT 3194
[INPUT]Name tailTag regex-old-1.9.4DB ./db/regex-old-1.9.4.dbRead_from_Head truePath /var/log/pods/logtest/*.logPath_Key pod_log_path
[FILTER]Name multilineMatch *multiline.key_content logmultiline.parser multiline-regex-goemitter_mem_buf_limit 2048M
[OUTPUT]Name fileMatch *Path /vdata/logtest
启动命令
touch /var/log/pods/logtest/error.log
./bin/fluent-bit-1.9.4 -c etc/3.3.12-fluent.conf &> logs/fluent-bit.log &
13.使用 Fluent Bit 1.9.4 版本,仅配置 multiline 插件。
在 FILTER.multilinel 中使用正则表达式 new 进行压力测试。
测试配置文件
[SERVICE]Flush 1Parsers_File parsers.confHTTP_Server OnHTTP_Listen 0.0.0.0HTTP_PORT 3194
[INPUT]Name tailTag regex-old-1.9.4DB ./db/regex-old-1.9.4.dbRead_from_Head truePath /var/log/pods/logtest/*.logPath_Key pod_log_path
[FILTER]Name multilineMatch *multiline.key_content logmultiline.parser multiline-regex-newemitter_mem_buf_limit 2048M
[OUTPUT]Name fileMatch *Path /vdata/logtest
启动命令
touch /var/log/pods/logtest/error.log
./bin/fluent-bit-1.9.4 -c etc/3.3.13-fluent.conf &> logs/fluent-bit.log &
测试结论
本次实验所获得的所有数据,均通过实际测试得出,具体为在每秒内向采集文件写入40M的数据量:
测试结果
在3.0.2版本的Fluent Bit中,无法在FILTER.multiline中使用正则表达式进行日志处理,导致无法采集到输入监控数据,并且输出性能也表现不佳。
在1.9.4版本的Fluent Bit中,不能在INPUT.tail中使用multiline进行日志处理,无法采集到输入和输出的监控数据,同时输出功能无法正常工作。
使用新版本的正则表达式 multiline-regex-new 在性能上稍逊于老版本的 multiline-regex-go,因为新版本的正则表达式修复了老版本在日志合并过程中出现的问题,确保了更准确的日志合并。
下降百分比计算方法如下:
下降百分比 = ((老版本速度 - 新版本速度) / 老版本速度) * 100%
1.9.4 版本使用 modify -> multiline 数据流下降:14%
((11.2M - 9.6M) / 11.2M) * 100% = 14%
1.9.4 版本使用 multiline -> modify 数据流下降:42.5%
((40M - 23M) / 40M) * 100% = 42.5%
3.0.2 版本使用 multiline -> modify 数据流下降:44%
((27.6M - 15.2M) / 27.6M) * 100% = 44%