ELK-图示nginx中ip的地理位置
一、环境准备:
- ELK stack 环境一套
- geolite数据库文件
二、下载geolite数据库(logstash机器上解压,logstash需调用):
geolite官网:https://dev.maxmind.com
[root@localhost local]# tar xf GeoLite2-City_20181211.tar.gz
[root@localhost local]# ll GeoLite2-City_20181211
total 60604
-rw-r--r-- 1 es es 55 Dec 13 03:56 COPYRIGHT.txt
-rw-r--r-- 1 es es 62044006 Dec 13 03:56 GeoLite2-City.mmdb //数据库文件,logstash配置文件中直接引用即可
-rw-r--r-- 1 es es 433 Dec 13 03:56 LICENSE.txt
-rw-r--r-- 1 es es 116 Dec 13 03:56 README.txt
三、编辑logstash配置文件
[root@localhost logstash]# cat conf.d/logstash-sample.conf
input {
beats {
port => 5044
}
}
filter {
grok {
match => {
patterns_dir => ["/usr/local/logstash/patterns"]
"message" => "%{COMMONNGINXLOG}"
}
overwrite => "message"
}
geoip {
source => "clientip"
target => "geoip"
database => "/usr/local/GeoLite2-City_20181211/GeoLite2-City.mmdb"
add_field => ["[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => ["[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
mutate {
convert => [ "[request_time]","float" ]
}
}
output {
elasticsearch {
hosts => ["http://192.168.20.4:9200"]
index => "logstash-kibana_nginx" //这里之前还有一个logstash_kibana_nginx。注意这里是_与-的区别。
}
}
配置解释
- geoip:IP查询插件,默认安装
- source: 需要通过geoip插件处理的filed,根据实际情况中nginx日志ip的field_name来修改。
- target: 解析后的geoip地址数据,存放在定义的字段中,默认geoip这个字段
- database: 指定下载的数据库文件
- add_field: 添加经纬度,地图的定位显示是依靠经纬度来实别的
四、展示
打开kibana访问界面:
上图elasticsearch中存储了两个index
如上图,使用logstash_kibana_nginx索引添加地图展示时,无法选择相应field,并提示No Compatible Fields: The "logstash_kibana_nginx" index pattern does not contain any of the following field types: geo_point
。提示没有相应"geo_point"类型,可是我的配置文件中根本就没有定义相应类型的啊!那只可能是程序自带的问题了。正好我又上网查阅别人的教程中发现似乎只有index不一致,于是便照着修改了一个一模一样的配置把index修改成logstash-kibana_nginx。等几秒logstash自动reload后,如下图就可以选择展示了:

参考博客地址:https://www.jianshu.com/p/07b82092d4af
五、修改kibana默认地图为国内高德地图
[root@localhost kibana]# echo "tilemap.url: 'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}'" >> config/kibana.yml
添加完成后重启生效:
Question
为什么得使用logstash-开头的index可以有geo_point类型?在网上和文档中一番查找,最后发现logstash默认自带的template是以template" : "logstash-*
。
[root@localhost logstash]# cat vendor/bundle/jruby/2.3.0/gems/logstash-output-elasticsearch-9.2.4-java/lib/logstash/outputs/elasticsearch/elasticsearch-template-es6x.json //6版本elasticsearch默认上传模版
{
"template" : "logstash-*", //模版名称,即index名匹配规则
"version" : 60001,
"settings" : {
"index.refresh_interval" : "5s"
},
"mappings" : {
"_default_" : {
"dynamic_templates" : [ {
"message_field" : {
"path_match" : "message",
"match_mapping_type" : "string",
"mapping" : {
"type" : "text",
"norms" : false
}
}
}, {
"string_fields" : {
"match" : "*",
"match_mapping_type" : "string",
"mapping" : {
"type" : "text", "norms" : false,
"fields" : {
"keyword" : { "type": "keyword", "ignore_above": 256 }
}
}
}
} ],
"properties" : {
"@timestamp": { "type": "date"},
"@version": { "type": "keyword"},
"geoip" : {
"dynamic": true,
"properties" : {
"ip": { "type": "ip" },
"location" : { "type" : "geo_point" },
"latitude" : { "type" : "half_float" },
"longitude" : { "type" : "half_float" }
}
}
}
}
}
}
[root@localhost logstash]#
下一章会专门写一篇关于template,敬请期待。
ELK-图示nginx中ip的地理位置的更多相关文章
- ELK展示NGINX访问IP地理位置图
一.设置NGINX日志格式 [root@zabbix_server ~]# vim /etc/nginx/nginx.conf log_format access_json_log '{"@ ...
- [日志分析]Graylog2进阶之获取Nginx来源IP的地理位置信息
如果你们觉得graylog只是负责日志收集的一个管理工具,那就too young too naive .日志收集只是graylog的最最基础的用法,graylog有很多实用的数据清洗和处理的进阶用法. ...
- 在nginx中配置如何防止直接用ip访问服务器web server及server_name特性讲解
看了很多nginx的配置,好像都忽略了ip直接访问web的问题,不利于SEO优化,所以我们希望可以避免直接用IP访问网站,而是域名访问,具体怎么做呢,看下面. 官方文档中提供的方法: If you d ...
- nginx中针对目录进行IP限制
一个不错的nginx中针对目录进行IP限制 ,这里我以phpmyadmin目录只能让内网IP访问,而外网不能访问的配置方法,有需要的同学可参考. nginx phpmyadmin 针对内网ip用户开放 ...
- Nginx的配置文件简介及在Nginx中配置基于不同ip的虚拟主机
Nginx的配置文件简介及在Nginx中配置基于不同ip的虚拟主机: #user nobody; worker_processes 1; #error_log logs/error.log; #err ...
- centos7 下 安装GeoIP2,在nginx中根据ip地址对应的国家转发请求
最近有个需求是根据用户的地理位置,访问不同的服务器,比如国外用户访问国外的服务器,国内的用户访问国内的服务器,实现的思路主要两种: 智能dns,这个需要在阿里云中注册为企业版才有提供 nginx中使用 ...
- 利用 ELK系统分析Nginx日志并对数据进行可视化展示
一.写在前面 结合之前写的一篇文章:Centos7 之安装Logstash ELK stack 日志管理系统,上篇文章主要讲了监控软件的作用以及部署方法.而这篇文章介绍的是单独监控nginx 日志分析 ...
- ELK系统分析Nginx日志并对数据进行可视化展示
结合之前写的一篇文章:ELK日志分析平台搭建全过程,上篇文章主要讲了部署方法.而这篇文章介绍的是单独监控nginx 日志分析再进行可视化图形展示. 本文环境与上一篇环境一样,前提 elasticsea ...
- ELK收集Nginx自定义日志格式输出
1.ELK收集日志的有两种常用的方式: 1.1:不修改源日志格式,简单的说就是在logstash中转通过 grok方式进行过滤处理,将原始无规则的日志转换为规则日志(Logstash自定义日志格式) ...
随机推荐
- AVR单片机教程——LCD1602
本文隶属于AVR单片机教程系列. 显示屏 开发板套件里有两块屏幕,大的是LCD(液晶显示),小的是OLED(有机发光二极管).正与你所想的相反,短小精悍的比较贵,而本讲的主题--LCD1602-- ...
- 3.JavaSE之注释
- 【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发
<ASP.NET Core 微服务实战>译者序:https://blog.jijiechen.com/post/aspnetcore-microservices-preface-by-tr ...
- IDEA需要修改的配置
自动编译开关 忽略大小写开关 智能导包开关 如下图所示,将 自动导入不明确的结构 智能优化包 这两个选项勾上.那么有什么效果呢? 你在代码中,只要敲list,就会出现提示,自动导入java.util. ...
- moco响应中文乱码
moco版本为:moco-runner-standalone-0.11.1.jar 在一次使用moco框架的时候,浏览器查看响应时,发现返回来的中文是乱码. 按照网上的操作,在响应结果中加上heade ...
- python3操作PyMySQL笔记
python3操作mysql需要先安装PyMySQL pip install PyMySQL 在linux登录mysql ,并且在安装数据库时设置了数据库的用户名“root”和密码“root”,mys ...
- NSQ源码剖析——主要结构方法和消息生产消费过程
目录 1 概述 2 主要结构体及方法 2.1 NSQD 2.2 tcpServer 2.3 protocolV2 2.4 clientV2 2.5 Topic 2.6 channel 3 启动过程 4 ...
- SpringMVC 中的异常处理
目录 1.搭建编码分析 2.编写异常类 3.编写自定义异常处理器 4.在springmvc.xml中配置异常处理器 5.编写Error.jsp.index.jsp页面 6.编写collector代码模 ...
- 在python开发工具PyCharm中搭建QtPy环境(详细)
在python开发工具PyCharm中搭建QtPy环境(详细) 在Python的开发工具PyCharm中安装QtPy5(版本5):打开“File”——“Settings”——“Project Inte ...
- volatile梳理
volatile 可见性也就是说一旦某个线程修改了该被volatile修饰的变量,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,可以立即获取修改之后的值. 在Java中为了加快程序的运行 ...