2016-08-23 14 views
0

私は数週間からELK tool stackで作業を始めました。何が必要なのは、日付と時刻を含むログイベントのtimestampを取得し、別のフィールド(つまり:log_timestamp)に表示することです。私はDateStampのために利用可能なすべてのオプションを引き出そうとしましたが、何も機能しませんでした。Logstashでyyyymmddをyyyy-mm-ddにフォーマットする方法は?

これは私が持っているログファイルの行です:

20160805 00:00:01.296、GetProvisioning、3、W1oOOW8oj58GhglVjVNg0Ssl4CXA1P、50219--1958335734-1470326399706、SUCCESS、GetProvisioningTransactionId-01223、ヌル、日付 『GROKフィルタW1oOOW8oj58GhglVjVNg0Ssl4CXA1P、EN、CELCOM_MY_DCB 「私が使用することができないんですので、

私は、yyyy-mm-ddとしてログイベントの日付をフォーマットする必要があります』。または、上記のyyyymmdd日付形式でフィルタリングする方法がありますか?

編集: 私はカスタマイズされたパターンとlogstash confのフィルタ部分を添付します。私が使用している

パターン:LOGTIMESTAMP%{YEAR}%{MONTHNUM}%{MONTHDAY} logstash CONFに

フィルタ条件:

filter { 

     grok { 
      patterns_dir => ["/home/chamith/work/ELK/logstash/logstash-2.3.4/bin/patterns"] 
      match => { "message" => "%{GREEDYDATA} %{LOGTIMESTAMP:logtimestamp}" } 

     } 
     mutate { 
      add_field => { 
       "timestamp" => "%{LOGTIMESTAMP}" 
      } 
      remove_field => ["logtimestamp"] 
     } 
     date { 
      match => ["logtimestamp", "yyyyMMdd HH:mm:ss"] 
      target => "logtimestamp" 
     }   
    } 

とKibanaに出力:

enter image description here

任意の助けいただければ幸いです。

+0

このイベントのログ・スタンプのタイムスタンプとして '20160805 00:00:01.296'タイムスタンプを使用しますか? – Fairy

+0

はい、上記のタイムスタンプを '2016-08-05 00:00:01.296' – Kulasangar

答えて

0

dateフィルタを使用すると、タイムスタンプを解析できます。 grokのカスタム正規表現を書きたくない場合は、2つのフィールドを組み合わせてdateフィルタを使用します。あなたのpaticular例えば

grok { 
    match => { "message" => "%{POSINT:time1} %{TIME:time2} ... <Rest goes here> } 
} 
mutate { 
    add_field => { 
     "timestamp" => "%{time1} %{time2}" 
    } 
    remove_field => ["time1", "time2"] 
} 
date { 
    match => { "timestamp" => ""yyyyMMdd HH:mm:ss.SSS } 
} 

これはかなりtimestringを取得し、@timestampフィールドに入れます。

+3

にする必要があります。結果のタイムストリングを' @ timestamp'フィールドに入れたくない場合は、['ターゲット設定](https://www.elastic.co/guide/en/logstash/current/plugins-filters-date.html#plugins-filters-date-target): 'target => log_timestamp' – baudsp

+0

@Fairyありがとうあなたは返事をします。私のカスタムパターンで試しました。しかし、正確な出力(yyyy-mm-dd)を得ることができませんでした。どこが間違っていたのですか? – Kulasangar

+0

あなたのgrokパターンはまったく一致することができません。そのため、あなたは '_grokparsefailure'タグを持っています。あなたのパターンは次のようになります: '%{POSINT:time1}%{TIME:time2}%{GREEDYDATA}' – Fairy

関連する問題