使用 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 对象。
我正在尝试使用 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 对象。