多行 filebeat 模式匹配 miltiple 词

multiline filebeat pattern to match miltiple word

这里有些混乱,我必须使用 filebeat 多行模式来收集数据。 问题是如何使用多重模式? 这是我现在用的

multiline.pattern : '^Select'

所以对于上面的模式,我们可以看到所有从 select 开始的单词都会被匹配。所以我的问题是插入、更新和删除单词怎么样?

还有一个问题,我可以使用下面的模式来表示多行匹配的结束吗?

multiline.flush_pattern: ';'

非常感谢任何想法或帮助

第一个问题:

您可以在单个正则表达式中为消息的开头指定多个词。因此,如果我理解正确的话,您想要包括所有以 SelectINSERTUPDATEDELETE 开头的日志行。为此,您将定义一组有效值,如下所示:

multiline.pattern : '^(Select|INSERT|UPDATE|DELETE)

管道字符 ( | ) 充当 OR 运算符。请注意,默认情况下正则表达式区分大小写。所以例如在上面的示例中,将忽略以大写 SELECT 开头的消息。

关于你的第二个问题:

除了multiline.pattern你必须指定设置multiline.match和multiline.negate:

  • multiline.match 确定模式之前或之后的日志行是否应放入单个事件中。

  • multiline.negate 确定以下行是否必须匹配模式。

因此,您无需指定特定的结束字符,而是告诉 Filebeat 匹配该模式并且在该行之后的每个日志行都应该聚合,直到下一行再次匹配该模式。

(有关完整参考和说明,请参阅 https://www.elastic.co/guide/en/beats/filebeat/current/multiline-examples.html)。

示例:

假设您的日志文件结构如下:

Select foo from bar\n where baz = 1\n and id =4711;\n\n DELETE from bar\n where baz = null;\n\n INSERT ...

以下配置应该可以完成工作:

multiline.pattern : '^(Select|INSERT|UPDATE|DELETE)' multiline.match: after multiline.negate: true

希望能帮到你