ELK应用之二:Kibana显示Nginx中来访客户端IP地域分布
在Kibana的visualize中显示Nginx访问日志客户端IP地域分布图
官网介绍:
https://www.elastic.co/guide/en/beats/packetbeat/current/packetbeat-geoip.html
https://www.elastic.co/guide/en/elasticsearch/plugins/5.5/ingest-geoip.html
一、插件及文件配置
1 、首先,Elsaticsearch服务器中需要安装 ingest-geoip 插件:
bin/elasticsearch-plugin install ingest-geoip
Elasticsearch安装插件后,需要重启服务。
2、Kibana中添加地图:
为了显示中文,这里我调用了高德的地图,具体配置如下:
kibana.yml
tilemap.url: "http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}"
#tilemap.url: "https://tiles.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana"
tilemap.options.minZoom: ""
tilemap.options.maxZoom: ""
tilemap.options.attribution: "© [Elastic Maps Service](https://www.elastic.co/elastic-maps-service)"
3、创建一个pipeline,定义client_geoip字段:
在kibana的控制台中(Dev Tools->Console)执行以下命令:
PUT _ingest/pipeline/geoip-info
{
"description": "Add geoip info",
"processors": [
{
"geoip": {
"field": "client_ip",
"target_field": "client_geoip",
"properties": ["location"],
"ignore_failure": true
}
}
]
}
4、修改packetbeat配置文件,加入刚才定义的pipeline:
#vim packetbeat.yml output.elasticsearch:
hosts: ["192.168.1.23:9200"] #指定输出的elasticsearch
pipeline: geoip-info
index: 'packetbeat-nginx' #创建一个索引,针对本次抓去的日志
注意,本次packetbeat若只抓取nginx的日志,请将其他端口注释掉,只保留80。
修改完后,重启packetbeat。
二、Kibana地图显示
1、创建索引
Kibana->Management->index Patterns->Create Index Patterns
注意,创建的索引名称必须以packetbeat-*、filebeat-*、logstash-*等内置字段开头,否则某些配置无效。
这里创建名称为 packetbeat-nginx 的索引(同packetbeat配置文件中index字段一样)
创建完索引后,回到Discover中,选择新创建的 packetbeat-nginx 就可以看到抓取来的nginx日志了。
2、Kibana中创建Visualize:
Visualize->create new visualization->Coordinate Map
2.1、左侧选择新创建的packetbeat-nginx索引;
2.2、Data配置如下:

2.3、Options配置如下:

以上配置完毕后,点击开始按钮,右侧就可以显示客户端IP分布地图了:

ELK应用之二:Kibana显示Nginx中来访客户端IP地域分布的更多相关文章
- 在ASP.NET Core中获取客户端IP地址
随着ASP.NET的发展,有不同的方式从请求中访问客户端IP地址.WebForms和MVC Web应用程序只是访问当前HTTP上下文的请求. var ip = HttpContext.Current. ...
- python中通过客户端IP拿到所在城市和当地天气信息—附带项目案例
熟悉老一代QQ的小伙伴可能都知道,很早以前的QQ,鼠标滑到头像的位置,你的位置和IP会在详情页显示,那么这个是如何做到的呢?下面我们就来玩一玩这个东西 首先,需求分析: 1.拿到客户端IP 2.通过I ...
- ELK(ElasticSearch+Logstash+Kibana)配置中的一些坑基于7.6版本
三个组件都是采用Docker镜像安装,过程简单不做赘述,直接使用Docker官方镜像运行容器即可,注意三个组件版本必须一致. 运行容器时最好将三个组件的核心配置文件与主机做映射,方便直接在主机修改不用 ...
- 在Nginx中部署基于IP的虚拟主机
一.虚拟主机概念 虚拟主机是在网络服务器上划分出一定的磁盘空间供用户放置站点.应用组件等,提供必要的站点功能.数据存放和传输功能.所谓虚拟主机,也叫"网站空间", 就是把一台运行在 ...
- nginx中获取真实ip(转)
原文:http://blog.csdn.net/a936676463/article/details/8961504 server { listen 80; server_name lo ...
- nginx中获取真实ip
nginx反向代理配置时,一般会添加下面的配置: proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; ...
- Nginx中获取真实ip地址
location / { proxy_pass http://localhost; proxy_set_header Host $host; proxy_set_header X-Real-IP $r ...
- 第十三章·Kibana深入-使用地图统计客户端IP
地址库 在ELK中,我们可以使用地址库,来对IP进行分析,对日志进行分析,在ELKstack中只有Logstash可以做到,但是出图,是Kibana来出的,所以我们首先需要下载地址库数据文件,然后对L ...
- 再论 ASP.NET 中获取客户端IP地址
说到IP获取无非是我们常见的以下几种方式,但是具体获取的值具体区别在哪?网上不乏相关文章,说的也是很详细,但是真正使用起来,还有很多不太对的地方.IP在不同系统中,应用相当广泛,常见的日志记录.广告分 ...
随机推荐
- servelt filter listener 的生命周期
1. servlet 当第一次请求一个servlet资源时,servlet容器创建这个servlet实例,并调用他的 init(ServletConfig config)做一些初始化的工作,然后 ...
- shell脚本之基础
配置启动界面 vim /etc/inittab/ init3配置网卡 重启生效system-config-network网卡配置文件vim /etc/sysconfig/network-script ...
- PAT甲题题解-1071. Speech Patterns (25)-找出现最多的单词
分割字符串的用法+map映射给出input中出现次数最多的单词,如果次数相同,给出按字典序最小的. 这里我用了自定义分隔符来读取字符串,方法如下: //按照定义的分隔符d来分割字符串,对str进行读取 ...
- 第五次Scrum meeting
第五次Scrum meeting 会议内容: 连接方面:确定封装成json的文本格式,尽量在满足在线组和手机客户端两组的情况下,降低自身的难度 测试方面:进行新一轮测试,主要测试程序的稳定性和可靠性, ...
- jieba分词学习
具体项目在githut里面: 应用jieba库分词 1)利用jieba分词来统计词频: 对应文本为我们队伍的介绍:jianjie.txt: 项目名称:碎片 项目描述:制作一个网站,拾起日常碎片,记录生 ...
- 我与git“美妙”的一天
今天是第一天使用git,苦不堪言,感觉服务器和自己都要爆炸了,弄了半天才马马虎虎会了一点,基本流程如下 1.在mukever.online注册用户 2.下载git for windows(一个客户端) ...
- 侧边导航栏css示例
效果展示: html: <div class="sidebar"> <ul> <li>优先级 <ul> <li>< ...
- Prometheus 和 Grafana的简单学习
1. 下载 暂时不采用 docker化部署 prometheus下载地址 https://github.com/prometheus/prometheus/releases/ prometheus的e ...
- python自动化之PDF
###################################处理PDF和Word文档################################### ''' PDF和Word文档是二进 ...
- MongoDB高级操作(2)
查询方法-常用查询方法 查询多条数据 --db.集合名称.find({条件文档}) 查询一条数据 --db.集合名称.findOne({条件文档}) 结果格式化 --pretty()方法 --db.集 ...