0

Я пытаюсь создать карту плитки с Kibana. Моя учетная запись conf logstash работает правильно и генерирует все, что нужно Kibana для построения карты плитки. Это мой конф logstash:Планируйте карту плитки со стеком ELK

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" 
    } 
} 

И это то, что, что порождает:

enter image description here

Это выглядит здорово. Пытаясь создать свою карту плитки, у меня есть это сообщение:

enter image description here

Что делать? Кажется, что я должен добавить где-то возможность использовать шаблоны dinamyc. Должен ли я создать шаблон и добавить его в свой файл conf logstash? Может ли кто-нибудь дать мне отзыв? спасибо !

ответ

1

Если вы посмотрите в настройках Kibana для своего индекса, вам понадобится хотя бы одно поле для отображения с типом geo_point, чтобы иметь возможность получить что-либо на карте.

Если у вас еще нет поля geo_point, вам необходимо повторно проиндексировать свои данные после настройки соответствующего сопоставления для поля geoip.coordinates. Например: https://stackoverflow.com/a/42004303/2785358

Если вы используете относительно новую версию Elasticsearch (2.3 или новее), относительно легко переиндексировать свои данные. Вам нужно создать новый индекс с правильным сопоставлением, использовать API-интерфейс переиндекса, чтобы скопировать данные в новый индекс, удалить исходный индекс, а затем снова индексировать исходное имя.

0

Вы используете фильтр geoip неправильно и пытаются преобразовать долготу и широту в float. Избавьтесь от своего фильтра mutate и измените фильтр geoip на это.

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

Это создаст соответствующие поля. И необходимый объект GeoJSON.

Смежные вопросы