可视化 | 如何在Kibana接入离线地图实现热点分布展示

Posted 思快奇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可视化 | 如何在Kibana接入离线地图实现热点分布展示相关的知识,希望对你有一定的参考价值。


最近在搞CDH大数据平台的相关方面的内容研究,大数据平台说到底就是一个数据中心也可以称之为数据海洋,接收来自各方的数据,有传统关系型数据库的数据,也有记录日志的文本文件,有syslog格式数据,也有非关系型数据库的结构化数据。

 

所以平台搭建只是万丈高楼的第一步,后面的数据抽取及数据使用才是发挥数据海洋资源作用的重中之重,再有之后的数据的可视化。而关于CDH的使用我们后续有机会可以一起探讨下,这里暂不展开。其实我们前期分享的()也是一种,今天我们把上次的数据可视化部分遗留的一个问题分享下,如何在Kibana接入离线地图实现热点分布展示。

 

经典的web服务生产架构,无外乎从互联网到F5再从F5进入DMZ区,经过前置应用,到服务端应用及业务数据已经在N个防火墙之后了,之前我们的ELK也是部署在应用服务同一个级别,故而无法访问外部资源。而Kibana的访问地图分布的Coordinate Map组件是需要访问外部地图服务的,直接使用会有如下错误:

可视化 | 如何在Kibana接入离线地图实现热点分布展示


ES的官网有一篇博文也有介绍,默认的地图服务是不支持离线访问的,所以需要我们自己搭建地图服务。

可视化 | 如何在Kibana接入离线地图实现热点分布展示

在实现之前有几个问题需要解决

1、地图服务有哪些,kibana可以使用什么服务;

2、地图数据源从哪里获取;

3、地图服务怎么发布;

 

解决了上面三个问题,实现后的就可以有下面的效果了

可视化 | 如何在Kibana接入离线地图实现热点分布展示

 

从百科解释中我们了解到Web 地图服务能够根据用户的请求返回相应的地图(包括PNG,GIF,JPEG等栅格形式或者是SVG和WEB CGM等矢量形式)。而kibana的Coordinate Map组件是支持WMS(Web Map Services)服务的,WMS是支持网络协议HTTP的,所支持的操作是由URL定义的,从而可以回答第一个问题 ,需要搭建一套WMS的地图服务。

 

通过查找资料发现,GeoServer 是一个不错的解决方案,它是 OpenGIS Web 服务器规范的 J2EE 实现,利用 GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以比较容易的在用户之间迅速共享空间地理信息。

 

使用Geoserver搭建WMS服务

直接到官网下载基于tomcat的Geoserver到服务器中并解压,启动服务即可一键部署,浏览器登录GeoServer,通过http://localhost:8080/geoserver访问GeoServer页面,并使用初始用户名密码admin/geoserver登录,分如下三步便可以发布WMS服务,操作十分简便:

1、创建工作区

可视化 | 如何在Kibana接入离线地图实现热点分布展示

2、新建数据源

首先在Natural Earth中下载SHP格式的地图数据,这里回答了第二个问题,直接使用世界地图的数据源,将其解压缩到本地后继续如下操作,点击数据存储,按如下选择配置地图数据源:

可视化 | 如何在Kibana接入离线地图实现热点分布展示

可视化 | 如何在Kibana接入离线地图实现热点分布展示

这里shapefile文件目录便是下载的世界地图数据源,将其放入geoserver的data目录下,其中各规范目录解释如下,数字越小表示精度越。

可视化 | 如何在Kibana接入离线地图实现热点分布展示


3、发布图层

可视化 | 如何在Kibana接入离线地图实现热点分布展示

点击图层,按如下步骤发布第二步创建的地图源,就可以通过http访问地图数据了。

数据标签页

可视化 | 如何在Kibana接入离线地图实现热点分布展示

可视化 | 如何在Kibana接入离线地图实现热点分布展示

发布标签页

可视化 | 如何在Kibana接入离线地图实现热点分布展示

注意这里style的选择,在Kibana后续的参数配置中需要用到,我们用的是polygon.

4、预览图层

点击layer preview选择上面创建的图层,点击openlayer便可以预览世界地图了

可视化 | 如何在Kibana接入离线地图实现热点分布展示

可视化 | 如何在Kibana接入离线地图实现热点分布展示

 

在Kibana里面配置WMS展现地图

有了地图服务,就可以使用Coordinate Map组件了,配置好WMS服务就可以看到地图了,结合elasticsearch的ip信息还可以做热点展示,效果看起来还是不错的:

可视化 | 如何在Kibana接入离线地图实现热点分布展示

热点图效果

 

 



Request URL: http://127.0.0.1:8080/geoserver/forkibana/wms?&service=WMS&request=GetMap&layers=ne_10m_admin_0_countries&styles=polygon&format=image%2Fpng&transparent=true&version=1.3.0&height=256&width=256&crs=EPSG%3A3857&bbox=10018754.171394622,0,20037508.342789244,10018754.171394628

 

结语

当然也可以将kibana部署在外联区或者开通访问外部地图服务的权限,这样就不需要搭建离线地图服务了,但是从企业数据资产安全的角度看,我们大多都会选择部署在业务网段,所以自己搭建离线服务的诉求应该还是比较普遍的,以上一点小记录以供分享喽~

 

 

参考资料

  • Custom basemaps for region and coordinatemaps in Kibana:

  • https://www.elastic.co/cn/blog/custom-basemaps-for-region-and-coordinate-maps-in-kibana

  • Geoserver官网:http://blog.geoserver.org/

  • Natural Earth官网:https://www.naturalearthdata.com/downloads/

  • WMS简介:https://en.wikipedia.org/wiki/Web_Map_Service

  • 使用GeoServer作为Kibana离线地图:https://blog.datarepo.cn/2018/04/01/use-geoserver-with-kibana/


以上是关于可视化 | 如何在Kibana接入离线地图实现热点分布展示的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch:在 Kibana 上进行地图可视化所需的字段

Kibana可视化数据分析

EasyNVS接入新版EasyNVR后,视频广场的通道为什么显示离线?

Kibana:可视化机器学习中的异常

Kibana-介绍

【转】Android接入高德地图不显示地图