在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: "1" tilemap.options.maxZoom: "10" 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分布地图了: