我尝试使用grok解析日志文件
日志文件的每一行都有以逗号分隔的字段:
13,home,ABC,Get,,Private, Public,1.2.3 ecc...
我正在使用这样的匹配:
match => [ "message", "%{NUMBER:requestId},%{WORD:ServerHost},%{WORD:Service},
...
我的问题是:我可以允许选择字段吗?
有时,某些文件可能为空,,
是否存在与此2.3.5
之类的字符串匹配的模式?
(一种版本号)
答案 0 :(得分:57)
在它的基础上,grok基于正则表达式,因此您可以使用()?
包围模式以使其成为可选模式 - 例如(%{NUMBER:requestId})?,
如果没有适合您需要的grok模式,您可以随时创建一个命名提取,如下所示:(?<version>[\d\.]+)
将提取到版本中,该字符串中包含任意数量的数字和点。