elk6.x之kibana展示GEOIP中文地图

环境:CentOS6.8,elk6.4

GEOIP是logstash的一个过滤插件,作用是分析访问IP获取地理位置

使用GeoIP更新

MaxMind提供GeoIP更新程序,该程序为GeoIP2和GeoIP Legacy二进制数据库执行自动更新。请按照以下说明操作

第1步 - 安装GeoIP更新

下载免费GEOIP2库(以前的GEOIP旧数据库官方不再维护)

这边以rpm包为例,其他方式https://github.com/maxmind/geoipupdate

wget https://github.com/maxmind/geoipupdate/releases/download/v4.0.2/geoipupdate_4.0.2_linux_amd64.rpm
 rpm -i geoipupdate_4.0.2_linux_amd64.rpm

第2步 - 使用帐户信息获取GeoIP.conf

获取配置文件,rpm安装之后有,在/etc/GeoIP.conf,其他方式未测试

您也可以使用下面的模板手动编写此文件(不推荐)。

#GeoIP.conf文件 - 由geoipupdate程序用于更新数据库
#来自http://www.maxmind.com
AccountID YOUR_ACCOUNT_ID_HERE 
LicenseKey YOUR_LICENSE_KEY_HERE 
EditionIDs YOUR_EDITION_IDS_HERE

 

对于免费的GeoLite2数据库

GeoIP更新程序也可以在没有帐户的情况下检索GeoLite2数据库。请使用以下GeoIP.conf文件:

#以下AccountID和LicenseKey是必需的占位符。
#对于2.5.0之前的geoipupdate版本,请在此处使用UserId而不是AccountID。
AccountID 0
LicenseKey 000000000000

#包括以下一个或多个版本ID:
#* GeoLite2-City  -  GeoLite 2 City
#* GeoLite2-Country  -  GeoLite2国家/地区
#对于2.5.0之前的geoipupdate版本,请在此处使用ProductIds而不是EditionID。
版本ID GeoLite2-City GeoLite2-Country

更新GEOIP库(一般是一周更新一次):

第3步 - 运行GeoIP更新

geoipupdate

geoipupdate需要打开DNS和HTTPS(443)端口

数据路径(默认,可以自己指定路径,使用database参数):

usr/share/GeoIP/GeoLite2-City.mmdb

 

GEOIP插件配置选项

cache_size:

      值类型是数字,默认值是1000。

      GeoIP查询的成本非常高。 该过滤器使用缓存来利用IP代理通常在日志文件中彼此相邻的情况,并且很少具有随机分布。 设置的越高,项目在缓存中的可能性就越大,并且此过滤器运行得越快。 但是,如果将此设置得太高,则可能会使用比所需更多的内存。 由于Geoip API升级到v2,目前没有任何驱逐策略,如果缓存已满,则不能添加更多记录。 尝试使用此选项的不同值来查找数据集的最佳性能。

      这必须设置为大于0的值。真的没有理由不想要这种行为,开销很小,速度增益很大。

      注意这个配置值对于geoip_type是全局的,这一点很重要。 也就是说,相同geoip_type的geoip过滤器的所有实例共享相同的高速缓存。 最后声明的缓存大小将获胜。 这样做的原因是,在流水线中的不同点上为不同的实例分配多个缓存是没有好处的,这只会增加缓存未命中次数和浪费内存。

database:

       值类型是path,这个设置没有默认值。

       Logstash应该使用的Maxmind数据库文件的路径。 默认数据库是GeoLite2-City。 GeoLite2-City,GeoLite2-Country,GeoLite2-ASN是Maxmind支持的免费数据库。 GeoIP2-City,GeoIP2-ISP,GeoIP2-Country是Maxmind支持的商业数据库。

      如果未指定,则默认为Logstash附带的GeoLite2城市数据库。

default_database_type:

       这个插件现在包括GeoLite2-City和GeoLite2-ASN数据库。如果未设置数据库和default_database_type,则将选择GeoLite2-City数据库。要使用包含的GeoLite2-ASN数据库,请将default_database_type设置为ASN。

       值类型是字符串,默认值是city。唯一可接受的值是City和ASN。

fields:

       值类型是array,这个设置没有默认值。

       要包含在事件中的geoip字段数组。可能的字段取决于数据库类型。 默认情况下,所有geoip字段都包含在事件中。

对于内置的GeoLite2城市数据库,可以使用以下内容:city_name, continent_code, country_code2, country_code3, country_name, dma_code, ip, latitude, longitude, postal_code, region_name 和 timezone.

source:

       这是一个必需的设置。值类型是字符串,这个设置没有默认值。

       包含要通过geoip映射的IP地址或主机名的字段。 如果这个字段是一个数组,则只会使用第一个值。

tag_on_failure:

      值类型是数组,默认值是[“_geoip_lookup_failure”]。这个设置没有默认值。

      将事件标记为未能查找地理信息。 这可以在以后的分析中使用。

target:

      值类型是字符串,默认值是“geoip”。

      指定Logstash应该存储geoip数据的字段。 例如,如果您有src_ip和dst_ip字段,并希望两个IP的GeoIP信息,这可能是有用的。

       如果将数据保存到geoip以外的目标字段,并希望在Elasticsearch中使用与geo_point相关的函数,则需要更改Elasticsearch输出提供的模板,并将输出配置为使用新模板。

       即使您不使用geo_point映射,[target] [location]字段仍然是有效的GeoJSON。

通用选项

所有过滤器插件都支持以下配置选项:

elk6.x之kibana展示GEOIP中文地图_第1张图片

add_field:

     值类型是hash,默认值是{}

     如果此过滤器成功,请将任意字段添加到此事件。 字段名称可以是动态的,并使用%{field}来包含事件的一部分。

add_tag:

      值类型是数组。默认值是[]。如果此过滤器成功,请向该事件添加任意标签。 标签可以是动态的,并使用%{field}语法包含事件的一部分。

enable_metric:

       值类型是布尔值,默认值为true。为特定的插件实例禁用或启用度量标准日志记录,我们默认记录所有的度量标准,但是您可以禁用特定插件的度量标准收集。

id:

     值类型是字符串,这个设置没有默认值。为插件配置添加一个唯一的ID。 如果没有指定ID,Logstash将会生成一个。 强烈建议在您的配置中设置此ID。 当你有两个或多个相同类型的插件时,这是特别有用的,例如,如果你有两个geoip过滤器。 在这种情况下添加一个命名的ID将有助于在使用监视API时监视Logstash。

periodic_flush:

      值类型是布尔值,默认值是false。定期调用过滤器刷新方法。 可选的。

remove_field:

       值类型是数组,默认值是[]。如果此过滤器成功,请从此事件中删除任意字段。

remove_tag:

        值类型是数组,默认值是[]。如果此过滤器成功,请从该事件中移除任意标签。 标签可以是动态的,并使用%{field}语法包含事件的一部分。

PS:选项来自http://www.51niux.com/?id=212

安装好GEOIP2库之后,配置logstash

geoip {
                source => "client_ip"
                database => "/usr/share/GeoIP/GeoLite2-City.mmdb"
                add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
                add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
                }
        }
                mutate {
                        remove_field => "geoip.continent_code"
                        remove_field => "geoip.country_code2"
                        remove_field => "geoip.country_code3"
                        convert => ["[geoip][coordinates]","float"]
                        }
        }
convert是修改字段类型

 PS:remove_field失效,暂时未确认原因,有懂的请指教一下。

检测配置文件无错之后,启动logstash

elk6.x之kibana展示GEOIP中文地图_第2张图片

elk6.x之kibana展示GEOIP中文地图_第3张图片

生成字段如图

可视化效果图:

elk6.x之kibana展示GEOIP中文地图_第4张图片

 

制作方式:

1,默认是英文图,变更中文图需要修改kibana.yml,在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}"
重启Kibana

2,打开可视化,选择坐标图

3,如果选择参数

你可能感兴趣的:(ËLK)