我们喜欢 Elastic 的地图。在 Elastic Stack 中,我们使用地图可视化的所有数据都有一个核心组成部分:位置。位置可以表示报告机队车辆的实时位置,使用地理围栏限制搜索结果,从某个地理区域衡量应用程序性能指标或通过将地理坐标附加到 IP 地址来识别安全威胁。
最近,我们在 Elastic Maps 中添加了一个行政区域边界层,以对你的地理空间分析进行微调。这里所谓的行政区就像我们国家的行政区划分一样,比如北京,湖南,湖北,山西等等。它是对一个地区的边界划分。这个对于我们很多的区域数据统计非常有效。
该层包括全球数百个国家的近 5,000 个行政分区的边界。每个边界都有一个 ISO 3166-2 区域代码,可以使用 “Elastic 通用模式” 将其连接到索引中的 geo.region_iso_code 字段。在所有支持 Elastic Maps 的 Kibana 版本中,均可立即使用行政区域层。
日志分析的详细地理位置
我们可以使用行政区域层来观察网站访问者的位置。以下示例使用 Kibana 7.9.0,但你应该可以使用任何 7.x 版本。
首先,我们需要一些数据来处理。我使用了 Kibana 中的说明为该演示添加了来自 NGINX 的日志,但是你还可以添加其他包含IP地址的日志,例如 Apache 或 Traefik。如果你还没有 NGINX 的日志数据,那么请参阅我之前的文章 “Beats:运用 Filebeat module 分析 nginx 日志”。我们可以利用里面的例子把我们所需要的 NGINX 数据导入到 Elasticsearch 中。我们可以使用如下的命令来检查 filebeat 的数据:
GET _cat/indices
我们可以检查 Filebeat 里的数据:
上面显示 NGINX 的数据,并含有位置信息。
使用 Elastic Maps 行政层来展示数据
我们打开 Elastic Maps 应用:
选择 Administrative regions:
点击 Save & close:
我们可以更进一步配置这个行政层:
这样我们就可以看到上面的显示了。数据越多的地方用红颜色来表示。
在 7.9 版本中的改进
在 7.9 的发布中,我们使用 choropleth layer 来简化上面的流程。这样我们可以不使用 EMS boundaries 了。
我们来重新作地图可视化:
点击上面的 Add layer。这样是不是更简单直接啊?
我们只需要做很简单的调整就可以了。
这个视图和之前的一样,只是流程更加简单和直观。