多输入(input)多输出(output)验证
#作者:程宏斌
文章目录
- 前言
- Flb 1.9.4 INCLUDE配置测试
- 测试方案
- 测试配置文件
- 测试命令
- Flb 3.0.2 INCLUDE配置测试
- 测试方案
- 测试配置文件
- 启动命令
- 结论
- 结论一:
- 结论二:
前言
需要设计并执行一组测试用例,这些测试用例将包括以子文件形式组织的多输入(input)和多输出(output)的场景。
Flb 1.9.4 INCLUDE配置测试
测试方案
这里设定了两组输入和输出:一组从/vdata/logtest/input1/*收集日志,输出到/var/log/pods/logtest/regex-input1目录;另一组从/vdata/logtest/input2/*收集日志,发送到/var/log/pods/logtest/regex-input2。
测试配置文件
fluent-bit.conf
@INCLUDE 9.2.2input.conf
@INCLUDE 9.2.2output.conf
[SERVICE]Flush 1Parsers_File parsers.confHTTP_Server OnHTTP_Listen 0.0.0.0HTTP_PORT 3194
[INPUT]Name tailTag regex-input1DB ./db/regex-fluent.dbRead_from_Head truePath /vdata/logtest/input1/*.logPath_Key pod_log_path
[FILTER]Name multilineMatch *multiline.key_content logmultiline.parser multiline-regex-goemitter_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 regex-input1Path /var/log/pods/logtest
input.conf
[INPUT]Name tailTag regex-input2DB ./db/regex-fluent.dbRead_from_Head truePath /vdata/logtest/input2/*.logPath_Key pod_log_path
output.conf
[OUTPUT]Name fileMatch regex-input2Path /var/log/pods/logtest
测试命令
mkdir -p /vdata/logtest/input1 /vdata/logtest/input2
touch /vdata/logtest/input1/error.log /vdata/logtest/input2/error.log
./bin/fluent-bit-1.9.4 -c etc/9.2.2fluent-bit.conf &>./logs/fluent-bit.log &
#此处根据多个input修改脚本,让日志文件同时输出两份到不同的目录
timeout 1200 bash 9create_test_log.sh 40 &
Flb 3.0.2 INCLUDE配置测试
测试方案
这里设定了两组输入和输出:一组从/var/log/pods/logtest/input1/.log收集日志,输出到/home/logtest目录;另一组从/var/log/pods/logtest/input2/.log收集日志,发送到Kafka。
测试配置文件
fluent-bit.conf
这里使用上一章节的INCLUDE配置文件,因为在3.0.2版本和1.9.4版本中,multiline处理参数有所不同。
@INCLUDE 9.2.2input.conf
@INCLUDE 9.2.2output.conf
[SERVICE]Flush 1Parsers_File parsers.confHTTP_Server OnHTTP_Listen 0.0.0.0HTTP_PORT 3302
[INPUT]Name tailTag regex-input1DB ./db/regex-fluent.dbRead_from_Head truePath /vdata/logtest/input1/*.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 regex-input1Path /var/log/pods/logtest
启动命令
mkdir -p /vdata/logtest/input1 /vdata/logtest/input2
touch /vdata/logtest/input1/error.log /vdata/logtest/input2/error.log
./bin/fluent-bit-3.0.2 -c etc/9.3.2fluent-bit.conf &>./logs/fluent-bit.log &
#此处根据多个input修改脚本,让日志文件同时输出两份到不同的目录
timeout 1200 bash 9create_test_log.sh 40 &
结论
监控数据汇总:
结论一:
fluent-bit能够根据 INCLUDE 配置的规则,将来自不同输入源的日志条目发送到不同的输出目标,实现灵活的日志处理和管理。
结论二:
使用多组 input 和 output 并没有明显提升 Fluent Bit 的采集性能。从测试结果可以看出,虽然不同版本的 Fluent Bit 在单独配置 input 和 output 时表现出一定的性能差异,但在同时配置多组 input 和 output 时,并未表现出显著的性能提升。这表明,增加多组配置可以简化配置的阅读性,但并不能显著提高日志采集的效率。