在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分布地圖了: