ELK7.10.1绘制热力地图Kibana无法识别geo_point

前言

ELK分析日志非常强大,而相关的资料又非常少,并且随着版本升级,旧版配置不兼容新版导致很多坑,本文提供解决访问IP热力地图绘制问题方案。
更多参考win搭建ELK7.10.1分析Nginx日志绘制图表

操作

■ 选用高德地图

默认是英文地图看着很不习惯,改用高德地图。
配置config下的kibana.yml。
添加配置

map.tilemap.url: 'https://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}'

如果高德api改变了,就得修改该配置。

■ 创建地图

很多教程都会提到选择区域地图、坐标地图、Coordinate Map之类,这些在新版中已经全部去除,新版中独立的一个Maps。
在这里插入图片描述
然后==>创建地图

在这里插入图片描述

■ 创建geo_point

① 查看

添加图层 ==》热图 ==》 选择索引模式,会发现没有可以选择的索引。
然后打开索引模式,选择一个索引,点进去查看,会发现没有geo_point类型的字段,这就需要我们去创建一个geo_point类型。

② 修改数据格式

geo_point类型的格式是坑点,在7.10.1中,为如下格式。
在这里插入图片描述
所以在logstash.conf中,我们要配置创建这种类型的数据
filter中添加

geoip {
            source => "remote_addr"
			target => "geoip"
			add_field => [ "[coordinates]", "%{[geoip][latitude]},%{[geoip][longitude]}" ]
        }

经纬度顺序不能反,source为你自己的Nginx下游ip(也就是客户ip)字段。

③ 设置数据类型

有了coordinates字段,但它的类型仍然是文本,ELK是不会将它字段转换为geo_point类型的。


  1. 新建文件nginx-logstash.json

创建模板设置coordinates为geo_point类型。

{
    "order": 1,
    "version": 60001,
    "index_patterns": [
        "nginx-*"
    ],
    "settings": {
        "index": {
            "number_of_shards": "1",
            "refresh_interval": "5s"
        }
    },
    "mappings": {
        "dynamic_templates": [
            {
                "message_field": {
                    "path_match": "message",
                    "mapping": {
                        "norms": false,
                        "type": "text"
                    },
                    "match_mapping_type": "string"
                }
            },
            {
                "string_fields": {
                    "mapping": {
                        "norms": false,
                        "type": "text",
                        "fields": {
                            "keyword": {
                                "ignore_above": 256,
                                "type": "keyword"
                            }
                        }
                    },
                    "match_mapping_type": "string",
                    "match": "*"
                }
            }
        ],
        "properties": {
                    "coordinates": {
                        "type": "geo_point"
                    }
                }
    },
    "aliases": {}
}

  1. 修改logstash.conf
output{
	elasticsearch {
	#这里记得写的是hosts,因为可能会是集群的 elasticsearch,但是配置的之后只要写上主节点就行了	
        hosts => "localhost:9200"
	#规定存储日志的索引规则,动态配置,方便管理
        index => "nginx-%{type}=%{+YYYY.MM.dd}"
	# 淘汰 type 里的参数 就是上面配置的	
	#	document_type => "%{type}"
		template => "路径。。。/ELK/logstash-7.10.1/config/template/nginx-logstash.json"
		template_name => "nginx-logstash"
		template_overwrite => true
    }
	stdout{
		codec => rubydebug
	}
}

  1. 启动后查看

成功的话,Elasticsearch中就能搜索的到这个模板。
在这里插入图片描述
索引信息如下
在这里插入图片描述
模板生效,字段类型就会对应上,数据格式正确,采集才会成功。

④ 重新创建索引模式

在这里插入图片描述

■ 添加图层

再添加图层,成功。
在这里插入图片描述

最后

logstash的索引规则不能乱配,必须在elasticsearch有对应的索引才能成功,像网上文章什么logstash-*、logstash_*之类,ES get请求_template就能获得全部索引,默认自带的索引即便对应上了也一般和自己的数据格式对不上,所以需要自建模板。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值