使用 ELK 堆栈绘制 Tile 地图

Plot a Tile map with the ELK stack

我正在尝试使用 Kibana 创建瓦片地图。我的 conf 文件 logstash 正常工作并生成 Kibana 绘制瓦片地图所需的所有内容。这是我的 conf logstash :

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

这就是生成的内容:

看起来很酷。尝试创建我的瓷砖地图时,我收到以下消息:

怎么办?

看来我必须在某处添加使用动态模板的可能性。我应该创建一个模板并将其添加到我的文件 conf logstash 中吗?

有人可以给我一些反馈吗?谢谢!

如果您查看索引的 Kibana 设置,您将需要至少一个字段显示 geo_point 类型才能在地图上获取任何内容。

如果您还没有 geo_point 字段,则需要在为 geoip.coordinates 字段设置适当的映射后 re-index 您的数据。例如:

如果您使用的是相对较新版本的 Elasticsearch(2.3 或更高版本),re-index 您的数据相对容易。您需要创建一个具有正确映射的新索引,使用 re-index API 将数据复制到新索引,删除原始索引然后 re-index 恢复为原始名称。

您使用的 geoip 过滤器有误,并试图将经度和纬度转换为浮点数。摆脱你的 mutate 过滤器并将 geoip 过滤器更改为此。

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

这将创建适当的字段。以及所需的 GeoJSON 对象。