0

"referer"という名前のフィールドに正規表現を適用して新しいフィールドを追加したいとします。だからオブジェクトは、正規表現のマッチに基づいて新しいフィールドを持つことです! これは私のリファラーの一例である:Logstashで正規表現を適用して新しいフィールドを追加する

http://staticftv-a.akamaihd.net/player/bower_components/player_flash/dist/FranceTVNVPVFlashPlayer.akamai-05bcfb8a5a233afa06de66e8c03d6642.swf 

私はこれは私のlogstash confにあるだけstaticftv-a.akamaihd.net

で新しいフィールドを持つようにしたい:

input { 

    file { 
      path => "/home/ec2-user/AggregateByReferer.csv" 
      start_position => "beginning" 
      sincedb_path => "/dev/null" 
    } 
} 

filter { 

    csv { 
     separator => "," 
     columns => ['session_number', 'referer', 'request_number_total'] 
    } 


    grok { 

     match => { "message" => "%{URI:referer}" } 

    } 


} 


output { 

    elasticsearch { 

    index => "referer" 

    } 
} 

このコードでは、フィールド "メッセージ"は私に奇妙な内容を与えます。これはKibanaでresulatです:

enter image description here

何をしますか?どうも !

答えて

0

私はちょうど私のパターンファイル内などregexパターン持っている:実際に/staticftv-a.akamaihd.netとしての価値を与える

URI (\/)[^\/\+]+ 

を。

あなたのようにあなたのGROKフィルタでそれを使用することができます:あなたはGSUB使用することができ、余分なスラッシュを除去するために

grok {  
    match => { 
     "message" => "%{URI:referer}" <-- the value looks like /staticftv-a.akamaihd.net 
    }  
} 

mutate { 
    gsub => [ 
     "referer", "/", "", 
    ] 
} 

をそして、あなた可能性があり既存のメッセージを新しい値で上書きする:

grok {  
    match => { 
     overwrite => ["message"] 
    }  
} 

grok debugger。これが上記の必要な値を抽出する有効な方法であるかどうかはわかりません。しかし、これが助けて欲しい!

関連する問題