kibana绘制热力图
整个过程主要可以分为3个步骤
1. 收集日志
2. 配置logstash日志解析,填充经纬度数据
3. kibana上绘制热力图。
这里重点记录配置logstash时,如何填充经纬度数据。
我们日志中有经纬度数据,但是通过filter解析之后,字段一般被默认为字符串类型,而再画热力图时,kibana上聚合字段要求是geo_point类型,那么接下来的任务就是将经纬度数据转换为geo_point类型。
通过kibana查看elasticsearch索引的schema,能看到有一个geoip.location的字段是geo_point类型,但是我们在该字段上筛选后,发现并没有数据。这是因为这个字段是logstash默认配置中,所以接下来我们可以向该字段中填充数据即可。
填充数据的时候,我们知道有mutate,所以接下来在filter中添加如下配置:
if [lat] and [lgt] {
mutate {
add_field => [ "[geoip][location]", "%{[lgt]}" ]
add_field => [ "[geoip][location]", "%{[lat]}" ]
}
mutate {
convert => [ "[geoip][location]", "float" ]
}
}
debug日志后,我们发现geoip.location字段已经填充。另外,注意这种级连选取变量的形式,[geoip][location]
收集一段时间的日志后,我们就有热力图: