Kibana是一个开源的分析与可视化平台,可以用来搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等,kibana能够很轻易地展示高级数据分析与可视化结果。
Kibana提供了Coordinate Map和Region Map两种基于地图的数据可视化方法,其地图由Elastic Maps Service提供服务。而在实际的使用场景下,有时无法连接外部互联网,因此无法使用该服务,本文介绍一种通过自行搭建GeoServer为Kibana提供地图服务的方法。
GeoServer介绍
GeoServer是一个基于java开发的软件服务器,使用开放地理空间联盟(Open Geospatial Consortium,OGC)提出的标准,可提供WMS兼容的地图服务。允许用户查看和编辑地图数据。利用 GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以比较容易的在用户之间共享空间地理信息。
运行Kibana
为了实验,本文使用Docker搭建了最简单的Kibana环境,运行命令如下:
$ docker run -d --name myelasticsearch \
docker.elastic.co/elasticsearch/elasticsearch:6.2.3
$ docker run -d --link myelasticsearch:elasticsearch \
-p 5601:5601 \
--name kiban \
docker.elastic.co/kibana/kibana:6.2.3
运行GeoServer
首先在Natural Earth中下载SHP格式的地图数据,将其解压缩到本地,然后运行如下命令:
$ docker run -d --name geoserver \
-p 8080:8080 \
-v `pwd`/natural_earth_vector:/opt/geoserver/data_dir/data/ \
kartoza/geoserver
配置GeoServer
登录GeoServer
通过http://localhost:8080/geoserver访问GeoServer页面,并使用初始用户名密码admin/geoserver登录。:

新建工作区
点击左侧工作区,选择新建工作区,并填写相应内容,然后点击提交:

添加数据存储
点击左侧数据存储,选择添加新的数据存储,然后在新建数据源页面中,选择Directory of spatial files (shapefiles):

在编辑的矢量数据源页面中填写相应内容,并在Shapefiles文件的目录选择框中,选择data_dir/data/10m_cultural/文件夹,点击确定:

发布图层
依次选择图层->添加新的资源,在新建图层中选择刚刚创建的图层,点击图层ne_10m_admin_0_countries后面的发布按钮:

在编辑图层页面的数据标签中,填写相应的内容,其中Native Bounding Box内容通过点击下面的从数据中计算获得,纬度/经度边框内容通过点击下面的Compute from native bounds获得:

在页面上方切换到发布标签,选中所有的Avilable Styles,然后点击中间的向右侧的箭头,然后点击下方的保存按钮:

查看地图
点击左侧的Layer Preview,然后点击图层后面的OpenLayers,即可查看地图:

配置Kibana
创建Index Pattern
使用Kibana需要首先创建Index Pattern,用于收集和检索Elasticsearch中的数据,本文使用Kibana和Elasticsearch中X-pack插件产生的数据作为实验,创建的Index Pattern为.monitoring-*。
使用GeoServer
选择Kibana页面左侧的Visualize选项卡,点击Create a visualization,然后选择Coordinate Map,在左侧选择.monitoring-*作为检索数据源,然后选择Options标签,并选中下方的WMS compliant map server:

然后填写GerServer服务相关的数据,即可使用GeoServer:
