Grok,使用不同的值进行日志处理

时间:2016-12-06 20:50:20

标签: logstash-grok influxdb telegraf

我有一个日志文件,我用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

1 个答案:

答案 0 :(得分:1)

请尝试这个:

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

如果我没有错过任何内容,它应该捕获lrmsid或者失败