基于 Elasticsearch + kibana 实现 IP 地址分布地图可视化
基于 Elasticsearch + kibana 实现 IP 地址分布地图可视化
1、需求
有一批特定用途(文末揭晓)的 IP 地址。 想通过地图形式可视化展示 IP 地址对应的经纬度坐标的分布。
2、方案探讨
第一步:IP 地址转经纬度坐标。
第二步:经纬度坐标借助可视化工具(如:echarts)渲染展示。
Elasticsearch 支持 Geo-point、Geo-shape 数据类型。 Kibana 支持 Coordinate Map(坐标图)、Region Map(区域地图)可视化地图展示。
3、GeoIp processor 介绍
4、导入一条数据实战一把
4.1 步骤 1:创建预处理管道
PUT _ingest/pipeline/geoip_pipeline{ "description" : "Add geoip info", "processors" : [ { "geoip" : { "field" : "ip" } } ]}
4.2 步骤 2:创建索引
DELETE niu_20210215PUT niu_20210215{ "settings": { "index.default_pipeline": "geoip_pipeline", "number_of_shards": 1, "number_of_replicas": 0 }, "mappings": { "properties": { "geoip": { "properties": { "location": { "type": "geo_point" } } }, "ip":{ "type":"keyword" } } }}
灵活:用户只关心 bulk 批量写入数据。 零写入代码修改:甚至写入数据的代码一行都不需要改就可以。
4.3 步骤 3:写入一条数据
PUT niu_20210215/_doc/1{ "ip": "8.8.8.8"}
{ "niu_20210215" : { "mappings" : { "properties" : { "geoip" : { "properties" : { "city_name" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "continent_name" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "country_iso_code" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "location" : { "type" : "geo_point" }, "region_iso_code" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "region_name" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } } } }, "ip" : { "type" : "keyword" } } } }}
"_source" : { "geoip" : { "continent_name" : "North America", "country_iso_code" : "US", "location" : { "lon" : -97.822, "lat" : 37.751 } }, "ip" : "8.8.8.8"}
geoip.city_name:城市 geoip.continent_name:大陆名称 geoip.country_iso_code:国家编码 geoip.location:经纬度坐标,必须是:geo_point 类型 geoip.region_iso_code:地域编码 geoip.region_name:地域名称
比如:所有的默认字符串类型改成:keyword 类型。
4.4 步骤 4:kibana 可视化展示
4.4.1 创建关联索引模板
4.4.2 创建坐标图
4.4.3 可视化基础设置,执行后,就能看到可视化结果。
5、批量导入数据后可视化展示
因为全局设置了 default_pipeline,写入数据不需要做任何特殊处理了。
6、小结
基础方案大家都能想到,有没有更简单的、更快捷的方式呢?是需要我们考虑的。 本文抛砖引玉,Kibana 新版本的可视化功能更强大,需要学习的点还有很多......
参考
目录 返回
首页