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

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

简介

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.mzph.cn/web/55257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ClickHouse的原理及使用,

1、前言 一款MPP查询分析型数据库——ClickHouse。它是一个开源的,面向列的分析数据库,由Yandex为OLAP和大数据用例创建。ClickHouse对实时查询处理的支持使其适用于需要亚秒级分析结果的应用程序。ClickHouse的查询语言是SQL的一种方言,它支…

【排序】——1.冒泡排序法(含优化)

冒泡排序 1.原理 左边大于右边交换一趟排下来最大的交换到右边来(接下来所以文章用升序举例) 从左到右,相邻元素进行比较。 每次比较一轮,就会找到序列中最大的一个(最小的一个——降序)。这个数就会从序列的最右边冒出来。 以…

算法时间、空间复杂度(二)

目录 大O渐进表示法 一、时间复杂度量级的判断 定义: 例一:执行2*N+1次 例二:执行MN次 例三:执行已知次数 例四:存在最好情况和最坏情况 顺序查找 冒泡排序 二分查找 例五:阶乘递归 ​编辑 例…

JIT详解

文章目录 JIT为什么说 Java 语言“编译与解释并存”? JIT原理JVM 架构简览JIT 编译流程JIT 编译器的实现优化策略方法内联逃逸分析 JIT 在Java中,JIT(Just-In-Time)编译器是Java虚拟机(JVM)的一个重要组成…

韩国 NEL动物医疗中心:犬二尖瓣修复术连获成功

“守护心脏的神之手” 在小型犬心脏疾病根本治疗(犬心脏修复手术)方面取得重大突破,已成功完成 16 例手术。 韩国 NEL动物医疗中心(NEL ANIMAL MEDICAL CENTER)严泰欽院长带领的心脏手术团队,为 16 只宠物…

自定义拦截器处理token

目录 1、WebConfig 配置类 2、TSUserContext 把用户信息放到context中 3、自定义拦截器 4、在controller中可以使用 5、参考链接 1、WebConfig 配置类 @Configuration public class WebConfig implements WebMvcConfigurer {@Autowiredprivate AccessControlInterceptor …

Lumerical学习——分析工具(Analysis tools)

一、分析工具和模拟环境(Analysis tools and the simulation environment) 模拟计算完成后,模拟计算数据紧接着写到模拟工程文件中;甚至当模拟计算提前结束时计算得到的部分数据集也会写到文件中。当模拟完成后单击退出按钮、或者…

【行业观察】三折机不够看?苹果研发四折叠屏iPhone

随着智能手机市场的日益成熟,消费者对手机形态和功能的需求也在不断升级。近年来,折叠屏手机凭借其独特的形态和更大的显示面积,成为了市场的新宠。而在这场折叠屏手机的竞争中,苹果作为智能手机行业的领头羊,自然也不…

Visual Studio 2022常用快捷键

1. 基本编辑快捷键 Ctrl X:剪切选中内容Ctrl C:复制选中内容Ctrl V:粘贴内容Ctrl Z:撤销Ctrl Y:重做Ctrl Shift L:删除当前行Ctrl K, Ctrl C:注释选中的代码Ctrl K, Ctrl U&#xf…

关于 FusionPBX

对于 FusionPBX,我了解不多,国内有人用,但不多 关于 iso 安装 找了一圈,只找到一个 2022年 的版本,链接为: https://master.dl.sourceforge.net/project/fusionpbx-live-medium/fusionpbx-embedded-2020…

Jmeter脚本录制、Badboy脚本录制

目录 Jmeter脚本录制 Badboy脚本录制 Jmeter脚本录制 1、首先添加一个http测试脚本记录器 2、选择目标控制器,把录制的内容放到的地方 3、分组,就是在录制的时候,每一步操作之间间隔方式,根据自己需要进行选择 4、开启浏览…

安全光幕的工作原理及应用场景

安全光幕是一种利用光电传感技术来检测和响应危险情况的先进设备。其工作原理基于红外线传感器,通过发射红外光束并接收反射或透射光束来形成一道无形的屏障。以下是对安全光幕工作原理和应用场景的介绍: 工作原理 发射器与接收器:安全光幕通…

mermaid 图表相关

1.mermaid图表的代码 1.1 flowchart 流程图代码 flowchart TDA[Christmas] -->|Get money| B(Go shopping)B --> C{Let me think}C -->|One| D[Laptop]C -->|Two| E[iPhone]C -->|Three| F[fa:fa-car Car]1.2 sequece 时序图代码 sequenceDiagramAlice->&…

AI开发-三方库-Hugging Face-Pipelines

1 需求 需求1:pipeline支持的任务类型 需求2:推理加速使用CPU还是GPU 需求3:基于pipeline的文本分类示例 需求4:pipeline实现原理 模型使用步骤(Raw text -》Input IDs -》Logits -》Predictions)&…

跨域问题及常用的5种解决方案

1.什么是跨域问题? 跨域问题通常指的是在浏览器中由于同源策略的限制而产生的问题。同源策略(Same-origin policy)是浏览器的一种安全措施,它要求请求的域名、协议和端口必须与提供资源的网站相同。当一个网页尝试访问另一个来源…

基于SpringBoot+Vue+uniapp的在线招聘平台的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…

图论day62|拓扑排序理论基础、117.软件构建(卡码网)、最短路径之dijkstra理论基、47.参加科学大会(卡码网 第六期模拟笔试)

图论day62|拓扑排序理论基础、117.软件构建(卡码网)、最短路径之dijkstra理论基、47.参加科学大会(卡码网 第六期模拟笔试) 拓扑排序理论基础117.软件构建(卡码网)最短路径之dijkstra理论基础47.参加科学大…

IT招聘乱象的全面分析

近年来,IT行业的招聘要求似乎越来越苛刻,甚至有些不切实际。许多企业在招聘时,不仅要求前端工程师具备UI设计能力,还希望后端工程师精通K8S服务器运维,更有甚至希望研发经理掌握所有前后端框架和最新开发技术。这种招聘…

day-67 二叉树展开为链表

思路 深度优先遍历:首先将二叉树进行前序遍历,将每个遍历的节点存入一个链表当中 解题过程 将链表还原为只有右子树的二叉树即可 Code /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* Tr…

第16课-C++ STL 学习之【双向迭代器】(正,反向迭代器)

一、前言 在 C 的标准模板库(STL)中,迭代器是一种非常重要的概念,它提供了一种统一的方式来访问容器中的元素。在上一篇文章中我们学习了反向迭代器,它允许我们反向遍历容器。除了反向迭代器外,还有双向迭…