使用 Logstash 的 geoip 插件解析 IP 地址的归属地
本文演示如何使用 geoip 插件解析 IP 地址的归属地。
1、启动 Logstash
新建配置文件 geoip-demo.conf,并输入以下内容:
1 | input { |
使用 -f
参数指定到配置文件 geoip-demo.conf 启动 Logstash:
1 | /usr/share/logstash/bin/logstash -f /mnt/d/src/yaybyc/geoip-demo.conf |
如果只是为了测试,也可以不创建配置文件,直接使用 -e
参数指定配置的方式启动:
1 | /usr/share/logstash/bin/logstash -e "input { stdin { codec => 'json' }} filter { geoip { source => '[ip]' target => source}} output{ stdout{} }" |
2、输入以下 IP 地址
1 | {"ip":"222.209.9.72"} |
3、解析结果如下:
1 | { |
geo
各字段说明:
字段 | 说明 | 示例值 |
---|---|---|
country_name | 国家名称 | China |
region_name | 地域名称,省份 | Sichuan |
city_name | 城市 | Chengdu |
timezone | 时区 | Asia/Shanghai |
continent_code | 大洲代码 | AS |
country_iso_code | ISO国家代码 | CN |
region_iso_code | ISO地域代码 | CN-SC |
location | 位置,经纬度坐标 | |
lat | 纬度 | 30.6498 |
lon | 经度 | 104.0555 |
continent_code
定义:
大洲代码 | 大洲名称(英文) | 大洲名称(中文) |
---|---|---|
NA | North America | 北美洲 |
SA | South America | 南美洲 |
AS | Asia | 亚洲 |
OC | Oceania | 大洋洲 |
AF | Africa | 非洲 |
EU | Europe | 欧洲 |
TIPS:五大洲(Five continents)指地球陆地分成的五大版块,即亚洲(Asia)、欧洲(Europe)、非洲(Africa)、美洲(America)和大洋洲(Oceania)。地理学又将美洲分为北美洲和南美洲,南极洲无人居住,故也可称为七大洲。
奥运五环的五环分别代表五大洲。五大洲中面积最大的是亚洲,第二大的是美洲,第三大的是非洲,第四大的是欧洲,最小的是大洋洲。
亚洲代表性国家:中国,日本,韩国,泰国,新加坡。
欧洲代表性国家:英国,法国,德国,希腊,意大利。
美洲代表性国家:美国,加拿大,巴西,阿根廷。
非洲代表性国家:埃及,南非,利比亚,肯尼亚。
大洋洲代表性国家:澳大利亚,新西兰。
参考来源:https://baike.baidu.com/item/五大洲/19920227
需要注意的是,如果使用默认的 geoip 插件来解析 IP 地址的归属地,会有以下两个问题:
- 解析出来的归属地名称是英文的;
- 国内很多 IP 地址解析不出来对应的归属地,或归属地的结果并不准确。
例如,IP 地址 60.253.155.38 没有找到所属的省、市(未返回 region_name
、city_name
、region_iso_code
字段):
1 | {"ip":"60.253.155.38"} |
IP 地址 39.144.27.121 解析出来的归属地为中国-河南-周口,实际上通过 https://www.cz88.net/、https://www.ipplus360.com/ 或 https://ip138.com/ 查询出来的结果是中国-河南-郑州。
1 | {"ip":"39.144.27.121"} |
(END)