0
Parsen

hier ist mein Problem: Lassen Sie uns sagen, dass ich einige Standard-Apache-Logs haben, etwa so:benutzerdefinierte Feld hinzufügen auf Augmented Apache Protokoll mit Grok in Logstash

IP1 IP2 - - [13/Jun/2016:14:45:05 +0200] "GET /page/requested.html HTTP/1.1" 200 4860 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0" 

ich diese Protokolle mit meiner aktuellen Konfiguration erfolgreich analysieren kann von Logstash:

input { 
    file { 
     path => '/home/user/logsDir/*' 
    } 
} 

filter { 
    grok { 
     match => { "message" => "%{COMBINEDAPACHELOG}"} 
    } 
} 

output { 
    elasticsearch { } 
    stdout { codec => rubydebug } 
} 

Aber auf diesen Protokollen, wende ich einigen Algorithmus für maschinelles Lernen und ich gebe ihnen ein score. So ist die neue Protokollzeile sieht wie folgt aus:

IP1 IP2 - - [13/Jun/2016:14:45:05 +0200] "GET /page/requested.html HTTP/1.1" 200 4860 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0" 0.00950628507703 

Notiere die0.00950628507703am Ende der Leitung, das ist die eigentlichescore

Nun würde ich diese Zeile analysieren möchte, damit ich könnte score für die Visualisierung in Kibana verwenden (Logstash ist in den gesamten ELK-Stack integriert). Es wäre also großartig, wenn die Partitur als Float analysiert werden könnte.

NB: Ich kann die Punktzahl vor oder nach der Standard-Apache-Log-Nachricht platzieren und jede Art von Zeichen zwischen den beiden einfügen (derzeit ist es nur ein Leerzeichen).

Irgendeine Idee, wie man dieses Problem angeht?

Vielen Dank im Voraus!

Antwort

0

Schließlich fand ich, wie zu verarbeiten. Ich füge ein wenig Schlüsselwort vor der Partitur: das Wort pred

Also meine Linien kennen, sind wie folgt aus:

IP1 IP2 - - [13/Jun/2016:14:45:05 +0200] "GET /page/requested.html HTTP/1.1" 200 4860 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0" pred:0.00950628507703 

Und ich benutze diese Konfiguration für logstash:

input { 
    file { 
     path => '/home/user/logsDir/*' 
     start_position => "beginning" 
    } 
} 

filter { 
    grok { 
     match => { "message" => "%{COMBINEDAPACHELOG} pred:%{NUMBER:prediction_score}"} 
    } 
# I convert the score into a float in order to vizualise it in Kibana 
    mutate { 
     convert => {"prediction_score" => "float"} 
    } 
} 

output { 
    elasticsearch { } 
    stdout { codec => rubydebug } 
} 

ich diesen Willen hoffen helfen Sie, wenn Sie mit dem gleichen Problem stecken!

Prost!

Verwandte Themen