0

Ich versuche eine Kachelkarte mit Kibana zu erstellen. Meine Conf-Datei Logstash funktioniert korrekt und generiert alles, was Kibana benötigt, um eine Kachelkarte zu plotten. Das ist meine conf logstash:Eine Kachelkarte mit dem ELK-Stapel plotten

input { 
    file { 
      path => "/home/ec2-user/part.csv" 
      start_position => "beginning" 
      sincedb_path => "/dev/null" 
    } 
} 

filter { 

    csv { 
      separator => "," 
      columns => ["kilo_bytes_total","ip","session_number","request_number_total","duration_minutes_total","referer_list","filter_match_count_avg","request_number_avg","duration_minutes_avg","kilo_bytes_avg","segment_duration_avg","req_by_minute_avg","segment_mix_rank_avg","offset_avg_avg","offset_std_avg","extrem_interval_count_avg","pf0_avg","pf1_avg","pf2_avg","pf3_avg","pf4_avg","code_0_avg","code_1_avg","code_2_avg","code_3_avg","code_4_avg","code_5_avg","volume_classification_filter_avg","code_classification_filter_avg","profiles_classification_filter_avg","strange_classification_filter_avg"] 

    } 



    geoip { 

     source => "ip" 
     database => "/home/ec2-user/logstash-5.2.0/GeoLite2-City.mmdb" 
     target => "geoip" 
     add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] 
     add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] 
     add_tag => "geoip" 

    } 


    mutate { 

    convert => [ "[geoip][coordinates]", "float"] 

    } 

} 




output { 

    elasticsearch { 

    index => "geotrafficip" 
    } 
} 

Und das ist, was das erzeugt:

enter image description here

Es sieht cool aus. Der Versuch, meine Fliese Karte zu erstellen, habe ich diese Meldung:

enter image description here

Was ist zu tun? Es scheint, dass ich irgendwo die Möglichkeit hinzufügen muss, dinamyc Vorlagen zu verwenden. Sollte ich eine Vorlage erstellen und sie meiner Datei Conf Logstash hinzufügen? Kann mir jemand Feedback geben? Danke !

Antwort

1

Wenn Sie in den Kibana-Einstellungen für Ihren Index nachsehen, benötigen Sie mindestens ein Feld mit dem Typ geo_point, um alles auf einer Karte anzeigen zu können.

Wenn Sie noch kein Feld geo_point haben, müssen Sie Ihre Daten neu indizieren, nachdem Sie eine entsprechende Zuordnung für das Feld geoip.coordinates eingerichtet haben. Zum Beispiel: https://stackoverflow.com/a/42004303/2785358

Wenn Sie eine relativ neue Version von Elasticsearch (2.3 oder höher) verwenden, ist es relativ einfach, Ihre Daten neu zu indizieren. Sie müssen einen neuen Index mit der richtigen Zuordnung erstellen, die API für das Re-Index verwenden, um die Daten in den neuen Index zu kopieren, den ursprünglichen Index zu löschen und dann den ursprünglichen Namen erneut zu indizieren.

0

Sie verwenden den geoip Filter falsch und versuchen, den Längen- und Breitengrad in Float umzuwandeln. Befreien Sie sich von Ihrem mutate Filter und ändern Sie den geoip Filter auf diesen.

geoip { 
    source => "ip" 
    fields => ["latitude","longitude"] 
    add_tag => "geoip" 
} 

Dadurch werden die entsprechenden Felder erstellt. Und das erforderliche GeoJSON-Objekt.