使用ElstaicSearch和Kibana在地图上显示IP位置
使用ElstaicSearch和Kibana在地图上显示IP位置kibana版本:7.13.2ELK日志采集流程system API --> 通过filebeat收集日志 -->存储到kafka -->logstash 从kafka里取出来,并通过filter进行筛选 -->存入elstaicsearch -->kibana进行展示按照之前的方式搭建,在logstas
使用ElstaicSearch和Kibana在地图上显示IP位置
kibana版本:7.13.2
ELK日志采集流程
system API --> 通过filebeat收集日志 --> 存储到kafka --> logstash 从kafka里取出来,并通过filter进行筛选 --> 存入elstaicsearch --> kibana进行展示
按照之前的方式搭建,在logstash的filter里使用geoip插件对ip进行分析,然后在map上配置,出现报错:索引模式不包含任何地理空间字段;
配置logstash的filter支持geoip
logstash的conf的filter配置:(在input里面添加fields type => “api”)
filter {
if [type] == "api"{
grok {
match => { "message" => "%{IPV4:ip_address}" }
}
geoip {
source => "ip_address"
}
}
}
?索引里没有检查到地里空间字段
问题原因:geoip的location不是geo_point格式,无法识别;
logstash 无法通过filter支持讲geoip的location改成geo_point的格式,且自定义的索引不能引用logstash索引模版;
解决方法:通过 kibana的dev-tools GET logstash的模版,修改一下,新建模版匹配:
获得logstash的索引模版
GET /_template/logstash
{
"logstash" : {
"order" : 0,
"version" : 60001,
"index_patterns" : [
"logstash-*"
],
"settings" : {
"index" : {
.....
创建和api相关联的索引模版;“index_patterns” : [“api-*”]
PUT /_template/api
{
"template": "nginx" ,
"order" : 0,
"version" : 60001,
"index_patterns" : [
"api-*"
],
"settings" : {
"index" : {
删除掉之前的索引重新获取新的索引后,可以看到geoip.location已经是geo_point的类型了,(之前是location里没有lat和nat都是float类型)
创建Map
数据修改好之后,开始创建map
ps: kibana 7.13 这个版本可以设置中文,修改kibana.yml文件里的i18n.locale: “zh-CN”,重启kibana
7.13版本的kibana的map被拿出来单独放在左边栏Analytics选项卡里,地图 --> 添加图层 --> 文档索引模式 --> api-* --> 地理空间字段 --> geoip.location (图中热力图像下的绿点,由于文档图层在热力图层下,可以调整图层位置,显示绿点在上面)
还可以使用热图模式,地图 --> 添加图层 --> 热图 --> api-* --> 地理空间字段 --> geoip.location ;(图中的热力图像)
?kibana 7.X 版本自带Elstaic Maps Service,但是貌似被墙了;官网给的解决方法是自己搭建一个maps servcice;也可以使用高德地图来当map图层,但是当kibana使用dark模式下,地图的颜色不协调。
添加高德地图的方法:在kibana.yml里添加如下配置项,后重启kibana;添加图层 --> 定制磁贴地图服务
#change map template
map.tilemap.url: 'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}'
更多推荐
所有评论(0)