2016-12-06 45 views
0

私はログファイルを持っています。私はそれをtelegraf.logparserで解析してから、それをinfluxdbに送ります。もしそのよう..Grok、異なる値で処理をログする

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

を設定されている場合は、このいずれかを試してください:

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

何も見逃していない場合は、lrmsidまたはfailureのいずれかをキャプチャする必要があります。

+0

はい、「オプション」フィールドが役立ちました! – user1908375

+0

"受け入れる答え"はどうですか? ;) – deveth0

+0

正しい構文は次のとおりです。 '(?:、失敗:%{WORD:失敗})?' – user1908375

関連する問題