Well,不要刷屏了
geoip

geoip

GeoIP解析IP地理位置

Logstashziyou 发表了文章 • 0 个评论 • 1706 次浏览 • 2019-12-20 10:09 • 来自相关话题

我们在对IP进行解析的时候使用maxmind提供的提供的GeoLite2,这个是maxmind提供的GeoIP2的免费版本,其准确率稍低于付费版本,可以很好的对IP进行地域解析,可以满足我们的需求。           GeoLite2有提供各种版本的API供开发者使用,我们就主要是用的是java版本的API。具体步骤如下:1、下载maxmind DB数据库 在maxmind官网下载需要的IP解析数据库,里面有两种数据库,一是国家数据库,一是城市数据库,我们使用的基本都是城市数据库,下载选择二进制格式。网页地址:GeoLite2 开源数据库 2、安装软件包,建议使用maven安装此软件包,将以下依赖添加到pom.xml中。
<dependency>
    <groupId> com.maxmind.geoip2 </groupId >
    <artifactId > geoip2 </artifactId >
    <version >2.12.0</version >
</dependency >
3、使用
// A File object pointing to your GeoIP2 or GeoLite2 database
System.out.println(GeoIP2Test.class.getClassLoader().getResource("GeoLite2-City.mmdb").toString().replaceFirst("/",""));
File database = new File(GeoIP2Test.class.getClassLoader().getResource("GeoLite2-City.mmdb").toString().replaceFirst("file:/",""));
 
// This creates the DatabaseReader object. To improve performance, reuse
// the object across lookups. The object is thread-safe.
DatabaseReader reader = new DatabaseReader.Builder(database).build();
 
 
InetAddress ipAddress = InetAddress.getByName("128.101.101.101");
 
// Replace "city" with the appropriate method for your database, e.g.,
// "country".
CityResponse response = reader.city(ipAddress);
Country country = response.getCountry();
System.out.println(country.getIsoCode());            // 'US'
System.out.println(country.getName());               // 'United States'
System.out.println(country.getNames().get("zh-CN")); // '美国'
 
 
Subdivision subdivision = response.getMostSpecificSubdivision();
System.out.println(subdivision.getName());    // 'Minnesota'
System.out.println(subdivision.getIsoCode()); // 'MN'
 
 
City city = response.getCity();
System.out.println(city.getName()); // 'Minneapolis'
 
 
Postal postal = response.getPostal();
System.out.println(postal.getCode()); // '55455'
 
 
Location location = response.getLocation();
System.out.println(location.getLatitude());  // 44.9733
System.out.println(location.getLongitude()); // -93.2323

logstash 配置geoip 报The database provided is invalid or corrupted错

Logstashhotyei2003 回复了问题 • 5 人关注 • 9 个回复 • 9002 次浏览 • 2018-10-24 14:01 • 来自相关话题

求教大神,Kibana上使用Map报错,没有“geo_point”,如何解决

Elasticsearchvidi 回复了问题 • 3 人关注 • 1 个回复 • 4868 次浏览 • 2018-06-25 09:13 • 来自相关话题

kibana使用geoip插件展示地图热力图

Kibanaziyou 发表了文章 • 10 个评论 • 17672 次浏览 • 2018-02-09 16:56 • 来自相关话题

geoip1.png

上图是我们最终的地图效果。

总体步骤:

一、使用logstash geoip插件解析IP字段;

二、配置geoip.location字段为geo_point类型。

三、使用kibana的Coordinate map作图。

具体步骤:

一、解析IP字段

使用logstash的geoip插件 logstash-filter-geoip 解析IP字段,需要在logstash的配置文件中配置geoip的解析配置,配置如下:

geoip {
       source => "ip" //需要解析的IP地址
      }

解析出的效果如下:

"geoip": {
      "city_name": "Wuhan",
      "timezone": "Asia/Shanghai",
      "ip": "117.136.52.200",
      "latitude": 30.5801,
      "country_name": "China",
      "country_code2": "CN",
      "continent_code": "AS",
      "country_code3": "CN",
      "region_name": "Hubei",
      "location": {
        "lon": 114.2734,
        "lat": 30.5801
      },
      "region_code": "42",
      "longitude": 114.2734
    }

备注:这个只是geoip的配置,解析日志的时候需要先解析出ip字段

二、配置geoip字段类型

IP经过logstash解析后就可以使用IP的所有解析信息了,但是如果想要在kibana中作图,就必须把geoip里面的相应信息配置成相应的字段类型,才能够被kibana识别,然后经过聚合作图。 需要配置的字段:geoip.location 需要配置的类型:geo_point 在mapping中的配置为:

"geoip" : {
          "properties" : {
            "location" : {
              "type" : "geo_point",
              "ignore_malformed": "true"  
            }
          }
        }

备注1: ignore_malformed 如果true,格式错误的地理位置被忽略。如果false(默认),格式错误的地理位置引发异常并拒绝整个文档。 此字段需要配置成true,以防地理格式错误导致文档被拒绝。 也可以在所以级别进行设置: "settings": { "index.mapping.ignore_malformed": true }

备注2:需要先设置mapping,再导入数据mapping才会生效,如果先导入数据,再设置mapping,则第二天八点后才会生效(北京时间)。

三、kibana作图

1、在kibana中打开visualize->coordinate map

geoip2.png

2、选择相应的索引进行画图

geoip3.png

3、选择geoip.location作为聚合字段,然后设置Options,调整地图效果即可。

geoip4.png

geoip插件ip查出的详细信息怎么显示成中文的

Logstashhuebryliu 回复了问题 • 6 人关注 • 5 个回复 • 3209 次浏览 • 2017-12-19 18:04 • 来自相关话题

geoip和timestamp的两个问题

Kibanabenny 回复了问题 • 3 人关注 • 2 个回复 • 4732 次浏览 • 2017-11-02 09:42 • 来自相关话题

使用ES的GEO获取附近信息失败

Elasticsearchkennywu76 回复了问题 • 2 人关注 • 1 个回复 • 1278 次浏览 • 2017-09-22 11:53 • 来自相关话题

Logstash收集多台设备的beats日志信息,如何添加多台源设备的源ip字段并输出到Elasticsearch?

LogstashDalen_fly 回复了问题 • 3 人关注 • 3 个回复 • 9415 次浏览 • 2017-09-21 21:18 • 来自相关话题

logstash IP地理位置解析不准确

Logstashhexiaoxin 回复了问题 • 4 人关注 • 2 个回复 • 7620 次浏览 • 2017-07-31 09:52 • 来自相关话题

geoip失败,是不是要转换string类型呢

回复

Logstashtcpdump 回复了问题 • 1 人关注 • 1 个回复 • 1510 次浏览 • 2017-06-12 19:30 • 来自相关话题

kibana geoip显示问题

回复

Elasticsearchfox0014 发起了问题 • 1 人关注 • 0 个回复 • 5605 次浏览 • 2016-12-26 16:47 • 来自相关话题

logstash 配置geoip 报The database provided is invalid or corrupted错

回复

Logstashhotyei2003 回复了问题 • 5 人关注 • 9 个回复 • 9002 次浏览 • 2018-10-24 14:01 • 来自相关话题

求教大神,Kibana上使用Map报错,没有“geo_point”,如何解决

回复

Elasticsearchvidi 回复了问题 • 3 人关注 • 1 个回复 • 4868 次浏览 • 2018-06-25 09:13 • 来自相关话题

geoip插件ip查出的详细信息怎么显示成中文的

回复

Logstashhuebryliu 回复了问题 • 6 人关注 • 5 个回复 • 3209 次浏览 • 2017-12-19 18:04 • 来自相关话题

geoip和timestamp的两个问题

回复

Kibanabenny 回复了问题 • 3 人关注 • 2 个回复 • 4732 次浏览 • 2017-11-02 09:42 • 来自相关话题

使用ES的GEO获取附近信息失败

回复

Elasticsearchkennywu76 回复了问题 • 2 人关注 • 1 个回复 • 1278 次浏览 • 2017-09-22 11:53 • 来自相关话题

Logstash收集多台设备的beats日志信息,如何添加多台源设备的源ip字段并输出到Elasticsearch?

回复

LogstashDalen_fly 回复了问题 • 3 人关注 • 3 个回复 • 9415 次浏览 • 2017-09-21 21:18 • 来自相关话题

logstash IP地理位置解析不准确

回复

Logstashhexiaoxin 回复了问题 • 4 人关注 • 2 个回复 • 7620 次浏览 • 2017-07-31 09:52 • 来自相关话题

geoip失败,是不是要转换string类型呢

回复

Logstashtcpdump 回复了问题 • 1 人关注 • 1 个回复 • 1510 次浏览 • 2017-06-12 19:30 • 来自相关话题

kibana geoip显示问题

回复

Elasticsearchfox0014 发起了问题 • 1 人关注 • 0 个回复 • 5605 次浏览 • 2016-12-26 16:47 • 来自相关话题

GeoIP解析IP地理位置

Logstashziyou 发表了文章 • 0 个评论 • 1706 次浏览 • 2019-12-20 10:09 • 来自相关话题

我们在对IP进行解析的时候使用maxmind提供的提供的GeoLite2,这个是maxmind提供的GeoIP2的免费版本,其准确率稍低于付费版本,可以很好的对IP进行地域解析,可以满足我们的需求。           GeoLite2有提供各种版本的API供开发者使用,我们就主要是用的是java版本的API。具体步骤如下:1、下载maxmind DB数据库 在maxmind官网下载需要的IP解析数据库,里面有两种数据库,一是国家数据库,一是城市数据库,我们使用的基本都是城市数据库,下载选择二进制格式。网页地址:GeoLite2 开源数据库 2、安装软件包,建议使用maven安装此软件包,将以下依赖添加到pom.xml中。
<dependency>
    <groupId> com.maxmind.geoip2 </groupId >
    <artifactId > geoip2 </artifactId >
    <version >2.12.0</version >
</dependency >
3、使用
// A File object pointing to your GeoIP2 or GeoLite2 database
System.out.println(GeoIP2Test.class.getClassLoader().getResource("GeoLite2-City.mmdb").toString().replaceFirst("/",""));
File database = new File(GeoIP2Test.class.getClassLoader().getResource("GeoLite2-City.mmdb").toString().replaceFirst("file:/",""));
 
// This creates the DatabaseReader object. To improve performance, reuse
// the object across lookups. The object is thread-safe.
DatabaseReader reader = new DatabaseReader.Builder(database).build();
 
 
InetAddress ipAddress = InetAddress.getByName("128.101.101.101");
 
// Replace "city" with the appropriate method for your database, e.g.,
// "country".
CityResponse response = reader.city(ipAddress);
Country country = response.getCountry();
System.out.println(country.getIsoCode());            // 'US'
System.out.println(country.getName());               // 'United States'
System.out.println(country.getNames().get("zh-CN")); // '美国'
 
 
Subdivision subdivision = response.getMostSpecificSubdivision();
System.out.println(subdivision.getName());    // 'Minnesota'
System.out.println(subdivision.getIsoCode()); // 'MN'
 
 
City city = response.getCity();
System.out.println(city.getName()); // 'Minneapolis'
 
 
Postal postal = response.getPostal();
System.out.println(postal.getCode()); // '55455'
 
 
Location location = response.getLocation();
System.out.println(location.getLatitude());  // 44.9733
System.out.println(location.getLongitude()); // -93.2323

kibana使用geoip插件展示地图热力图

Kibanaziyou 发表了文章 • 10 个评论 • 17672 次浏览 • 2018-02-09 16:56 • 来自相关话题

geoip1.png

上图是我们最终的地图效果。

总体步骤:

一、使用logstash geoip插件解析IP字段;

二、配置geoip.location字段为geo_point类型。

三、使用kibana的Coordinate map作图。

具体步骤:

一、解析IP字段

使用logstash的geoip插件 logstash-filter-geoip 解析IP字段,需要在logstash的配置文件中配置geoip的解析配置,配置如下:

geoip {
       source => "ip" //需要解析的IP地址
      }

解析出的效果如下:

"geoip": {
      "city_name": "Wuhan",
      "timezone": "Asia/Shanghai",
      "ip": "117.136.52.200",
      "latitude": 30.5801,
      "country_name": "China",
      "country_code2": "CN",
      "continent_code": "AS",
      "country_code3": "CN",
      "region_name": "Hubei",
      "location": {
        "lon": 114.2734,
        "lat": 30.5801
      },
      "region_code": "42",
      "longitude": 114.2734
    }

备注:这个只是geoip的配置,解析日志的时候需要先解析出ip字段

二、配置geoip字段类型

IP经过logstash解析后就可以使用IP的所有解析信息了,但是如果想要在kibana中作图,就必须把geoip里面的相应信息配置成相应的字段类型,才能够被kibana识别,然后经过聚合作图。 需要配置的字段:geoip.location 需要配置的类型:geo_point 在mapping中的配置为:

"geoip" : {
          "properties" : {
            "location" : {
              "type" : "geo_point",
              "ignore_malformed": "true"  
            }
          }
        }

备注1: ignore_malformed 如果true,格式错误的地理位置被忽略。如果false(默认),格式错误的地理位置引发异常并拒绝整个文档。 此字段需要配置成true,以防地理格式错误导致文档被拒绝。 也可以在所以级别进行设置: "settings": { "index.mapping.ignore_malformed": true }

备注2:需要先设置mapping,再导入数据mapping才会生效,如果先导入数据,再设置mapping,则第二天八点后才会生效(北京时间)。

三、kibana作图

1、在kibana中打开visualize->coordinate map

geoip2.png

2、选择相应的索引进行画图

geoip3.png

3、选择geoip.location作为聚合字段,然后设置Options,调整地图效果即可。

geoip4.png