二、函数定义
解析出 IP 的地理位置。
四、参数说明
| 参数名称 | 参数描述 | 参数类型 | 是否必须 | 参数默认值 | 参数取值范围 |
| data | IP 值,支持多个 IP 通过分隔符分隔 | String | 是 | – | – |
| keep | 要留存的字段 | String | 否 | ("country","province","city","provider","geo")。geo 仅支持返回中国大陆城市的经纬度。 | – |
| ip_sep | 匹配结果中的第几个表达式 | String | 否 | – | – |
五、示例
·示例1
原始日志:
{ "ip": "120.235.55.160"}
加工规则:
fields_set("result", geo_parse(v("ip")))
加工结果:
{"ip":"120.235.55.160""result":"{"country":"中国","province":"广东省","city":"东莞市","provider":"中国移动","latitude":"23.027","longitude":"113.758"}"}
·示例2
原始日志:
{"ip":"101.132.57.150,101.14.57.157"}
加工规则:
fields_set("result", geo_parse(v("ip"),keep="province,city",ip_sep=","))
加工结果:
{"ip":"101.132.57.150,101.14.57.157", "result":"{\\"101.14.57.157\\":{\\"province\\":\\"台湾省\\",\\"city\\":\\"台北市\\"},\\"101.132.57.150\\":{\\"province\\":\\"上海市\\",\\"city\\":\\"上海市\\"}}"}
七、函数定义
判断 IP 是否在该网段内,支持多个网段。
八、语法描述
is_subnet_of(网段列表, ip)
九、参数说明
| 参数名称 | 参数描述 | 参数类型 | 是否必须 | 参数默认值 | 参数取值范围 |
| 网段列表 | 网段,支持多个网段,通过','分隔 | String | 是 | – | – |
| IP | 待判断的 IP | String | 是 | – | – |
十、示例
·示例1
原始日志:
{"ip": "192.168.1.127"}
加工规则:
log_keep(is_subnet_of("192.168.1.64/26",v("ip")))
加工结果:
{"ip": "192.168.1.127"}
·示例2
原始日志:
{"ip": "192.168.1.127"}
加工规则:
fields_set("is_subnet",is_subnet_of("192.168.1.64/26",v("ip")))
加工结果:
{"ip": "192.168.1.127", "is_subnet":"true"}
·示例3
原始日志:
{"ip": "192.168.1.127"}
加工规则:
fields_set("is_subnet",is_subnet_of("172.16.0.0/16",v("ip")))
加工结果:
{"ip": "192.168.1.127", "is_subnet":"false"}
·示例4
原始日志:
{"ip": "192.168.1.127"}
加工规则:
fields_set("is_subnet",is_subnet_of("172.16.0.0/16,192.168.1.64/26",v("ip")))
加工结果:
{"ip": "192.168.1.127", "is_subnet":"true"}
十二、函数定义
将 IPv4地址从字符串格式转换为无符号整数格式。
十三、语法描述
inet_aton(IP)
十四、参数说明
| 参数名称 | 参数描述 | 参数类型 | 是否必须 | 参数默认值 | 参数取值范围 |
| IP | 待转换的 IP | String | 是 | – | – |
十五、示例
原始日志:
{"ip": "192.168.0.1"}
加工规则:
fields_set("ip_int", inet_aton(v("ip")))
加工结果:
{"ip_int":"3232235521","ip":"192.168.0.1"}
十七、函数定义
将无符号整数格式的 IPv4地址转换回字符串格式。
十八、语法描述
inet_ntoa(number)
十九、参数说明
| 参数名称 | 参数描述 | 参数类型 | 是否必须 | 参数默认值 | 参数取值范围 |
| number | 待转 IP 的整型数字 | int | 是 | – | – |
20、示例
原始日志:
{"ip_int":"3232235521"}
加工规则:
fields_set("ip", inet_ntoa(v("ip_int")))
加工结果:
{"ip_int":"3232235521","ip":"192.168.0.1"}