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: "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分布地图了:

  

 

posted @ 2017-08-22 10:35  ahaii  阅读(6890)  评论(4编辑  收藏  举报