如何修复 Fluentbit 解析器不一致(使用 rubular)?

How to fix Fluentbit parser inconsistency (with rubular)?

提问人:Bronco Oostermeyer 提问时间:11/3/2023 更新时间:11/3/2023 访问量:14

问:

我正在尝试解析具有以下结构的字符串:

[2023/11/01@15:05:14.958+0100] P-3064 T-33556 I TSRV 3: (7129) Usr 5 set name to bronco.

有了 rubular.com,我得出了以下结论:

^\[(?<time>[^ ]*)\] (?<process>P.[\d]*) (?<thread>T.[\d]*) (?<severity>(I|W|F)) (?<component>[^\.]*): \((?<messagenumber>[\(\d\)]*)\) (?<message>.*)

这会在 rubular 网站上的预期字段中完美地分解字符串。 但是,当我将此表达式放在 FluentBit 解析器的正则表达式字段时,它只是将所有内容放在 JSON 的属性中。log

"}] db-log: [1699002010.566232300, {"log"=>"[2023/11/03@10:00:10.536+0100] P-3064 T-33556 I TSRV 3: (7129) Usr 5 set name to bronco.

我很困惑我在这里做错了什么?顺便说一句,时间不是解析时间,而是 FLuentbit 生成的时间。

更令人费解的是,当我使用

Regex   ^\[(?<time>[^ ]*)\]\s(?<process>[^ ]*)\s(?<thread>[.]*)\s

我得到了正确的输出:

[14] db-log: [1699005722.832000000, {"process"=>"P-3064"}]

并且时间解析器正确。但是,当添加任何新字段时,一切都会失败,并且输出 JSON 只有该属性。log

解析 Fluent-bit rubular

评论


答: 暂无答案