0

Ich möchte ein neues Feld hinzufügen, indem Sie eine Regex auf ein Feld namens "Referer" anwenden. Das Ziel ist also, ein neues Feld basierend auf der Regex-Übereinstimmung zu haben! Diese ist ein Beispiel für meine Referer:Fügen Sie ein neues Feld hinzu, indem Sie eine Regex mit Logstash anwenden

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

Ich möchte ein neues Feld haben, mit nur staticftv-a.akamaihd.net

Das ist mein logstash conf:

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" 

    } 
} 

Mit diesem Code gibt mir das Feld "Nachricht" einen merkwürdigen Inhalt. Dies ist die resulat in Kibana:

enter image description here

Was ist zu tun? Danke !

Antwort

0

Ich habe gerade das regex Muster als solche in meiner Muster Datei:

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

, die tatsächlich den Wert als /staticftv-a.akamaihd.net gibt.

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

Um zu entfernen, dass zusätzlichen Schrägstrich, könnten Sie gsub verwenden:

Sie es in Ihren grok Filter als verwenden könnten

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

Und dann könnte man überschreiben Sie einfach die vorhandene Nachricht mit dem neuen Wert:

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

Die grok debugger. Ich bin mir nicht sicher, ob dies eine effektive Möglichkeit ist, den erforderlichen Wert zu extrahieren. Aber hoffe das hilft!

Verwandte Themen