2016-07-19 23 views
1

Wir arbeiten daran, unsere ESET-Protokolldateien (JSON-Format) in elasticsearch abzurufen. Ich sende Protokolle an unseren Syslog-Server (syslog-ng), dann an logstash und elasticsearch. Alles läuft so wie es soll. Mein Problem besteht darin, die Logs in Logstash zu verarbeiten ... Ich kann die Schlüssel/Wert-Paare anscheinend nicht in separate Felder aufteilen.Logstash Grok Filterschlüssel/Wertepaare

Hier ist ein Beispielprotokolleintrag:

Jul 8 11:54:29 192.168.1.144 1 2016-07-08T15:55:09.629Z era.somecompany.local ERAServer 1755 Syslog {"event_type":"Threat_Event","ipv4":"192.168.1.118","source_uuid":"7ecab29a-7db3-4c79-96f5-3946de54cbbf","occured":"08-Jul-2016 15:54:54","severity":"Warning","threat_type":"trojan","threat_name":"HTML/Agent.V","scanner_id":"HTTP filter","scan_id":"virlog.dat","engine_version":"13773 (20160708)","object_type":"file","object_uri":"http://malware.wicar.org/data/java_jre17_exec.html","action_taken":"connection terminated","threat_handled":true,"need_restart":false,"username":"BATHSAVER\\sickes","processname":"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"} 

Hier ist meine logstash conf:

input { 
    udp { 
    type => "esetlog" 
    port => 5515 
    } 
    tcp { 
    type => "esetlog" 
    port => 5515 
    } 

filter { 
    if [type] == "esetlog" { 
    grok { 
     match => { "message" => "%{DATA:timestamp}\ %{IPV4:clientip}\ <%{POSINT:num1}>%{POSINT:num2}\ %{DATA:syslogtimestamp}\ %{HOSTNAME}\ %{IPORHOST}\ %{POSINT:syslog_pid\ %{DATA:type}\ %{GREEDYDATA:msg}" } 
     } 
    kv { 
     source => "msg" 
     value_split => ":" 
     target => "kv" 
    } 
    } 
} 

output { 
    elasticsearch { 
    hosts => ['192.168.1.116:9200'] 
    index => "eset-%{+YYY.MM.dd}" 
    } 
} 

Wenn die Daten in Kibana anderen angezeigt wird, als die Daten und die Zeit wird alles zusammen in der "in einen Topf geworfen Nachricht "nur Feld, ohne separate Schlüssel/Wert-Paare.

Ich lese und suche seit einer Woche jetzt. Ich habe ähnliche Dinge mit anderen Log-Dateien gemacht, ohne irgendwelche Probleme, also nicht sicher, was ich vermisse. Jede Hilfe/Vorschläge wird sehr geschätzt.

Antwort

0

Können Sie versuchen belows Konfiguration logstash

 grok { 
        match => { 
        "message" =>["%{CISCOTIMESTAMP:timestamp} %{IPV4:clientip} %{POSINT:num1} %{TIMESTAMP_ISO8601:syslogtimestamp} %{USERNAME:hostname} %{USERNAME:iporhost} %{NUMBER:syslog_pid} Syslog %{GREEDYDATA:msg}"] 
          } 

      } 
      json { 
        source => "msg" 
      } 

Es funktioniert und getestet in http://grokconstructor.appspot.com/do/match#result

Grüße.

enter image description here