本文档主要介绍JSON、XML、IP与Protobuf函数的语法规则,包括参数解释、函数示例等。

函数列表

类型 函数 说明
JSON json_select 根据JMES语法提取或计算JSON表达式中特定的值。
json_parse 将值解析为JSON对象。
XML xml_to_json 将xml转成JSON再做展开操作。
Gzip gzip_compress 压缩数据,返回一个数据压缩后再进行base64编码的数据对象。
gzip_decompress 对数据进行base64解码后,再对数据解压缩,返回一个包含解压数据的对象。
IP geo_parse 根据IP地址解析出所属国家、省份和市信息。
ip_cidrmatch 判断IP地址是否属于CIDR地址块。
ip_version 判断IP地址为IPv4还是IPv6。
ip_type 判断IP地址为私有地址还是公有地址。
ip_makenet 将单个IP地址转换为CIDR地址块。
ip_to_format 将输入的CIDR地址块按照Prefixlen或者Netmask格式输出。
ip_overlaps 判断两个网段是否存在重叠。

json_select

根据JMES语法提取或计算JSON表达式中特定的值。

  • 函数格式
    json_select(value, jmes, default=None, restrict=False)
  • 参数说明
    参数 类型 是否必填 说明
    value 任意 传入待提取字段的JSON表达式或字段。
    jmes String JMES表达式,表示提取的字段。
    default 任意 如果提取字段不存在,则返回此处设置的值。默认为None。
    restrict Bool 提取字段的值不是合法的JSON格式时,是否严格限制加工。 默认值False。
    • False:忽略报错,数据加工继续处理,返回default定义的值。
    • True:直接报错,数据加工不再继续处理,直接丢弃该条日志。
  • 返回结果

    返回提取到的值。

  • 函数示例
    • 示例1:从content提取name的值。
      • 原始日志
        content:  {"name": "xiaoming", "age": 10}
      • 加工规则
        e_set("json_filter",json_select(v("content"), "name"))
      • 加工结果
        content:  {"name": "xiaoming", "age": 10}
        json_filter:  xiaoming
    • 示例2:从content提取name字段包含的所有值。
      • 原始日志
        content:  {"name": ["xiaoming", "xiaowang", "xiaoli"], "age": 10}
      • 加工规则
        e_set("json_filter",json_select(v("content"), "name[*]"))
      • 加工结果
        content:  {"name": ["xiaoming", "xiaowang", "xiaoli"], "age": 10}
        json_filter:  ["xiaoming", "xiaowang", "xiaoli"]
    • 示例3:从content提取name3的值,若字段不存在,则返回None值。
      • 原始日志
        content:  {"name": "xiaoming", "age": 10}
      • 加工规则
        e_set("json_filter",json_select(v("content"), "name3", default="None"))
      • 加工结果
        content:  {"name": "xiaoming", "age": 10}
        json_filter: None

json_parse

将值解析为JSON对象。

  • 函数格式
    json_parse(value, default=None, restrict=False)
  • 参数说明
    参数 类型 是否必填 说明
    value String 传入需要被解析的字段。
    default 任意 如果提取字段不存在,则返回此处设置的默认值。默认为None。
    restrict Bool 提取字段的值不是合法的JSON格式时,是否严格限制加工。 默认值False。
    • False:忽略报错,数据加工继续处理,返回default定义的值。
    • True:直接报错,数据加工不再继续处理,直接丢弃该条日志。
  • 返回结果

    返回转换后的JSON对象。

  • 函数示例
    • 原始日志
      content:  {"abc": 123, "xyz": "test" }
    • 加工规则
      e_set("json",json_parse(v("content")))
    • 加工结果
      content:  {"abc": 123, "xyz": "test" }
      json:  {"abc": 123, "xyz": "test"}

xml_to_json

将xml转成JSON再做展开操作。

  • 函数格式
    xml_to_json(source)
  • 参数说明
    参数 类型 是否必填 说明
    source String 传入需要被转换的字段。
  • 返回结果

    返回转换后的JSON数据。

  • 函数示例
    • 原始日志
      str : <data><country name="Liechtenstein"><rank>1</rank><year>2008</year><gdppc>141100</gdppc><neighbor name="Austria" direction="E"/><neighbor name="Switzerland" direction="W"/></country><country name="Singapore"><rank>4</rank><year>2011</year><gdppc>59900</gdppc><neighbor name="Malaysia" direction="N"/></country><country name="Panama"><rank>68</rank><year>2011</year><gdppc>13600</gdppc><neighbor name="Costa Rica" direction="W"/><neighbor name="Colombia" direction="E"/></country></data>
    • 加工规则
      e_set("str_json",xml_to_json(v("str")))
    • 加工结果
      str:<data><country name="Liechtenstein"><rank>1</rank><year>2008</year><gdppc>141100</gdppc><neighbor name="Austria" direction="E"/><neighbor name="Switzerland" direction="W"/></country><country name="Singapore"><rank>4</rank><year>2011</year><gdppc>59900</gdppc><neighbor name="Malaysia" direction="N"/></country><country name="Panama"><rank>68</rank><year>2011</year><gdppc>13600</gdppc><neighbor name="Costa Rica" direction="W"/><neighbor name="Colombia" direction="E"/></country></data>str_json:{"data": {"country": [{"@name": "Liechtenstein", "rank": "1", "year": "2008", "gdppc": "141100", "neighbor": [{"@name": "Austria", "@direction": "E"}, {"@name": "Switzerland", "@direction": "W"}]}, {"@name": "Singapore", "rank": "4", "year": "2011", "gdppc": "59900", "neighbor": {"@name": "Malaysia", "@direction": "N"}}, {"@name": "Panama", "rank": "68", "year": "2011", "gdppc": "13600", "neighbor": [{"@name": "Costa Rica", "@direction": "W"}, {"@name": "Colombia", "@direction": "E"}]}]}}

gzip_compress

压缩数据,返回一个数据压缩后再进行base64编码的数据对象。

  • 函数格式
    gzip_compress(data, compresslevel=6, to_format="base64", encoding="utf-8")
  • 参数说明
    参数 类型 是否必填 说明
    data 任意 输入需要压缩的数据。
    compresslevel Int 用于控制压缩等级,可配置为0~9的整数。默认值为6。
    • 1:压缩速度最快但压缩比例最小。
    • 9:压缩速度最慢但压缩比例最大。
    • 0:不压缩。
    to_format String 经过压缩后的数据进行base64编码,目前只支持进行base64编码。
    encoding String 编码格式,默认为utf-8,其他编码格式请参见标准编码格式
  • 返回结果

    返回压缩数据的base64编码后的对象。

  • 函数示例
    • 原始日志
      content: I always look forward to my holidays whether I travel or stay at home.
    • 加工规则
      e_set("base64_encode_gzip_compress",gzip_compress(v("content"),to_format="base64"))
    • 加工结果
      content: I always look forward to my holidays whether I travel or stay at home.
      base64_encode_gzip_compress: H4sIAA8JXl4C/xXK0QmAMAwFwFXeBO7RMQKNREx5kAZDtle/7wbES3rDyRsnoyQmklgNo1/ztzJN08BAhjzqYGCnNCS/tPR4AcgrnWVGAAAA

gzip_decompress

对数据进行base64解码后,再对数据解压缩,返回一个包含解压数据的对象。

  • 函数格式
    gzip_decompress(data, from_format="base64", encoding="utf-8")
  • 参数说明
    参数 类型 是否必填 说明
    data 任意 输入需要解压的数据。
    from_format String 输入已进行base64解码的数据,目前只支持base64解码后的数据。
    encoding String 编码格式,默认utf-8,其他编码格式请参见标准编码格式
  • 返回结果

    返回数据解压后的对象。

  • 函数示例
    • 原始日志
      content: H4sIAA8JXl4C/xXK0QmAMAwFwFXeBO7RMQKNREx5kAZDtle/7wbES3rDyRsnoyQmklgNo1/ztzJN08BAhjzqYGCnNCS/tPR4AcgrnWVGAAAA
    • 加工规则
      e_set("gzip_decompress",gzip_decompress(v("content"),from_fmat="base64"))
    • 加工结果
      content: H4sIAA8JXl4C/xXK0QmAMAwFwFXeBO7RMQKNREx5kAZDtle/7wbES3rDyRsnoyQmklgNo1/ztzJN08BAhjzqYGCnNCS/tPR4AcgrnWVGAAAA
      gzip_decompress: I always look forward to my holidays whether I travel or stay at home.

geo_parse

根据IP地址解析出所属国家、省份和市信息。

  • 函数格式
    geo_parse(ip, ip_db="SLS-GeoIP", keep_fields=None, provider="ipip", ip_sep=None)
  • 参数说明
    参数 类型 是否必填 说明
    ip IP地址字符串 IP地址,表示解析该IP地址所属国家省市信息。如果包含多个IP地址,可指定ip_sep参数分割后解析,结果以JSON格式返回。
    ip_db IP库内容 解析IP地址所属国家、省份和市信息使用的IP库。
    • SLS-GeoIP:SLS内置IP库,取值为SLS-GeoIP,默认使用该选项。
    • 自选IP库:使用res_oss_file(endpoint, ak_id, ak_key, bucket, file, format='text', change_detect_interval=0,fetch_interval=2,refresh_retry_max=60,encoding='utf8',error='ignore'),参数定义请参见res_oss_file,该函数获取IP库使用的形式为format='binary'
    keep_fields 元组 返回结果中包含的key信息。
    • 当通过SLS内置IP库解析时,默认返回信息如下:
      • city:表示城市名称。
      • province:表示省份名称。
      • country:表示国家名称。
      • city_en:表示城市的行政区划代码或者英文名称。
      • province_en:表示省份的行政区划代码或者英文名称。
      • country_en:表示国家或地区的代码或者英文名称。
      • isp:表示所属网络运营商名称。
      • lat:表示IP地址所在位置的纬度。
      • lon:表示IP地址所在位置的经度。
    • 当通过自选IP库解析时,默认返回信息如下:
      • city:表示城市名称。
      • province:表示省份名称。
      • country:表示国家名称。

    例如keep_fields=("city","country")表示仅输出citycountry字段信息。

    此外keep_fields也支持重命名。例如(("city","cty"),("country","state"))表示以ctystate形式输出。

    provider 字符串 仅当ip_db取值为自选IP库时,该参数有效。取值如下:
    • ipip:默认值。用来解析ipdb库提供的二进制IP地址库,下载地址为ipip
    • ip2location:用来解析ip2location提供的全球IP二进制解析库,下载地址为ip2location。仅支持二进制包。
    ip_sep 字符串 IP地址分隔符,用于将包含多个IP地址的字符串分割为多个IP地址,解析结果通过JSON格式返回。默认值为None,表示不进行分隔。
  • 返回结果
    返回字典形式数据,包含如下内容:
    {
      "city": "...",
      "province":"...",
      "country": "..."
    }
  • 函数示例
    • 示例1:使用SLS内置IP库查询。
      • 原始日志
        ip : 203.0.113.1
      • 加工规则
        e_set("geo", geo_parse(v("ip")))
      • 加工结果
        ip : 203.0.113.1
        geo: {"city":"杭州","province":"浙江省","country":"中国","isp":"移动","lat":30.16,"lon":120.12}
    • 示例2:使用SLS内置IP库查询,解析包含多个IP地址的日志字段,并返回每个IP地址所属的国家、省份和市信息。
      • 原始日志
        ip : 203.0.113.4, 192.0.2.2, 198.51.100.2
      • 加工规则
        e_set("geo", geo_parse(v("ip"), ip_sep=","))
      • 加工结果
        ip : 203.0.113.4, 192.0.2.2, 198.51.100.2
        geo : {"203.0.113.4": {"country_en": "CN", "province_en": "330000", "city_en": "330200", "country": "中国", "province": "浙江省", "city": "宁波市", "isp": "电信", "lat": 29.8782, "lon": 121.549}, "192.0.2.2": {"country_en": "CN", "province_en": "320000", "city_en": "321300", "country": "中国", "province": "江苏省", "city": "宿迁市", "isp": "电信", "lat": 33.9492, "lon": 118.296}, "198.51.100.2": {"country_en": "CN", "province_en": "330000", "city_en": "330500", "country": "中国", "province": "浙江省", "city": "湖州市", "isp": "电信", "lat": 30.8703, "lon": 120.093}}
    • 示例3:使用自选IP库查询。
      • 原始日志
        ip : 203.0.113.1
      • 加工规则
        e_set("geo",geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',
                                                         ak_id='your ak_id',
                                                         ak_key='your ak_key',
                                                         bucket='your bucket', file='ipipfree.ipdb',
                                                                       format='binary',change_detect_interval=20)))
      • 加工结果
        ip : 203.0.113.1
        geo : {"city": "杭州", "province":"浙江省","country": "中国"}
    • 示例4: 使用自选IP库查询,选择输出关键key字段信息并且重命名key字段名称。
      • 原始日志
        ip : 203.0.113.1
      • 加工规则
        e_set("geo",geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',
                                                         ak_id='your ak_id',
                                                         ak_key='your ak_key',
                                                         bucket='your bucket', file='ipipfree.ipdb',
                                                                       format='binary',change_detect_interval=20),keep_fields=(("city","cty"),("country","state"),("province","pro"))))
      • 加工结果
        ip : 203.0.113.1
        geo : { "state": "中国","pro": "浙江省","cty": "杭州"}
    • 示例5:使用自选IP库查询,选择输出关键key字段信息。
      • 原始日志
        ip : 203.0.113.1
      • 加工规则
        e_set("geo",geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',
                                                         ak_id='your ak_id',
                                                         ak_key='your ak_key',
                                                         bucket='your bucket', file='ipipfree.ipdb',
                                                                       format='binary',change_detect_interval=20),keep_fields=("country","province")))
      • 加工结果
        ip : 203.0.113.1
        geo : { "country": "中国","province": "浙江省"}
    • 示例6:使用自选IP库查询,使用ip2location全球IP解析库输出关键key字段信息 。
      • 原始日志
        ip : 203.0.113.2
      • 加工规则
        e_set("geo", geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',ak_id="your ak_id", ak_key="your ak_serect", bucket='log-etl-staging', file='your ip2location bin file', format='binary', change_detect_interval=20),provider="ip2location"))
      • 加工结果
        ip : 203.0.113.2
        geo : {"city":"Dearborn","province":"Michigan","country":"United States"}
      数据加工使用的是ip2location的开源python sdk。更多信息,请参见ip2location python sdk。ip2location python sdk支持解析的字段如下所示,数据加工同步支持解析如下所有字段。如果您在使用过程中发现无法解析出目标字段,请检查使用的ip2location解析库是否包含目标字段。
      country_short
      country_long /  数据加工使用country字段替代
      region  / 数据加工使用province字段替代
      city
      isp
      latitude
      longitude
      domain
      zipcode
      timezone
      netspeed
      idd_code
      area_code
      weather_code
      weather_name
      mcc
      mnc
      mobile_brand
      elevation
      usage_type                               
    • 示例7:使用自选IP库查询,解析包含多个IP地址的日志字段,并返回每个IP地址所属的国家省市信息。
      • 原始日志
        ip : 203.0.113.3, 192.0.2.1, 198.51.100.1
      • 加工规则
        e_set("geo", geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',
                                                                       ak_id="ak_id",
                                                                       ak_key="ak_serect",
                                                                       bucket='log-etl-staging',
                                                                       file='calendar.csv/IP2LOCATION-LITE-DB3.BIN',
                                                                       format='binary', change_detect_interval=20),
                                        provider="ip2location", ip_sep=","))
      • 加工结果
        ip : 203.0.113.3, 192.0.2.1, 198.51.100.1
        geo : {"203.0.113.3": {"city": "Dearborn", "province": "Michigan", "country": "United States"}, "192.0.2.1": {"city": "Hangzhou", "province": "Zhejiang", "country": "China"}, "198.51.100.1": {"city": "Hangzhou", "province": "Zhejiang", "country": "China"}}

ip_cidrmatch

根据IP地址是否与CIDR子网匹配返回布尔值。使用此函数来确定IP地址是否属于CIDR地址块。当IP地址属于CIDR地址块时,返回True,否则返回False。支持IPv4和IPv6。

  • 函数格式
    ip_cidrmatch(cidr_subnet, ip, default="")
  • 参数说明
    参数 类型 是否必填 说明
    cidr_subnet String 输入CIDR地址块,例如:203.0.113.1/25。
    ip String 输入IP地址。
    default 任意 设置default值(可为空),如果IP地址与CIDR地址块不匹配时,返回该值。
  • 返回结果

    如果IP地址与CIDR地址块匹配,返回True,否则返回False。

  • 函数示例
    • 示例1:IP地址(IPv4)与CIDR地址块匹配,返回true。
      • 原始日志
        cidr_subnet: 192.168.1.0/24
        ip: 192.168.1.100
      • 加工规则
        e_set("is_belong",ip_cidrmatch(v("cidr_subnet"),v("ip")))
      • 加工结果
        cidr_subnet: 192.168.1.0/24
        ip: 192.168.1.100
        is_belong: true
    • 示例2:IP地址(IPv4)与CIDR地址块不匹配,返回false。
      • 原始日志
        cidr_subnet: 192.168.1.0/24
        ip: 10.10.1.100
      • 加工规则
        e_set("is_belong",ip_cidrmatch(v("cidr_subnet"),v("ip")))
      • 加工结果
        cidr_subnet: 192.168.1.0/24
        ip: 10.10.1.100
        is_belong: false
    • 示例3:IP地址与CIDR地址块无法匹配,返回unknown。
      • 原始日志
        cidr_subnet: -11
        ip: 10.10.1.100
      • 加工规则
        e_set("is_belong",ip_cidrmatch(v("cidr_subnet"),v("ip"),default="unknown"))
      • 加工结果
        cidr_subnet: -11
        ip: 10.10.1.100
        is_belong: unknown

ip_version

判断IP地址为IPv4还是IPv6。若是IPv4类型IP地址,则返回IPv4,若是IPv6类型IP地址,则返回IPv6。

  • 函数格式
    ip_version(ip, default="")
  • 参数说明
    参数 类型 是否必填 说明
    ip String 输入IP地址。
    default 任意 设置default值(可为空),无法判断IP地址版本时,返回该值。
  • 返回结果

    返回IPv4或者IPv6。

  • 函数示例
    • 示例1:判断IPv4地址的版本,返回IPv4。
      • 原始日志
        ip: 192.168.1.100
      • 加工规则
        e_set("version",ip_version(v("ip")))
      • 加工结果
        ip: 192.168.1.100
        version: IPv4
    • 示例2:判断IPv6地址的版本,返回IPv6。
      • 原始日志
        ip: ::1
      • 加工规则
        e_set("version",ip_version(v("ip")))
      • 加工结果
        ip: ::1
        version: IPv6

ip_type

判断IP地址是私有地址还是公有地址,返回IP类型包括private、reserved、loopback、public和allocated ripe ncc等。

  • 函数格式
    ip_type(ip, default="")
  • 参数说明
    参数 类型 是否必填 说明
    ip String 输入IP地址。
    default 任意 设置default值(可为空),无法判断IP地址类型时,返回该值。
  • 返回结果

    返回IP类型包括private、reserved、loopback、public和allocated ripe ncc等。

  • 函数示例
    • 示例1: 判断IP地址,返回loopback。
      • 原始日志
        ip: 127.0.0.1
      • 加工规则
        e_set("type",ip_type(v("ip")))
      • 加工结果
        ip: 127.0.0.1
        type: loopback
    • 示例2: 判断IP地址,返回private。
      • 原始日志
        ip: 192.168.1.1
      • 加工规则
        e_set("type",ip_type(v("ip")))
      • 加工结果
        ip: 192.168.1.1
        type: private
    • 示例3: 判断IP地址,返回public。
      • 原始日志
        ip: 195.185.1.2
      • 加工规则
        e_set("type",ip_type(v("ip")))
      • 加工结果
        ip: 195.185.1.2
        type: public
    • 示例4: 判断IPv6地址,返回loopback。
      • 原始日志
        ip: ::1
      • 加工规则
        e_set("type",ip_type(v("ip")))
      • 加工结果
        ip: ::1
        type: loopback
    • 示例5:判断IPv6地址,返回allocated ripe ncc。
      • 原始日志
        ip: 2001:0658:022a:cafe:0200::1
      • 加工规则
        e_set("type",ip_type(v("ip")))
      • 加工结果
        ip: 2001:0658:022a:cafe:0200::1
        type: allocated ripe ncc

ip_makenet

将单个IP地址转换为CIDR地址块。

  • 函数格式
    ip_makenet(ip, subnet_mask=None, default="")
  • 参数说明
    参数 类型 是否必填 说明
    ip String 输入IP地址。
    subnet_mask String 输入子网掩码,例如:255.255.255.0。
    说明 如果ip中输入的是IP网段,则子网掩码可以为空。
    default 任意 设置default的值(可为空),无法将IP地址转成CIDR地址块时,返回该值。
  • 返回结果

    返回CIDR地址块。

  • 函数示例:
    • 示例1: 将IP地址转换为CIDR地址块。
      • 原始日志
        ip: 192.168.1.0
      • 加工规则
        e_set("makenet",ip_makenet(v("ip"),"255.255.255.0"))
      • 加工结果
        ip: 192.168.1.0
        makenet: 192.168.1.0/24
    • 示例2:将IP地址范围转换为CIDR地址块。
      • 原始日志
        ip: 192.168.1.0-192.168.1.255
      • 加工规则
        e_set("makenet",ip_makenet(v("ip")))
      • 加工结果
        ip: 192.168.1.0-192.168.1.255
        makenet: 192.168.1.0/24
    • 示例3:将IP地址范围转换为CIDR地址块。
      • 原始日志
        Ip: 192.168.1.0/255.255.255.0
      • 加工规则
        e_set("makenet",ip_makenet(v("ip")))
      • 加工结果
        ip: 192.168.1.0/255.255.255.0
        makenet: 192.168.1.0/24

ip_to_format

将输入的CIDR地址块按照Prefixlen或者Netmask格式输出。

  • 函数格式
    ip_to_format(cidr_subnet, want_prefix_len=0, default="")
  • 参数说明
    参数 类型 是否必填 说明
    cidr_subnet String 输入CIDR地址块,例如:192.168.1.0/24
    want_prefix_len Int 设置返回格式,默认为0。
    • 0:表示无格式返回。
    • 1:按照prefix格式返回。
    • 2:按照netmask格式返回。
    • 3:按照IP网段格式返回。
    default 任意 设置default的值(可为空),无法将输入的CIDR地址块按照格式输出时,返回该值。
  • 返回结果

    返回特定格式的IP地址。

  • 函数示例
    • 示例1: 将输入的CIDR地址块直接输出。
      • 原始日志
        ip: 192.168.1.0/24
      • 加工规则
        e_set("strNormal",ip_to_format(v("ip"),0))
      • 加工结果
        ip: 192.168.1.0/24
        strNormal: 192.168.1.0/24
    • 示例2: 将输入的CIDR地址块按照prefix格式输出。
      • 原始日志
         ip: 192.168.1.0/24
      • 加工规则
        e_set("strNormal",ip_to_format(v("ip"),1))
      • 加工结果
        ip: 192.168.1.0/24
        strNormal: 192.168.1.0/24
    • 示例3: 将输入的CIDR地址块按照netmask格式输出。
      • 原始日志
        ip: 192.168.1.0/24
      • 加工规则
        e_set("strNormal",ip_to_format(v("ip"),2))
      • 加工结果
        ip: 192.168.1.0/24
        strNormal: 192.168.1.0/255.255.255.0
    • 示例4: 将输入的CIDR地址块按照IP地址网段格式输出。
      • 原始日志
        ip: 192.168.1.0/24
      • 加工规则
        e_set("strNormal",ip_to_format(v("ip"),3))
      • 加工结果
        ip: 192.168.1.0/24
        strNormal: 192.168.1.0-192.168.1.255

ip_overlaps

判断两个网段是否存在重叠。

  • 函数格式
    ip_overlaps(cidr_subnet, cidr_subnet2, default="")
  • 参数说明
    参数 类型 是否必填 说明
    cidr_subnet String 输入CIDR地址块1。
    cidr_subnet2 String 输入CIDR地址块2。
    default 任意 设置default的值(可为空),无法判断两个CIDR地址块是否重叠时,返回该值。
  • 返回结果
    • 如果两个CIDR地址块不重叠,则返回0。
    • 如果两个CIDR地址块重叠在结束位置,则返回1。
    • 如果两个CIDR地址块重叠在开始位置,则返回-1。
  • 函数示例
    • 示例1:两个CIDR地址块不重叠。
      • 原始日志
        cidr1: 192.168.0.0/23
        cidr2: 192.168.2.0/24
      • 加工规则
        e_set("overlaps",ip_overlaps(v("cidr1"),v("cidr2")))
      • 加工结果
        cidr1: 192.168.0.0/23
        cidr2: 192.168.2.0/24
        overlaps: 0
    • 示例2:两个CIDR地址块在开始位置重叠。
      • 原始日志
        cidr1: 192.168.1.0/24
        cidr2: 192.168.0.0/23
      • 加工规则
        e_set("overlaps",ip_overlaps(v("cidr1"),v("cidr2")))
      • 加工结果
        cidr1: 192.168.1.0/24
        cidr2: 192.168.0.0/23
        overlaps: -1
    • 示例3:两个CIDR地址块在结束位置重叠。
      • 原始日志
        cidr1: 192.168.0.0/23
        cidr2: 192.168.1.0/24
      • 加工规则
        e_set("overlaps",ip_overlaps(v("cidr1"),v("cidr2")))
      • 加工结果
        cidr1: 192.168.0.0/23
        cidr2: 192.168.1.0/24
        overlaps: 1