IP 解析函数

最近更新时间:2025-09-30 16:10:01

我的收藏

geo_parse 函数

函数定义

解析出 IP 的地理位置。

语法描述

geo_parse(字段值, keep=("country","province","city"), ip_sep=",")

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
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\\":\\"上海市\\"}}"}

is_subnet_of 函数

函数定义

判断 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"}

inet_aton 函数

函数定义

将 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"}

inet_ntoa 函数

函数定义

将无符号整数格式的 IPv4地址转换回字符串格式。

语法描述

inet_ntoa(number)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
number
待转 IP 的整型数字
int
-
-

示例

原始日志:
{"ip_int":"3232235521"}
加工规则:
fields_set("ip", inet_ntoa(v("ip_int")))
加工结果:
{"ip_int":"3232235521","ip":"192.168.0.1"}