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

Logstash模块之geoip 在对Logstash的实际应用中,为了从日志中ip获取到用户访问时的所在地,用到了geoip这个模块。刚开始使用时并未注意到一些细节,但在做数据分析的时候发现了geoip的坑 阅读详情

提供:ZStack云计算

系列教程

本教程为在CentOS 7上利用Logstash与Kibana实现集中化日志记录系列五篇中的第五篇。

本教程为利用ELK堆栈(Elasticsearch、Logstash与Kibana)在Ubuntu 14.04上实现集中化日志记录系列五篇中的第五篇。

内容简介

IP地理位置用于确定IP地址的物理位置,可被用于多种实际场景,包括内容个性化与流量分析等等。根据地理位置进行流量分析可帮助大家有效分析自己的用户群体,从而了解用户来自哪里、决定应用服务器的理想地理位置并明确掌握用户定位。在本教程中,我们将共同了解如何利用Elasticsearch、Logstash与Kibana配合一套GeoIP数据库,从而建立应用用户IP地址的可视化地理位置映射。

以下为其工作原理的简单说明。Logstash利用GeoIP数据库将IP地址转换为纬度与经度坐标对,即IP地址的近似地理位置。此坐标数据由Elasticsearch中的geo_point字段负责存储,另外亦可进一步转换为geohash字符串。Kibana随后读取该Geohash字符串并将其绘制为地图上的点,即由Kibana 4实现Tile Map可视化。

下面来看先决条件。

先决条件

要完成本教程,大家必须拥有一套能够运行的ELK堆栈。另外,大家还需要包含IP地址且能够被过滤为字段的日志,例如Web服务器访问日志。如果这两项条件尚不满足,大家可以首先参阅下面两篇教程:

向Filebeat目录中添加geo_point映射

假设大家已经完成了之前的教程,这里我们要重复这一步骤,因为TileMap可视化机制要求GeoIP坐标以geo_point类型的形式存储在Elasticsearch当中。

在Elasticserach的安装服务器上,将Filebeat索引模板下载至主目录:

- cd ~

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

利用以下命令加载该模板:

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

下载最新GeoIP数据库

MaxMind提供免费与付费GeoIP数据库——其中付费版本的准确度更高。Logstash还提供免费GeoIP City数据库的一套副本,GeoLite City。在本教程中,我们将下载最新GeoLite City数据库,但大家也可以任意选择其它不同的GeoIP数据库。

下面将最新GeoLite CIty数据库的gzip归档文件下载至/etc/logstash目录。运行以下命令:

- cd /etc/logstash

- sudo curl -O "http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz"

现在将其解压:

- sudo gunzip GeoLiteCity.dat.gz

GeoLite CIty数据库将被提取至/etc/logstash/GeoLiteCity.dat,我们可以在Logstash配置文件中指向这一位置。

请注意,GeoLite数据库由MaxMind于每月第一个周二进行更新。因此,如果大家希望保持数据库处于最新版本,则应设置一项cron任务以保证每月下载该数据库。

接下来配置Logstash以使用GeoIP数据库。

配置Logstash以使用GeoIP

为了让Logstash存储GeoIP坐标,大家需要指定包含有一条公共IP地址且生成日志的应用,我们将过滤该IP地址以作为独立字段。一般来说,Web服务器可以充当这一日志生成应用,例如Nginx或者Apache,这里我们使用Nginx作为示例。

在向Logstash中添加Filter教程中,Nginx filter被存储在名为11-nginx-filter.conf的文件当中。如果大家的filter处于其它位置,请编辑该文件中的对应部分。

下面编辑Nginx filter:

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

在grok部分之下(在if [type]…区段处)添加以下行:

11-nginx-filter.conf excerpt

geoip {
  source => "clientip"
  target => "geoip"
  database => "/etc/logstash/GeoLiteCity.dat"
  add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
  add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
}
mutate {
  convert => [ "[geoip][coordinates]", "float"]
}

如此一来,filter就会利用GeoLite City数据库对存在于clientip字段(在源中指定)内的IP地址进行转换。我们之所以将该源指定为“clientip”,是因为这正是Nginx用户IP地址存储所使用的字段名称。

在添加之后,为了明确filter的实际内容,我们这里放出11-nginx-filter.conf文件的完整版本:

11-nginx-filter.conf — updated

filter {
if [type] == "nginx-access" {
grok {
  match => { "message" => "%{NGINXACCESS}" }
}
geoip {
  source => "clientip"
  target => "geoip"
  database => "/etc/logstash/GeoLiteCity.dat"
  add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
  add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
}
mutate {
  convert => [ "[geoip][coordinates]", "float"]
}
}
}

保存并退出。

重启Logstash以应用变更。

- sudo service logstash restart

如果一切配置正确,Logstash现在应该会利用Nginx访问日志存储GeoIP坐标。请注意,此变更不可追溯,因此我们之前生成的日志将不会包含GeoIP信息。

下面验证GeoIP功能是否能够在Kibana中正确起效。

接入Kibana

Logstash配置情况的最简单验证方式就是启用GeoIP,而后在浏览器中打开Kibana。

找到已经在Logstash中启用GeoIP模块后所生成的日志信息。在Nginx示例中,我们可以在Kibana中搜索“nginx-access”类型以缩小日志选择范围。

接下来打开一条信息以查看其字段表。大家应该会看到包含有IP地址如何与真实地理位置相映射的新geoip字段。例如:

注意:如果大家看不到任何日志,首先访问应用以生成日志,而后确保时间过滤器设定正确的时间段。如果大家还是看到GeoIP信息(或者信息不正确),那么Logstash配置可能存在问题。

如果大家在此视图中看到了正确的GeoIP信息,则可创建自己的可视化映射图了。

创建Tile Map可视化映射

注意:如果大家还没有使用Kibana可视化机制,请参阅Kibana仪表板与可视化机制教程。

为了对Kibana中的IP地址进行映射,让我们创建一套Tile Map可视化图。

点击主菜单中的Visualize。

在Creat a new visualization条目之下,选择Tile map。

在Select a search source中,大家可以选择任意选项。如果大家已经保存了一条能够找到所要映射的日志信息的搜索结果,则可直接选择该条搜索。

在Select buckets type中,选择Geo Coordinates。

在Aggregation下拉菜单中,选择Geohash。

在Field下拉菜单中,选择geoip.location。

现在点击绿色的Apply按钮。

如果选定的日志中包含GeoIP信息,则其会被用于绘制映射图,具体如上图所示。

请确保使用Precision滑块以及视图选项下的条目以调整可视化图的显示效果。Precision尚志能够调整用于映射位置的Geohash字符串的长度。

如果大家对可视化图感到满意,则可直接保存。

总结

现在大家已经能够在Kibana当中对GeoIP信息进行映射了。这套方案可以帮助各位了解用户的真实地理位置。如果将其添加至仪表板当中,其实用性还将得到进一步提升。

祝大家好运!

本文来源自DigitalOcean Community。英文原文:How To Map User Location with GeoIP and ELK (Elasticsearch, Logstash, and Kibana) By Mitchell Anicas

翻译:diradw

Logstash GeoIP 实战:从IP透传、数据库更新到Kibana地理可视化 GeoIP 是一种基于IP地址库的地理编码技术,其核心原理是通过最长前缀匹配在CIDR路由表中查出对应城市、经纬度等信息。该技术依赖高质量的原始IP字段和定期更新的MaxMind GeoLite2数据库,具备国家级高准确率(>99.8%)但城市级存在约50km固有误差。其技术价值在于为日志分析提供空间维度,支撑用户地域分布、合规审计、本地化运营等关键场景。在ELK技术栈中,GeoIP并非开箱即用的插件功能,而是需贯穿Nginx IP透传、Logstash字段清洗与健壮配置、Elasticsearch geo 阅读详情

相关推荐

CentOS 7 手动部署 Logstash+Kibana 日志中枢实战指南

日志可视化是现代运维与安全分析的基础能力,其核心在于构建稳定、低延迟、可下钻的日志处理管道。Logstash 作为开源日志采集与转换引擎,依托输入(file/beats/syslog)、过滤(Grok/Dissect/Translate)和输出(Elasticsearch)三层架构,实现多源异构日志的标准化与结构化;Kibana 则提供基于时间序列的实时检索、聚合分析与仪表盘交付能力。在 CentOS 7 最小化系统中,手动部署而非依赖 Docker 镜像,能精准控制资源占用、规避 SELinux 和 JV

aikb6223的博客 428

监控三剑客ELK之Logstash日志收集教程

Elasticsearch/Logstash/Kibana作为目前开源领域炙手可热的监控三剑客声名大噪。ELK三者各司其职,作为构建在Lucene基础上的搜索引擎,和另外一个著名的工具solr功能和应用场景有些重叠,只是看起来Elasticsearch风头更胜。而ELK从log抽取到图形展示全套功能齐全为同属elastic的Elasticsearch更是添了不少分,做到了1+1大于2。 Logstash:数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置; 本套教程将会带大家进行Logstash的环境配置和基本的实操,让大家能够熟悉适用Logstash技术。

docker 搭建 ELK,logstash 从 kafka读取数据

搭建ELK做日志分析,以做记录,关于kafka以及docker的安装所以在此不做说明 首先搭建elasticsearch docker run -d elasticsearch es 是有官方镜像的,所以没别的要求,这样就可以运行一个elasticsearch容器了,只是我指定了端口映射以及配置文件和数据文件数据卷,所以用的以下命令: docker run -d -p 9200:9200 -p 93

百里屠苏之父 3320

logstash利用geoip获取IP地理位置信息

我们在用logstash收集日志时,有时需要将日志中的IP地址映射出具体的地理位置信息,logstash中geoip过滤器提供了这个功能.由于geoip为免费IP库,存在部分IP无法获取到省份城市信息。GeoLite2-City.mmdb 可在。logstash中默认的geoip插件位于。

Jepson的博客 1791

CentOS 6日志集中化实战:Logstash与Kibana稳定部署指南

日志集中化是现代运维的基础能力,其核心在于将分散的日志数据统一采集、处理、存储与可视化。实现该目标需依托ELK(Elasticsearch、Logstash、Kibana)技术栈,但版本兼容性、系统约束与资源适配构成关键挑战。尤其在老旧操作系统如CentOS 6上,glibc 2.12、Linux 2.6.32内核、无systemd环境及有限硬件资源,使得Logstash和Kibana的部署远非简单安装,而需深度耦合内核行为、JVM参数、文件系统挂载选项与SELinux策略。本文聚焦真实生产约束,详解如何在

weixin_30772105的博客 331

logstash-filter-geoip-cn.zip

logstash使用geoip插件解析出来的地理信息是英文。通过GeoIP获取ip所属地,并将国家转换为中文。

Elasticsearch启动报updatejava.net.UnknownHostException: geoip.elastic.co错误

Elasticsearch启动报updatejava.net.UnknownHostException: geoip.elastic.co错误,无法通过localhost"9200访问。

ANULI的博客 7171

虚幻引擎5 AR开发教程02:构建和测试AR Android App

在本教程中,我们将学习如何在虚幻引擎 5 上构建和测试 AR 安卓应用。

mopanchun的博客 2650

ELK logstash 过滤插件:GeoIP

过滤插件:GeoIP Description The GeoIP filter adds information about the geographical location of IP addresses, based on data from the Maxmind GeoLite2 databases. GeoIP过滤器根据来自Maxmind GeoLite2数据库的数据添加有关IP地址地理位置的信息。 过滤插件:GeoIP(能够将日志当中的IP解析为具体的地理位置,这个必须要有数据.

小楼一夜听春雨,深巷明朝卖杏花 2748

水下井口装置及钻杆建模

内容:海上油气资源开采的过程中,通常会由海上钻井平台下入钻杆连接到海底井口装置。OrcaFlex软件可进行各种海洋工程结构动态分析,通过各项数据的输入,能够很方便地进行水下井口装置及钻杆建模。直接使用软件New Line及new vessel功能,再设置模型的各项参数(几何属性、弯曲刚度、轴线刚度、扭转刚度、泊松比等)即可建成井口装置及钻杆模型。 设置管线的几何属性:主要包括管线的内外径、壁厚、...

s0302017的博客 1148

BUUCTF逆向题Youngter-drive

其实线程一代码我自己也不大理解,看了正确的 flag 后,我自己推出来的是这样:在 couece 中取出字符,然后在 QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm 中找出一样的,取出该字符在 QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm 中的下标,如果取出的字符是大写则 在ASCII中找出【下标 - 38】值对应的字符替换couece中的字符,同理,小写就减 96。

于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。 1098

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

IP 地理定位是用于确定 IP 地址的物理位置的过程,可以用于各种目的,如内容个性化和流量分析。通过地理位置的流量分析可以为您的用户群提供宝贵的见解,因为它可以让您轻松地看到他们来自哪里。这可以帮助您就应用服务器的理想地理位置和当前受众做出明智的决策。在本教程中,我们将向您展示如何使用 Elasticsearch、Logstash 和 Kibana 创建应用用户 IP 地址的可视化地理映射。以下是它的工作原理的简要说明。

rubys007的博客 1600

rv1126如何切换720p和1080p

切换720p和1080p可以使用modetest,但是需要将这两种模式都添加到connector中去 添加一个新的mode到connector中去,其实内核中已经有相关接口了,需要做一些小改动。 1.不采用设备树的方式去配置,将720p和1080p的timing参数配置放在数组中。 2.这里的printer和设备树中的.compatible = "printer"一致。 3.将其添加到connector中去 static int panel_simple_get_fixed_modes(struct

weixin_42097108的博客 865

用 docker compose 部署 ELK 8 ,Logstash geoip 插件解析客户端 IP 地理位置 + Kibana Maps 地图展示

用 docker compose 部署 ELK8 ,Logstash geoip 插件解析客户端 IP 地理位置 + Kibana Maps 地图展示

AK_47_Niu的博客 1299

YOLO26涨点改进 | 全网独家创新、检测头Head改进篇 | AAAI 2026 | 使用StripConvHead改进YOLO26的检测头,处理小目标、遮挡小目标检测有效涨点,助力高效发论文

🔥本文给大家介绍使用StripConv条形卷积改进 YOLO26的检测头,可以显著提高模型在高纵横比物体检测、目标定位和多尺度物体检测方面的表现。StripConv条形卷积能够更有效地捕捉细长物体的特征,提升定位精度,并通过简化卷积核设计减少计算冗余,优化计算效率。此外,该改进增强了 YOLO26对复杂场景和实时任务的适应能力,特别适用于遥感图像目标检测、小目标检测等领域。具体怎么使用请看全文。摘要:随着遥感物体检测的快速发展,检测高纵横比物体仍然是一个挑战性问题。

Ai缝合怪、助力小伙伴高效发论文 269

1. SAP Business Application Studio 里创建一个基于 CAP 模型的最简单的 OData 服务

本文基于 SAP Cloud Application Programming 编程模型的 OData 服务开发教程的第一步,简述了 SAP Business Technology Platform 里 Business Application Studio 开发工具的打开方式,创建 Dev Space 以及 CAP 项目的创建步骤,以及如何通过 schema.cds 和 service.cds 分别创建 OData 模型和 OData 服务,最后通过 ports preview 打开 OData 服务预览页

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1803

ELK日志分析实战宝典:从入门到服务器部署与应用(含ELK,部署启动全流程)

它提供了一个分布式多用户能力的全文搜索引擎。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。在elasticsearch中,所有节点的数据是均等的。

weixin_45065854的博客 2000

液滴碰撞壁面的过程背景论文——bouncing反弹,spreading扩展,splashing飞溅。铺展过程介绍。还存在很多未解之谜。

【1993-德国-Phenomena of liquid drop impact on solid and liquid surfaces】液滴碰撞壁面的过程背景——bouncing反弹,spreading扩展,splashing飞溅。还存在很多未解之谜。还存在很多未解之谜。不同液滴形状碰撞过程。

qq_15963745的博客 200

ELK——日志处理界的瑞士军刀

在大数据时代,日志管理与分析已经成为运维、开发和业务优化中不可或缺的一环。而ELK ,即Elasticsearch、Logstash、Kibana三者组成的开源解决方案,以其强大的实时数据分析能力,在业界广受好评,被誉为“日志处理界的瑞士军刀”。

hy199707的博客 4614

LeRobot 入门教程(十)LIBERO 机器人终身学习评估

LIBERO是一项专注于机器人终身学习(LLDM)的基准测试平台,包含130项任务,分为5大套件(空间推理、物体操作、目标约束等)。LeRobot框架已集成LIBERO,支持单/多套件评估,并兼容SmolVLA模型。训练需使用预处理数据集(HuggingFaceVLA/libero),观测数据需符合规范(8维状态+双摄像头图像)。该平台采用MuJoCo模拟,支持无头服务器运行,旨在推动机器人持续学习算法的发展与标准化评估。

2506_90492529的博客 1665

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

模拟公网ip访问接口,elk配合geoip采集日志展示各城市对网站的访问情况

参考博客: ELK-图示nginx中ip的地理位置 - dance_man - 博客园 如何映射用户位置与GeoIP的和ELK(Elasticsearch,Logstash和Kibana) 实践步骤: ( 实操代码在https://download.youkuaiyun.com/download/weixin_36013896/33930564) 1 首先模拟出公网访问的日志 中国电信IP段表:http://www.023wg.com/ISP-CN-IP/ISP-CN-DX.html 把上面的ip段,保

weixin_36013896的博客 538

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

深入理解ELK技术栈:Elasticsearch+Logstash+Kibana架构原理与实战配置详解

ELK技术栈通过Beats采集 → Logstash处理 → Elasticsearch存储 → Kibana可视化的完整链路,为现代分布式系统的可观测性提供了强大支撑。Elasticsearch倒排索引机制是高效全文搜索的基础Logstash的Input-Filter-Output模型灵活适配多种数据处理场景Kibana仪表盘与告警规则实现从数据采集到异常通知的闭环Filebeat作为轻量采集器,是大规模日志收集的首选方案。

m0_56519302的博客 198

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

使用Logstash创建ES映射模版并进行数据默认的动态映射规则

本文配置为 ELK 即(Elasticsearch、Logstash、Kibana)5.5.1。 Elasticsearch 能够自动检测字段的类型并进行映射,例如引号内的字段映射为 String,不带引号的映射为数字,日期格式的映射为日期等等,这个机制方便了我们快速上手 ELK,但是后期我们经常需要对一些特定的字段进行定制,之前本人有一篇文章进行这方面的尝试Logstash中如何处...

aifeier1982的博客 420

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

对于ELK还不太熟悉的同学可以参考我前面的两篇文章ElasticSearch + Logstash + Kibana 搭建笔记、Log stash学习笔记(一),本文搭建了一套专门访问Apache的访问日志的ELK环境,能够实现访问日志的可视化分析。 数据源 Filebeat + Logstash 数据源对应Logstash中的Input部分,本文采用Filebeat来读取Apache日...

aifeier1982的博客 318

如何用articles-translator搭建ELK安全监控系统:HELK、grok与Logstash完整译文合集

如果你想在中文环境下快速入门 **ELK 安全监控系统**,开源项目 articles-translator 提供了一份难得的译文合集:从 **ELK Stack 建设 SIEM** 的整体架构,到 **grok** 日志解析的最佳实践,再到 **Logstash Filter 插件** 的实战用法和 **HELK** 威胁狩猎平台的告警规则集成,核心译文全部备齐。本文带你按正确的顺序读完这 4

gitblog_00152的博客 894

FingerprintJS日志分析:ELK栈与日志管理

在现代Web应用中,浏览器指纹识别已成为用户身份验证、反欺诈和安全监控的关键技术。FingerprintJS作为业界领先的开源指纹识别库,每天可能产生海量的日志数据。你是否曾面临以下痛点: - 日志分散在各个服务器,难以统一分析 - 指纹识别错误无法快速定位根本原因 - 缺乏对用户行为的可视化洞察 - 性能瓶颈难以发现和优化 本文将深入探讨如何使用ELK(Elasticsearch、Logst...

gitblog_00548的博客 1068
上一篇: 如何使用Kibana的仪表板与可视化功能
下一篇: SNMP(简单网络管理协议)介绍
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值