2016-08-23 1 views
0

Ich weiß, Ntopng kann direkt auf elasticsearch setzen, aber mein Chef möchte verwenden logtash als Schicht zu Logging zu elasticsearch zu übertragen.Exportieren von Ntopng Log zu Logstash

Ich versuche es viele Male, aber gescheitert.

ntopng log wie:

{"index": {"_type": "ntopng", "_index": "ntopng-2016.08.23"}} 
{ "@timestamp": "2016-08-23T01:49:41.0Z", "type": "ntopng", "IN_SRC_MAC": "04:2A:E2:0D:62:FB", "OUT_DST_MAC": "00:16:3E:8D:B7:E4", "IPV4_SRC_ADDR": "14.152.84.14", "IPV4_DST_ADDR": "xxx.xxx.xxx", "L4_SRC_PORT": 34599, "L4_DST_PORT": 53, "PROTOCOL": 17, "L7_PROTO": 5, "L7_PROTO_NAME": "DNS", "IN_PKTS": 15, "IN_BYTES": 1185, "OUT_PKTS": 15, "OUT_BYTES": 22710, "FIRST_SWITCHED": 1471916981, "LAST_SWITCHED": 1471916981, "SRC_IP_COUNTRY": "CN", "SRC_IP_LOCATION": [ 113.250000, 23.116699 ], "DST_IP_COUNTRY": "VN", "DST_IP_LOCATION": [ 105.849998, 21.033300 ], "NTOPNG_INSTANCE_NAME": "ubuntu", "INTERFACE": "ens192", "DNS_QUERY": "cpsc.gov", "PASS_VERDICT": true } 

Logstash config:

input { 
    tcp { 
    port => 5000 
    codec => json 
    } 
} 
filter{ 
    json{ 
     source => "message" 
    } 
} 
output { 
    elasticsearch { 
    hosts => ["localhost:9200"] 
} 
stdout{ codec => rubydebug } 
} 

Dank

Antwort

0

Da die ntopng Protokolle bereits im Bulk-Format erwartet von Elasticsearch Sie brauchen nicht zu verwenden die elasticsearch Ausgabe, aber Sie können den http Ausgang direkt so verwenden. Logstash muss JSON nicht parsen, sondern die rohen Massenbefehle einfach an ES weiterleiten.

Es gibt jedoch einen Haken: Wir müssen ein Zeilenvorschubzeichen nach der zweiten Zeile hinzufügen, andernfalls wird ES den Massenaufruf ablehnen. Wir können dies mit einem mutate/update Filter erreichen, der nach der message ein wortwörtliches Newline-Zeichen hinzufügt. Probieren Sie es aus, das wird funktionieren.

input { 
    tcp { 
    port => 5000 
    codec => multiline { 
     pattern => "_index" 
     what => "next" 
    } 
    } 
} 
filter{ 
    mutate { 
    update => {"message" => "%{message} 
"} 
    } 
} 
output { 
    http { 
     http_method => "post" 
     url => "http://localhost:9200/_bulk" 
     format => "message" 
     message => "%{message}" 
    } 
} 
+0

Die neue bearbeiten immer noch nicht funktioniert, vielen Dank für Ihre Hilfe – anhnv

+0

ich meine Antwort aktualisiert haben. – Val

+0

Danke dir, es hat funktioniert! – anhnv

Verwandte Themen