多行日志上的 Fluent Bit 解析

问题描述 投票:0回答:1

我有来自 Log4J2 的多行日志。

图案配置如下:

%d [%20.20t] [%10.10X{nthread}] [%20.20X{tid}] [%20.20X{app}] (%30.30c{3}) %-5p %X{stack} %X{rid} %X{uid} - %m%n

我创建了一个正则表达式来解析它,这似乎工作得很好。在我按照需要的方式配置数据后,这将解析数据。我不太担心一旦我拥有了这部分将如何实际工作(似乎一旦我拉入数据,Filter就会处理我需要的东西)。

(?<timestamp>[\d-]+ [\d:,]+) \[\s*(?<thread>[^\]]+)?\] \[\s*(?<nthread>[^\]]+)?\] \[\s*(?<tid>[^\]]+)?\] \[\s*(?<app>[^\]]+)?\] \(\s*(?<logger>[^\]]+)?\) (?<level>\S+) (?<stack>[^-]+) - (?<message>.*)

然后我尝试为 Fluent Bit 1.9.8 创建一个多行解析器。

[MULTILINE_PARSER]
  Name    custom_app_default
  Type    regex
  #
  # rules   | state name     | regex pattern           | next state
  # --------|----------------| ------------------------|-----------
  rule       "start_state"     "/([\d-]+ [\d:,]+)/"     "cont"
  rule       "cont"            {CONUFSED_PART_HERE}     "cont"

对于

{CONFUSED_PART_HERE}
我尝试了一些不同的事情。具体来说,我想说“任何不以
start_state
中列出的日期格式开头的内容,在正则表达式中使用前瞻。为此,我尝试使用以下方法来完成此操作:

/^(?![\d-]+ [\d:,]+)/

我的输入配置是这样使用的:

[INPUT]
  Name              tail
  Path              /opt/log-mount/**/CustomApp_CORE.log
  Path_Key          filename
  Multiline.Parser  custom_app_default
  Mem_Buf_Limit     5MB
  Skip_Long_Lines   Off
  Refresh_Interval  10

[INPUT]
  Name              tail
  Path              /opt/log-mount/**/CustomApp_ALERTS.log
  Path_Key          filename
  Multiline.Parser  custom_app_default
  Mem_Buf_Limit     5MB
  Skip_Long_Lines   Off
  Refresh_Interval  10

如何告诉多行解析器包含符合该日期格式的所有内容?

multiline fluent-bit
1个回答
0
投票

设置过滤器可以解决多行问题:

[INPUT]
  Name              tail
  Path              /opt/log-mount/**/CustomApp_CORE.log
  Path_Key          filename
  Mem_Buf_Limit     5MB
  Skip_Long_Lines   Off
  Refresh_Interval  10

[INPUT]
  Name              tail
  Path              /opt/log-mount/**/CustomApp_ALERTS.log
  Path_Key          filename
  Mem_Buf_Limit     5MB
  Skip_Long_Lines   Off
  Refresh_Interval  10

[FILTER]
  Name                 multiline
  Match                *
  Multline.Key_Content log
  Multiline.Parser     custom_app_default

现在我只需要弄清楚如何使用我的其他正则表达式解析消息中的数据,这应该很容易。

© www.soinside.com 2019 - 2024. All rights reserved.