当前位置: 首页 > news >正文

Fluent Bit 日志合并正则表达式(上)

#作者:张桐瑞

文章目录

  • 前言
  • 测试方法
    • 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-gotype          regexflush_timeout 1000rule      "start_state"   "/(\d+\:\d+\:\d+)/"  "cont"rule      "cont"          "/^\s+at.*|^[a-zA-Z]+.*/"              "cont"
[MULTILINE_PARSER]name          multiline-regex-newtype          regexflush_timeout 1000rule      "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 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_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 *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 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
[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-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 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
[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-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 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 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 
[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.4-fluent.conf  &> logs/fluent-bit.log &

5.使用 Fluent Bit 1.9.4 版本,仅配置 modify -> multiline 插件。

在 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 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 
[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.5-fluent.conf  &> logs/fluent-bit.log &

6.使用 Fluent Bit 1.9.4 版本,仅配置 multiline -> modify 插件。

在 FILTER.multiline 中使用正则表达式 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
[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.6-fluent.conf  &> logs/fluent-bit.log &
http://www.dtcms.com/a/328504.html

相关文章:

  • Nginx 高级配置
  • Python训练Day41
  • 基于PAI-ChatLearn的GSPO强化学习实践
  • LLM - 搭建 Grounded SAM 2 模型的视觉检测与分割服务 API
  • CMake笔记:PUBLIC/PRIVATE/INTERFACE的使用
  • FreeRTOS---基础知识6---事件组
  • Effective C++ 条款37:绝不重新定义继承而来的缺省参数值
  • Linux系统编程Day13 -- 程序地址空间
  • Vue3 整合高德地图完成搜索、定位、选址功能,已封装为组件开箱即用(最新)
  • 前端对接豆包AI(vue3+TS版本)
  • 力扣-739.每日温度
  • Leetcode-138. 复制带随机指针的链表
  • AI智能体的“四大支柱”:CAP框架核心层、执行层、约束层、操作层详解​
  • 手机蓝牙无感开锁在智能柜锁与智能箱包中的整体解决方案
  • Iptables 详细使用指南
  • 10-docker基于dockerfile自动制作镜像
  • 计算机网络摘星题库800题笔记 第5章 传输层
  • Ansible 详细笔记
  • _init__.py的作用
  • 电路板的GND与外壳地EARTH通过电容电阻相连
  • 操作系统1.6:虚拟机
  • 图形设计器-Qt Designer (一)包含 LinuxCNC 小部件
  • 基于LLVM的memcpy静态分析工具:设计思路与原理解析(C/C++代码实现)
  • 浏览器面试题及详细答案 88道(12-22)
  • word——选项自动对齐(针对试卷中选项对齐)
  • 2025牛客暑期多校训练营3(FDJAEHB)
  • SuperMap GIS基础产品FAQ集锦(20250811)
  • 多级库存预警:浪智WMS智慧化系统的实时监控体系
  • 启保停-----------单相照明灯的接法
  • LaTex论文审稿修改