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

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.xdnf.cn/news/17826.html

相关文章:

  • Docker守护进程安全加固在香港VPS环境的操作标准
  • n8n、Workflow实战
  • PyCharm Community 2024.2.3.exe 安装教程(详细步骤,附安装包下载)
  • 2-1〔O҉S҉C҉P҉ ◈ 研记〕❘ 漏洞扫描▸理论基础与NSE脚本
  • 《飞算JavaAI:新一代智能编码引擎,革新Java研发范式》
  • python3.10.6+flask+sqlite开发一个越南留学中国网站的流程与文件组织结构说明
  • 微调入门:为什么微调
  • LeetCode 分割回文串
  • MySQL-单表查询
  • GitHub的简单使用方法----(5)
  • C++联合体的定义
  • 春日花园动画
  • 9. React组件生命周期
  • linux远程部署dify和mac本地部署dify
  • 机器学习—— TF-IDF文本特征提取评估权重 + Jieba 库进行分词(以《红楼梦》为例)
  • 能刷java题的网站
  • ROS教育中自动驾驶机器人的技术融合与技术创新
  • 如何将 AGV 叉车成功集成到仓库自动化系统中?
  • Apache 服务器基础配置与虚拟主机部署
  • AI智能体如何从错误中学习:反思机制详解
  • Flutter ExpansionPanel组件(可收缩的列表)
  • 云原生作业(tomcat)
  • 异或和查询
  • echarts配置项详细解释
  • C99中的变长数组(VLA)
  • THCV215一种高速视频数据收发器,采用低电压差分信号(LVDS)技术支持高速串行数据传输,支持1080p/60Hz高分辨率传输
  • 计算机网络---默认网关(Default Gateway)
  • C++ Rust与Go
  • Vue接口平台小功能——发送报告到飞书
  • 计算机网络摘星题库800题笔记 第4章 网络层