2017-09-20 21 views
0

Logstash設定ファイルにカスタム正規表現を作成してGROKフィルタを書き込むことはできましたが、Grokを初めて使用しました。次のように私の問題は次のとおりです。Logstash/GROK:ログファイルを解析する際のカスタム変数の作成

ソースフィールド - 私は、すべてのイベントは、例えば、ログファイルの名前である「ソース」フィールドを含んでいるログファイル、解析しています :

test.YYYYMMDD_HHMMSS.log 

私は何をしたいです:「ソース」は、このファイル名が含まれている各イベントについて、完全に理解フィルター内の新しいフィールド内で、次の形式で日付と時刻を抽出します。

DD/MM/YYYY HH:MM:SS 

私はGROKでカスタム正規表現(REs)を書く方法を知っていますが、変数に格納する前にデータと一致するREを書くことはできません。だから私の問題です。

誰でもお手伝いできますか?

ありがとうございます!

+0

データを保存して保存する必要がある理由がわかりません。どのようにそれを一致させて、新しい変数を追加するか、または古い変数を[mutate filter plugin](https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html)に置き換えるのはどうですか? – Phonolog

+0

問題は、私が解析しているアプリケーションのログで、Start TimeStampがファイルの最初の行に含まれていることです。 "開始:YYYY/MM/DD HH:MM:SS"。そして私はグローバル変数を作成するためにmutate構文を使う方法を知らない。 – sgrover

+0

私が上記で尋ねたのは、ログファイルの名前から開始タイムスタンプを抽出/操作するのが簡単だと思った第2の選択肢でした。 – sgrover

答えて

1

ファイル名から日付を抽出すると効果があります。あなたはGROKフィルタでソースフィールドの日付部分と一致し、そのように新しいフィールドを追加することができるはずです。

filter { 
    grok { 
     match => [ 
     "source", "test.%{YEAR:year}%{MONTHNUM2:month}%{DATA:day}_%{HOUR:hour}%{MINUTE:minute}%{SECOND:second}.log" 
     ] 
    } 
    mutate { add_field => { "your_new_date_field" => "%{day}/%{month}/%{year} %{hour}:%{minute}:%{second}" } } 
} 

私は今、この権利をテストする可能性を持っていないが、私はあなたが得る願っていますアイディア。

このソリューションは、年、月、日などの多くの追加フィールドを作成します。追加のフィールドを取り除きたい場合は、metadata fieldsを使用できます。

関連する問題