捕获流利的 X 线

Capturing X lines in fluentd

我试图让 fluentd 侦听一个 tcp 套接字,它将接收 ascii 输入行,并将 100 行的组捕获到每个事件中。

我看到有一个支持格式 multiline 的 tcp 输入。如本例所示:

format multiline
format_firstline /^Started/
format1 /Started (?<method>[^ ]+) "(?<path>[^"]+)" for (?<host>[^ ]+) at (?<time>[^ ]+ [^ ]+ [^ ]+)\n/
format2 /Processing by (?<controller>[^\u0023]+)\u0023(?<controller_method>[^ ]+) as (?<format>[^ ]+?)\n/

不幸的是,就我的数据而言,每一行都具有相同的格式,因此我无法根据行的格式确定一个事件应该从哪里开始以及从哪里结束。相反,我希望它总是将 X(在我的例子中是 100)行组合成一个事件,然后开始下一个事件。

我一直在尝试像这样的奇特的多行正则表达式,但我怀疑 fluentd 总是逐行匹配它们,所以它永远不会匹配多行正则表达式:

format /^(?<data>(?:[^ ]+ [^ ]+ [^ ]+\r){100})$/

tcp输入暂时不支持多行。 你的情况,将 X 行捕获到一个事件中,是非常罕见的,所以编写你的解析器比组合复杂的配置更好。

http://docs.fluentd.org/articles/plugin-development#parser-plugins