#作者:张桐瑞
文章目录
- 前言
- 测试方法
- 1.使用 Fluent Bit 3.0.2 版本,仅配置 multiline -> modify 插件。
- 2.使用 Fluent Bit 3.0.2 版本,仅配置 multiline -> modify 插件。
- 3.使用 Fluent Bit 3.0.2 版本,仅配置 multiline -> modify 插件。
- 4.使用 Fluent Bit 1.9.4 版本,仅配置 modify -> multiline 插件。
- 5.使用 Fluent Bit 1.9.4 版本,仅配置 modify -> multiline 插件。
- 6.使用 Fluent Bit 1.9.4 版本,仅配置 multiline -> modify 插件。
前言
在处理日志时,Fluent Bit 使用正则表达式来解析和合并日志条目。针对error日志中部分错误日志不合并的问题,我们更新了正则表达式,并进行了测试以验证不同正则表达式的性能表现。以下是更新前后的配置:
[MULTILINE_PARSER]
name multiline-regex-go
type regex
flush_timeout 1000
rule "start_state" "/(\d+\:\d+\:\d+)/" "cont"
rule "cont" "/^\s+at.*|^[a-zA-Z]+.*/" "cont"
[MULTILINE_PARSER]
name multiline-regex-new
type regex
flush_timeout 1000
rule "start_state" "/(\d{2}:\d{2}:\d{2})/" "cont"
rule "cont" "/^(?!.*(\d{2}:\d{2}:\d{2})).*$/" "cont"
为了彻底解决 Fluent Bit 1.9.4 版本中 emitter_mem_buf_limit 内存溢出问题,官方社区在 3.0.2 版本进行了修复。详细修复内容请参考该修复 PR:GitHub PR #8473。因此,本章节也将测试 3.0.2 版本的性能指标。
测试方法
测试方案与流程
1.使用 Fluent Bit 3.0.2 版本,仅配置 multiline -> modify 插件。
在 FILTER.multiline 中使用正则表达式 old 进行压力测试。
测试配置文件
[SERVICE]
Flush 1
Parsers_File parsers.conf
HTTP_Server On
HTTP_Listen 0.0.0.0
HTTP_PORT 3302
[INPUT]
Name tail
Tag regex-fluent
DB ./db/regex-fluent.db
Read_from_Head true
Path /var/log/pods/logtest/*.log
Path_Key pod_log_path
[FILTER]
Name multiline
Match *
multiline.key_content log
multiline.parser multiline-regex-go
emitter_mem_buf_limit 2048M
[FILTER]
Name modify
Match *
Add paas_log_belong user
Add paas_log_type middleware
Add paas_collection_type userfile
Add paas_account_id 123456789
Add paas_region_id lftst
Add paas_product_id ccc
Add paas_instance_name test10
Add paas_host_ip 127.0.0.1
Add paas_manager_ip 127.0.0.1
Add pod_namespace default
Add pod_name test-0
Add pod_container_name test
[OUTPUT]
Name file
Match *
Path /vdata/logtest
启动命令
touch /var/log/pods/logtest/error.log
./bin/fluent-bit-3.0.2 -c etc/3.3.1-fluent.conf &> logs/fluent-bit.log &
2.使用 Fluent Bit 3.0.2 版本,仅配置 multiline -> modify 插件。
在 INPUT.tail 中使用正则表达式 old 进行压力测试。
测试配置文件
[SERVICE]
Flush 1
Parsers_File parsers.conf
HTTP_Server On
HTTP_Listen 0.0.0.0
HTTP_PORT 3302
[INPUT]
Name tail
Tag regex-fluent
DB ./db/regex-fluent.db
Read_from_Head true
Path /var/log/pods/logtest/*.log
Path_Key pod_log_path
multiline.parser multiline-regex-go
[FILTER]
Name modify
Match *
Add paas_log_belong user
Add paas_log_type middleware
Add paas_collection_type userfile
Add paas_account_id 123456789
Add paas_region_id lftst
Add paas_product_id ccc
Add paas_instance_name test10
Add paas_host_ip 127.0.0.1
Add paas_manager_ip 127.0.0.1
Add pod_namespace default
Add pod_name test-0
Add pod_container_name test
[OUTPUT]
Name file
Match *
Path /vdata/logtest
启动命令
touch /var/log/pods/logtest/error.log
./bin/fluent-bit-3.0.2 -c etc/3.3.2-fluent.conf &> logs/fluent-bit.log &
3.使用 Fluent Bit 3.0.2 版本,仅配置 multiline -> modify 插件。
在 INPUT.tail 中使用正则表达式 new 进行压力测试。
测试配置文件
[SERVICE]
Flush 1
Parsers_File parsers.conf
HTTP_Server On
HTTP_Listen 0.0.0.0
HTTP_PORT 3302
[INPUT]
Name tail
Tag regex-fluent
DB ./db/regex-fluent.db
Read_from_Head true
Path /var/log/pods/logtest/*.log
Path_Key pod_log_path
multiline.parser multiline-regex-new
[FILTER]
Name modify
Match *
Add paas_log_belong user
Add paas_log_type middleware
Add paas_collection_type userfile
Add paas_account_id 123456789
Add paas_region_id lftst
Add paas_product_id ccc
Add paas_instance_name test10
Add paas_host_ip 127.0.0.1
Add paas_manager_ip 127.0.0.1
Add pod_namespace default
Add pod_name test-0
Add pod_container_name test
[OUTPUT]
Name file
Match *
Path /vdata/logtest
启动命令
touch /var/log/pods/logtest/error.log
./bin/fluent-bit-3.0.2 -c etc/3.3.3-fluent.conf &> logs/fluent-bit.log &
4.使用 Fluent Bit 1.9.4 版本,仅配置 modify -> multiline 插件。
在 FILTER.multiline 中使用正则表达式 old 进行压力测试。
测试配置文件
[SERVICE]
Flush 1
Parsers_File parsers.conf
HTTP_Server On
HTTP_Listen 0.0.0.0
HTTP_PORT 3194
[INPUT]
Name tail
Tag regex-old-1.9.4
DB ./db/regex-old-1.9.4.db
Read_from_Head true
Path /var/log/pods/logtest/*.log
Path_Key pod_log_path
[FILTER]
Name modify
Match *
Add paas_log_belong user
Add paas_log_type middleware
Add paas_collection_type userfile
Add paas_account_id 123456789
Add paas_region_id lftst
Add paas_product_id ccc
Add paas_instance_name test10
Add paas_host_ip 127.0.0.1
Add paas_manager_ip 127.0.0.1
Add pod_namespace default
Add pod_name test-0
Add pod_container_name test
[FILTER]
Name multiline
Match *
multiline.key_content log
multiline.parser multiline-regex-go
emitter_mem_buf_limit 2048M
[OUTPUT]
Name file
Match *
Path /vdata/logtest
启动命令
touch /var/log/pods/logtest/error.log
./bin/fluent-bit-1.9.4 -c etc/3.3.4-fluent.conf &> logs/fluent-bit.log &
5.使用 Fluent Bit 1.9.4 版本,仅配置 modify -> multiline 插件。
在 FILTER.multiline 中使用正则表达式 new 进行压力测试。
测试配置文件
[SERVICE]
Flush 1
Parsers_File parsers.conf
HTTP_Server On
HTTP_Listen 0.0.0.0
HTTP_PORT 3194
[INPUT]
Name tail
Tag regex-old-1.9.4
DB ./db/regex-old-1.9.4.db
Read_from_Head true
Path /var/log/pods/logtest/*.log
Path_Key pod_log_path
[FILTER]
Name modify
Match *
Add paas_log_belong user
Add paas_log_type middleware
Add paas_collection_type userfile
Add paas_account_id 123456789
Add paas_region_id lftst
Add paas_product_id ccc
Add paas_instance_name test10
Add paas_host_ip 127.0.0.1
Add paas_manager_ip 127.0.0.1
Add pod_namespace default
Add pod_name test-0
Add pod_container_name test
[FILTER]
Name multiline
Match *
multiline.key_content log
multiline.parser multiline-regex-new
emitter_mem_buf_limit 2048M
[OUTPUT]
Name file
Match *
Path /vdata/logtest
启动命令
touch /var/log/pods/logtest/error.log
./bin/fluent-bit-1.9.4 -c etc/3.3.5-fluent.conf &> logs/fluent-bit.log &
6.使用 Fluent Bit 1.9.4 版本,仅配置 multiline -> modify 插件。
在 FILTER.multiline 中使用正则表达式 old 进行压力测试。
测试配置文件
[SERVICE]
Flush 1
Parsers_File parsers.conf
HTTP_Server On
HTTP_Listen 0.0.0.0
HTTP_PORT 3194
[INPUT]
Name tail
Tag regex-old-1.9.4
DB ./db/regex-old-1.9.4.db
Read_from_Head true
Path /var/log/pods/logtest/*.log
Path_Key pod_log_path
[FILTER]
Name multiline
Match *
multiline.key_content log
multiline.parser multiline-regex-go
emitter_mem_buf_limit 2048M
[FILTER]
Name modify
Match *
Add paas_log_belong user
Add paas_log_type middleware
Add paas_collection_type userfile
Add paas_account_id 123456789
Add paas_region_id lftst
Add paas_product_id ccc
Add paas_instance_name test10
Add paas_host_ip 127.0.0.1
Add paas_manager_ip 127.0.0.1
Add pod_namespace default
Add pod_name test-0
Add pod_container_name test
[OUTPUT]
Name file
Match *
Path /vdata/logtest
启动命令
touch /var/log/pods/logtest/error.log
./bin/fluent-bit-1.9.4 -c etc/3.3.6-fluent.conf &> logs/fluent-bit.log &