日志文件中的 Logstash 可选字段

Logstash optional fields in logfile

我正在尝试使用 grok 解析日志文件

日志文件的每一行都有以逗号分隔的字段:

13,home,ABC,Get,,Private, Public,1.2.3 ecc...

我正在使用这样的匹配: match => [ "message", "%{NUMBER:requestId},%{WORD:ServerHost},%{WORD:Service},...

我的问题是:我可以允许可选字段吗? 有时一些字段可能是空的 ,,

是否有匹配这样的字符串的模式2.3.5? (一种版本号)

在它的基础上,grok 是基于正则表达式的,所以你可以用 ()? 包围一个模式,使其成为可选的——例如 (%{NUMBER:requestId})?,

如果没有满足您需要的 grok 模式,您始终可以创建一个命名的提取,如下所示:(?<version>[\d\.]+) 它将提取到版本中,一个包含任意数量数字和点的字符串它。