Grok,不同值的日志处理

Grok, logs processing with different values

我有一个日志文件,我正在用 telegraf.logparser 解析它,然后将它发送到 influxdb。问题是,我的日志文件在一个完整的字符串中有不同的字段:

2016-12-06 11:13:34 job id: mHiMMDmCDFKDmGXNMhm, lrmsid: 13370
2016-12-06 11:14:34 job id: seeeeeewsda33rfddSD, lrmsid: 13371
2016-12-06 11:14:37 job id: dmABFKDmqKcNDmHBFKD, failure: "Timeout"

我可以匹配其中的一行

%{TIMESTAMP_ISO8601} job id: %{WORD:jobid}, lrmsid: {%WORD.lrmsid}
or
%{TIMESTAMP_ISO8601} job id: %{WORD:jobid}, failure: {%WORD.fail}

但是我怎样才能同时获得两者.. 这样,如果未设置 lrmsid,它将获得 lrmsid=null, and failure="Timeout".. 如果设置了 lrmsid,则其 lrmsid=12345 and failure=null

请试试这个:

(lrmsid: %{WORD:lrmsid})?(failure: "%{WORD:failure}")?

如果我没有遗漏任何东西,它应该捕获 lrmsid 或失败