使用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}'
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐