2017-03-07 5 views
0

私はいくつかのパターンに一致するログをフィルタリングしようとしています。例えば:私は抽出する基本的パターン:複数の定義済みパターンのlogstashでのGrokフィルタリング

E/vincinity/dholland_view_sql_global/IN/Cluster_Node/SSL-CACHE/Dsal1 
F/vincinity/dholland_view_sql_local/IN/Cluster_Node3/SSL-CACHE/Dsal4 

R/vincinity/dholland_view_sql_bran/IN/Cluster_Node /サンプル/ vr1.log

は、今私は丸太の束から、これらの3つのパスをgrep検索したいですそれは単に*vincinity*sql*IN* だろう正規表現を持つように、「vincinity」「SQL」と「IN」を含むログは、私はこのGROKフィルタを試している:

grok { 

    match => { "Vinc" => "%{URIPATHPARAM:*vincinity*sql*IN*}" } 

    } 

は、その後、私はkibanaで_grokparsefailureを取得する - 私は完全に理解する新しいブランドです、だからおそらく私はこれに近づいていないctly。

GROKフィルタが動作するはず方法はmessageである

grok { 
    match => { 
    "message" => "%{PATTERN:named_capture}" 
    } 
} 

ある:GROKパターンのgrok filter documentation

構文から

+0

あなたの表現は近いです。 '(?。*?vincinity。*?sql。*?IN。*)'はおそらくあなたのためにうまくいくでしょう。 '。*? '構造体は'。* 'の非貪欲型構造であり、結果として幾分良い結果を出さなければなりません。より少ない部分文字列検索。 – sysadmin1138

答えて

0

は{SEMANTIC SYNTAX}%です解析するフィールドは、ほとんどの入力が解析されていないログラインを配置する既定のフィールドです。

URIPATHPARAMパターンは、Oniguramaと呼ばれる正規表現言語を使用してpredefined in logstashです。それはあなたの全体のログメッセージに一致するかもしれませんが、それはあなたのためにそれの特定の塊をキャプチャしません。

grokパターンを構築するためのヘルプについては、docsを参照してください。これらのパターンは、便利なパターン構築ツールにリンクしています。

0

あなたのGROKブロックにcustom patternを使用するための正しい形式は次のとおりです。

(?<field_name>the pattern here) 

か、このように別々のファイル(私の-pattern.txt)に(正規表現を使用して)独自のカスタムパターンを定義することができます。

MYPATH_MUST_BE_UPPERCASE Regex_Pattern 

./patternsディレクトリに保存した後、このようにそれを使用します。

grok { 
    patterns_dir => "./patterns" 
    match => ["message" , "%{MYPATH_MUST_BE_UPPERCAS:path}"] 
} 

あなたの場合:

(?<vincinity>(?>/\s*.*?vincinity.*?\s*)+) 
(?<sql>(?>/\s*.*?sql.*?/\s*)+) 
(?<in>(?>\s*.*?(IN).*?\s*)+) 
+0

これは便利ですが、私は_grokparseexceptionを取得します –

+0

正規表現をhttps://grokdebug.herokuapp.comで確認してください。式の中に改行(\ nまたは入力)を入れないでください –

+0

正規表現が正しくフィルタリングされていますhttp://regexr.com/ではなくhttps://grokdebug.herokuapp.com/。* vincinity。* _ sql _。* IN。* –

関連する問題