最近在搞CDH大数据平台的相关方面的内容研究,大数据平台说到底就是一个数据中心也可以称之为数据海洋,接收来自各方的数据,有传统关系型数据库的数据,也有记录日志的文本文件,有syslog格式数据,也有非关系型数据库的结构化数据。
所以平台搭建只是万丈高楼的第一步,后面的数据抽取及数据使用才是发挥数据海洋资源作用的重中之重,再有之后的数据的可视化。而关于CDH的使用我们后续有机会可以一起探讨下,这里暂不展开。其实我们前期分享的ELK日志采集平台(点击进入)也是一种,今天我们把上次的数据可视化部分遗留的一个问题分享下,如何在Kibana接入离线地图实现热点分布展示。
经典的web服务生产架构,无外乎从互联网到F5再从F5进入DMZ区,经过前置应用,到服务端应用及业务数据已经在N个防火墙之后了,之前我们的ELK也是部署在应用服务同一个级别,故而无法访问外部资源。而Kibana的访问地图分布的Coordinate Map组件是需要访问外部地图服务的,直接使用会有如下错误:
ES的官网有一篇博文也有介绍,默认的地图服务是不支持离线访问的,所以需要我们自己搭建地图服务。
在实现之前有几个问题需要解决
1、地图服务有哪些,kibana可以使用什么服务;
2、地图数据源从哪里获取;
3、地图服务怎么发布;
解决了上面三个问题,实现后的就可以有下面的效果了
从百科解释中我们了解到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、创建工作区
2、新建数据源
首先在Natural Earth中下载SHP格式的地图数据,这里回答了第二个问题,直接使用世界地图的数据源,将其解压缩到本地后继续如下操作,点击数据存储,按如下选择配置地图数据源:
这里shapefile文件目录便是下载的世界地图数据源,将其放入geoserver的data目录下,其中各规范目录解释如下,数字越小表示精度越。
3、发布图层
点击图层,按如下步骤发布第二步创建的地图源,就可以通过http访问地图数据了。
数据标签页
发布标签页
注意这里style的选择,在Kibana后续的参数配置中需要用到,我们用的是polygon.
4、预览图层
点击layer preview选择上面创建的图层,点击openlayer便可以预览世界地图了
在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/