2016-09-05 3 views
0

私はgrokパターンが新しく、カスタムログラインの下にgrokパターンを書き込もうとしています。 ログラインに与えられたフィールドの値を抽出したいとします。 ServiceNameSystemDateSequenceNameなど、TID,[0] [timestamp]と一緒にも。どんな助けでも大いに感謝しています。カスタムログラインのGrokパターン

ログイン:

TID: [0] [ESB] [2016-08-16 10:35:10,828] [jms-Worker-2] INFO {org.apache.synapse.mediators.builtin.LogMediator} - ServiceName = CustomerService_v1,SystemDate = 8/16/16 10:35 AM,ServerIP = 10.200.42.158,ServerHost = slllasp102.local,SequenceName = SendCustomerToTopic,Message = Going to Send Message to Customer Topic,MessageCode = null,ErrorMessage = null,ErrorDetail = null,ErrorException = null {org.apache.synapse.mediators.builtin.LogMediator} 

がMyPattern:

\[%{TIMESTAMP_ISO8601:timestamp}\]\s+%{WORD:loglevel}\s+-\s+%{GREEDYDATA:ServiceName} 

私はフィールドの一つ一つを取得し、正しいパターンを書き込むことができません。私はあなたのGROKパターンを完成

+1

あなたが既に持っているかを示すためにあなたの質問を更新してください試しました。ありがとうございました。 –

+0

私たちはあなたの仕事をするためにここにいません、解決するために問題を示す必要があります。 cf http://stackoverflow.com/help/how-to-ask – baudsp

+0

grokパターンをテストするためのhttp://grokconstructor.appspot.com/do/match https://github.com/logstash-/grostash-patterns/core/tree/master/patterns /のパターンを作成し、[grok-patterns](https://github.com/logstash-plugins/logstash-patterns-core/blob/master)にある基本的なパターンを使用します。 /パターン/ grokパターン)。また、kvフィルタを使用してフィールドを抽出する方が良いかもしれません(grokを使ってログの最初の部分を抽出する必要があります) – baudsp

答えて

0

、それは次のようになります。

TID: \[%{INT:TID}\] \[ESB\] \[%{TIMESTAMP_ISO8601:timestamp}\]\[jms-Worker-2\]\s+%{WORD:loglevel} {%{GREEDYDATA}} - %{GREEDYDATA:fields} {%{GREEDYDATA}} 

はその後、フィールドを抽出するためにkv filterを使用しています。 grokフィルタを使用するよりも簡単に行うことができます。 構成は次のようになります。

kv { 
    source => "field" # That's the field I created in the grok filter containing the fields (ServiceName = CustomerService_v1,SystemDate = 8/16/16 10:35 AM...) 
    value_split => "=" 
    field_split => "," 
    trimkey => " " 
    trim => " " 
} 

あなたはKVフィルタを使用しないことを好む場合は、あなたがで%{GREEDYDATA:fields}を交換する必要があります:\s+ServiceName =%{GREEDYDATA:ServiceName},SystemDate =%{GREEDYDATA:SystemDate},...

関連する問題