如何使用GeoIP和ELK(Elasticsearch、Logstash和Kibana)映射用户位置

news/2024/12/22 1:20:08/

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

简介

IP 地理定位是用于确定 IP 地址的物理位置的过程,可以用于各种目的,如内容个性化和流量分析。通过地理位置的流量分析可以为您的用户群提供宝贵的见解,因为它可以让您轻松地看到他们来自哪里。这可以帮助您就应用服务器的理想地理位置和当前受众做出明智的决策。

在本教程中,我们将向您展示如何使用 Elasticsearch、Logstash 和 Kibana 创建应用用户 IP 地址的可视化地理映射。

以下是它的工作原理的简要说明。Logstash 使用 GeoIP 数据库将 IP 地址转换为纬度和经度坐标对,即 IP 地址的大致物理位置。坐标数据存储在 Elasticsearch 中的 geo_point 字段中,并且还转换为 geohash 字符串。Kibana 可以读取 Geohash 字符串,并将它们绘制为地球地图上的点。在 Kibana 4 中,这被称为 Tile Map 可视化。

现在让我们来看一下先决条件。

先决条件

要按照本教程进行操作,您必须拥有一个可用的 ELK 栈。此外,您必须拥有包含可以过滤为字段的 IP 地址的日志,比如 Web 服务器访问日志。如果您还没有这两样东西,您可以按照本系列的前两个教程。第一个教程将设置一个 ELK 栈,第二个教程将向您展示如何收集和过滤 Nginx 或 Apache 访问日志:

  • 如何在 Ubuntu 14.04 上安装 Elasticsearch、Logstash 和 Kibana 4
  • 添加 Logstash 过滤器以改进集中式日志记录

向 Filebeat 索引添加 geo_point 映射

假设您已经按照先决条件教程进行了操作。但是,我们再次包括这一步,以防您跳过了它,因为 TileMap 可视化要求您的 GeoIP 坐标存储在 Elasticsearch 中作为 geo_point 类型。

在安装了 Elasticsearch 的服务器上,将 Filebeat 索引模板下载到您的主目录:

cd ~
curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json

然后使用以下命令将模板加载到 Elasticsearch 中:

curl -XPUT 'http://localhost:9200/_template/filebeat' -d@filebeat-index-template.json

配置 Logstash 使用 GeoIP

要让 Logstash 存储 GeoIP 坐标,您需要识别一个生成包含公共 IP 地址的日志的应用程序,并将其作为离散字段进行过滤。一个生成包含此信息的日志的相当普遍的应用程序是 Web 服务器,如 Nginx 或 Apache。我们将使用 Nginx 访问日志作为示例。如果您使用不同的日志,需要对示例进行必要的调整。

在添加 Logstash 过滤器教程中,Nginx 过滤器存储在一个名为 11-nginx-filter.conf 的文件中。如果您的过滤器位于其他位置,请编辑该文件。

现在让我们编辑 Nginx 过滤器:

sudo vi /etc/logstash/conf.d/11-nginx-filter.conf

grok 部分下,添加下面突出显示的部分:

filter {if [type] == "nginx-access" {grok {match => { "message" => "%{NGINXACCESS}" }}geoip {source => "clientip"}}
}

这将配置过滤器将存储在 clientip 字段中的 IP 地址(在 source 中指定)转换为 GeoIP 坐标。我们将 source 指定为 clientip,因为这是 Nginx 用户 IP 地址存储的字段名称。如果您将 IP 地址信息存储在不同的字段中,请确保更改此值。

保存并退出。

为了使更改生效,让我们重新启动 Logstash:

sudo service logstash restart

如果一切配置正确,Logstash 现在应该将 GeoIP 坐标与您的 Nginx 访问日志(或生成日志的任何其他应用程序)一起存储。请注意,此更改是追溯的,因此您以前收集的日志将不会添加 GeoIP 信息。
让我们验证 Kibana 中的 GeoIP 功能是否正常工作。

连接到 Kibana

验证 Logstash 是否正确配置为启用 GeoIP 的最简单方法是在 Web 浏览器中打开 Kibana。现在就这样做。

找到自您启用 Logstash 中的 GeoIP 模块以来您的应用程序生成的日志消息。按照 Nginx 示例,我们可以在 Kibana 中搜索 type: "nginx-access" 来缩小日志选择范围。

然后展开其中一条消息,查看字段表。您应该会看到一些新的 geoip 字段,其中包含有关 IP 地址如何映射到真实地理位置的信息。例如:

!示例 GeoIP 字段

如果在此视图中看到正确的 GeoIP 信息,那么您已经准备好创建地图可视化了。

创建瓷砖地图可视化

注意: 如果您还没有使用过 Kibana 可视化,请查看 Kibana 仪表板和可视化教程。

要在 Kibana 中映射 IP 地址,让我们创建一个瓷砖地图可视化。

单击主菜单中的 Visualize

创建新可视化 下,选择 Tile map

选择搜索源 下,您可以选择任一选项。如果您有一个保存的搜索可以找到您想要映射的日志消息,可以随意选择该搜索。我们将按照您点击 From a new search 的方式进行。

在提示选择 索引模式 时,从下拉菜单中选择 filebeat-*。这将带您到一个空白地图页面:

!Kibana 默认瓷砖地图构建界面

在搜索栏中输入 type: nginx-access 或其他包含地理信息的日志搜索词。确保您的时间段(页面右上角)足以匹配一些日志条目。如果您看到地图上显示 No results found 而不是点,您需要更新搜索词或时间。

一旦您有了一些结果,点击左侧列中 buckets 标题下的 Geo Coordinates。绿色的“播放”按钮将变为活动状态。点击它,您的地理位置将在地图上绘制出来:

!Kibana 带有多个点的瓷砖地图

当您对可视化感到满意时,请务必使用搜索栏旁边的 Save Visualization 按钮(保存图标)保存它。

结论

现在您在 Kibana 中已经将您的 GeoIP 信息映射出来,您应该已经准备好了。单独使用,它应该可以给您一个关于用户地理位置的大致概念。如果将其添加到仪表板中并与其他日志相关联,它甚至可以更加有用。

祝您好运!


http://www.ppmy.cn/news/1536559.html

相关文章

利用redis实现分布式定时任务

如果是微服务,两个服务都有定时,那么就出问题了,但是上分布式定时任务框架太麻烦怎么办,那么就用redis加个锁,谁先抢到锁谁执行 整个工具类 import org.springframework.beans.factory.annotation.Autowired; import …

宠物咖啡馆数字化解决方案:基于SpringBoot的实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

手机竖屏 Premiere Pro 电影转场特效视频模板Pr工程文件

10个不同的类别和115个过渡。过渡很容易使用。随附视频教程。 下载地址:Pr模板网 下载链接:https://prmuban.com/40597.html

Chromium 搜索引擎功能浅析c++

地址栏输入:chrome://settings/searchEngines 可以看到 有百度等数据源,那么如何调整其顺序呢,此数据又存储在哪里呢? 1、浏览器初始化搜索引擎数据来源在 components\search_engines\prepopulated_engines.json // Copyright …

js基础速成13-Console 对象方法

Console 对象方法 在本节中,我们将介绍 console 及其对象方法。对于绝对初学者来说,通常不知道该使用 console.log()、document.write() 还是 document.getElementById()。 我们使用 console 对象的方法在浏览器控制台显示输出,使用 docume…

目标检测or实例分割中AP、MAP的计算

参考链接: 目标检测中AP、MAP的计算_51CTO博客_目标检测map计算 举个例子:

gbase8s数据库实现黑白名单的几种方案

1、借用操作系统的黑白名单 2、使用数据库 TRUSTED CONTEXT 机制 CREATE TRUSTED CONTEXT tcx1USER rootATTRIBUTES (ADDRESS 172.16.39.162)ATTRIBUTES (ADDRESS 172.16.39.163)ENABLEWITH USE FOR wangyx WITHOUT AUTHENTICATION; 如上创建 可信任上下文对象 tcx1 在 jdb…

如何用python抓取豆瓣电影TOP250

1.如何获取网站信息? (1)调用requests库、bs4库 #检查库是否下载好的方法:打开终端界面(terminal)输入pip install bs4, 如果返回的信息里有Successfully installed bs4 说明安装成功(request…