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