2016-04-19 16 views
0

Mein gesamtes System stürzt ab, nachdem ich die Konfiguration geändert habe, um das Geo-Standortfeld hinzuzufügen.Logstash Geolocation funktioniert nicht richtig

Mein System läuft einwandfrei, wenn mein Config wie folgt aussieht:

input { 
syslog 
{ 
    host => "localhost4" 
    port => 5140 
    type => "system" 
} 


} 
filter { 

grok { match => { message => [ ".*ipaddr: %{IP:ipaddr}.*" ] }} 
grok { match => { message => [ ".*dnsname: %{HOSTNAME:query_name}.*" ] }} 
grok { match => { message => [ ".*mal_rank: %{NUMBER:malrank:int}.*" ] }} 
grok { match => { message => [ ".*packet_size: %{NUMBER:packetsize:int}.*" ] }} 
grok { match => { message => [ ".*source_ip: %{IP:sourceip}.*" ] }} 
grok { match => { message => [ ".*dest_ip: %{IP:dest_ip}.*" ] }} 
grok { match => { message => [ ".*source_ip: %{IP:src_ip}.*" ] }} 
grok { match => { message => [ ".*sport: %{NUMBER:sport:int}.*" ] }} 

} 

output { 

elasticsearch { hosts => ["localhost4:9200"] } 
stdout { codec => rubydebug } 
} 

Aber wenn ich den Code zu meinem Filter

input { 
syslog 
{ 
    host => "localhost4" 
    port => 5140 
    type => "system" 
} 


} 
filter { 

grok { match => { message => [ ".*ipaddr: %{IP:ipaddr}.*" ] }} 
grok { match => { message => [ ".*dnsname: %{HOSTNAME:query_name}.*" ] }} 
grok { match => { message => [ ".*mal_rank: %{NUMBER:malrank:int}.*" ] }} 
grok { match => { message => [ ".*packet_size: %{NUMBER:packetsize:int}.*" ] }} 
grok { match => { message => [ ".*source_ip: %{IP:sourceip}.*" ] }} 
grok { match => { message => [ ".*dest_ip: %{IP:dest_ip}.*" ] }} 
grok { match => { message => [ ".*source_ip: %{IP:src_ip}.*" ] }} 
grok { match => { message => [ ".*sport: %{NUMBER:sport:int}.*" ] }} 

geoip { 
    source => "ipaddr" 
    target => "geoip" 
    add_tag => ["geoip"] 
    database => "/etc/logstash/GeoLiteCity.dat" 
} 
} 

output { 

elasticsearch { hosts => ["localhost4:9200"] } 
stdout { codec => rubydebug } 
} 

hinzufügen kann ich den curl Befehl ausführen und die korrekte Ausgabe erhalten

curl http://localhost:9200/logstash-2016.04.19/_mapping/system/field/geoip.location?pretty 

und zurückgegeben:

{ 
    "logstash-2016.04.19" : { 
    "mappings" : { 
     "system" : { 
    "geoip.location" : { 
     "full_name" : "geoip.location", 
     "mapping" : { 
     "location" : { 
      "type" : "geo_point" 
     } 
     } 
    } 
    } 
    } 
} 
} 

Aber anstatt etwas zu bekommen, hört mein logstash auf, vom syslog zu lesen.

Irgendwelche Vorschläge?

+0

Sie sehen auch nichts von Ihrer stdout {} Ausgabe? –

+0

Anstatt so viele Groks (von denen jede eine kleine Regexp gegen Ihr größeres Nachrichtenfeld ausführt), suchen Sie nach einer Möglichkeit, eine einzelne Regexp anzuwenden. Möglicherweise können Sie auch den kv {} - Filter verwenden, um die Zeichenfolge zu analysieren. –

+0

Ich sehe nichts von meinem Stand {}. Ich habe die Grows miteinander kombiniert, aber wenn ich das tue, stirbt alles. Ich muss den kv {} Filter nachsehen. –

Antwort

0

Ich bin nicht sicher, was die Verzögerung ist, aber wenn ich das System für ungefähr eine Stunde warten lasse, fängt es an, Protokolle wieder zu verarbeiten. Ich wollte nur bestätigen, dass dieser Code richtig funktioniert.