云服务器内容精选

  • e_output、e_coutput 输出日志到指定的r日志流中,并可配置输出时tag信息。 函数格式 e_output(logsteam, tags=None) e_coutput(logstream, tags=None) 预览时不会输出日志到目标日志流中,而是输出到页面,供您调试。 参数说明 参数名称 参数类型 是否必填 说明 logstream String 否 需要输出日志流的代称,日志流代称在创建加工任务时配置目标日志流时指定。 tags Dict 否 为日志设置新的标签,以字典格式传入。 加工结果 e_output:输出日志到指定的日志流中,且对应的日志不再执行后面的加工规则。 e_coutput:输出日志到指定的日志流中,且对应的日志继续执行后面的加工规则。 函数示例 示例1:将k2满足正则表达式,输出到target2中。 测试数据 { "k1": "v1", "k2":"v2", "x1":"v3" , "x5": "v4" } 加工规则 此处e_drop()函数的作用是把e_if()函数过滤掉的数据做删除处理。如果不添加该函数,则被过滤的数据被投递到默认的存储目标中。创建任务时配置的第一条目标日志流为默认目标。 e_if(e_match("k2", r"\w+"), e_output("target2")) e_drop() 加工结果 { "k1": "v1", "k2": "v2", "x1": "v3", "x5": "v4" } 在结果预览处可以看到目标日志流代称变成了target2。 示例2:将k2满足正则表达式,输出到target2中,并设置tag。 测试数据 { "k1": "v1", "k2":"v2", "x1":"v3" , "x5": "v4" } 加工规则 e_if(e_match("k2", r"\w+"), e_output("target2", tags={"topic": "topic1"})) e_drop() 加工结果 { "k1": "v1", "__tag__": { "topic": "topic1" }, "k2": "v2", "x1": "v3", "x5": "v4" } 在结果预览处可以看到目标日志流代称变成了target2。 更多参考 支持和其他函数组合使用。
  • e_split 基于日志字段的值分裂出多条日志,并且支持通过JMES提取字段后再进行分裂。 函数格式 e_split(字段名, sep=',', quote='"', lstrip=true, jmes=None, output=None) 分裂规则: 如果配置了jmes参数,则将日志字段的值转化为JSON列表,并使用JMES提取值作为下一步的值。如果没有配置jmes参数,则将字段的值直接作为下一步的值。 如果上一步的值是一个列表或JSON列表格式的字符串,则按照此列表分裂并结束处理。否则使用sep、quote或lstrip将上一步的值进行 CS V解析,根据解析后的多个值进行分裂并结束处理。 参数说明 参数名称 参数类型 是否必填 说明 字段名 String 是 需要分裂的字段名。 sep String 否 用于分隔多个值的分隔符。 quote String 否 用于引用多个值的配对类字符的引用符。 lstrip String 否 是否将值左边的空格去掉,默认为true。 jmes String 否 将字段值转化为JSON对象,并使用JMES提取特定值,再进行分裂操作。 output String 否 设置一个新的字段名,默认覆盖旧字段名。 返回结果 返回日志列表,列表中字段的值都是源列表中的值。 函数示例 测试数据 { "__topic__": "", "age": 18, "content": 123, "name": "maki" } 加工规则 e_set("__topic__", "V_SENT,V_RECV,A_SENT,A_RECV") e_split("__topic__") 加工结果 [ { "__topic__": "V_SENT", "name": "maki", "age": 18, "content": 123 }, { "__topic__": "V_RECV", "name": "maki", "age": 18, "content": 123 }, { "__topic__": "A_SENT", "name": "maki", "age": 18, "content": 123 }, { "__topic__": "A_RECV", "name": "maki", "age": 18, "content": 123 } ] 更多参考 支持和其他函数组合使用。
  • e_drop 根据条件判断是否丢弃日志。 函数格式 e_drop(condition=true) 支持固定标识DROP,等价于e_drop()。 参数说明 参数名称 参数类型 是否必填 说明 condition Bool 否 默认为true,一般传递一个条件判断函数的结果。 返回结果 满足条件则丢弃日志并返回None,否则返回原日志。 函数示例 示例1:当__programe__字段的值为access时丢弃日志,否则保留该日志。 测试数据 [ { "__programe__": "access", "age": 18, "content": 123, "name": "maki" }, { "__programe__": "error", "age": 18, "content": 123, "name": "maki" } ] 加工规则 e_if(e_search("__programe__==access"), DROP) 加工结果 丢弃__programe__字段值为access的日志,保留__programe__字段的值为error的日志。 __programe__: error age: 18 content: 123 name: maki 示例2:条件判断结果为true,丢弃日志。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_drop(e_search("k1==v1")) 加工结果 因为k1==v1条件为true,因此丢弃该日志。 示例3:条件判断结果为false,保留日志。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_drop(e_search("not k1==v1")) 加工结果 k1: v1 k2: v2 k3: k1 示例4:不设置判断条件时,使用默认值true,丢弃日志。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_drop() 加工结果 丢弃日志。 更多参考 支持和其他函数组合使用。
  • 函数列表 类型 函数 说明 事件操作 e_drop 根据条件判断是否丢弃日志。支持和其他函数组合使用。 e_keep 根据条件判断是否保留日志。 e_keep函数和e_drop函数都会丢弃日志。e_keep函数在不满足条件时丢弃,而e_drop函数则是在满足条件时丢弃。 # 以下4个加工规则等价 e_if_else(e_search("f1==v1"), e_keep(), e_drop()) e_if_else(e_search("not f1==v1"), e_drop()) e_keep(e_search("f1==v1")) e_drop(e_search("not f1==v1")) # 以下加工规则无意义 e_if(e_search("..."), e_keep()) e_keep() 支持和其他函数组合使用。 事件分裂 e_split 基于日志字段的值分裂出多条日志,并且支持通过JMES提取字段后再进行分裂。支持和其他函数组合使用。 输出事件 e_output、e_coutput 输出日志到指定的日志流代称中(日志流代称在创建加工任务时配置目标日志流时指定),并可配置输出时的tag信息。 e_output:执行到e_output函数时,输出日志到指定的日志流中,且对应的日志不再执行后面的加工规则。 e_coutput:执行到e_coutput函数时,输出日志到指定的日志流中,且对应的日志继续执行后面的加工规则。 支持和其他函数组合使用。
  • e_keep 据条件判断是否保留日志。 函数格式 e_keep(condition=true) 支持固定标识KEEP,等价于e_keep()。 参数说明 参数名称 参数类型 是否必填 说明 condition Bool 否 默认为true,一般传递一个条件判断函数的结果。 返回结果 满足条件则返回原日志,不满足时丢弃日志。 函数示例 示例1:当__programe__字段的值是access的时候保留日志,否则丢弃日志。 测试数据 [ { "__programe__": "access" , "age": 18, "content": 123, "name": "maki" }, { "__programe__": "error" , "age": 18, "content": 123, "name": "maki" } ] 加工规则 e_keep(e_search("__programe__==access")) #等价于 e_if(e_search("not __programe__==access"), e_drop()) #等价于 e_if_else(e_search("__programe__==access"), e_keep(), e_drop()) 加工结果 保留__programe__字段值为access的日志。 __programe__: access age: 18 content: 123 name: maki 示例2:条件判断结果为true,保留日志。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_keep(e_search("k1==v1")) 加工结果 k1: v1 k2: v2 k3: k1 示例3:条件判断结果为false,丢弃日志。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_keep(e_search("not k1==v1")) 加工结果:丢弃日志。 示例4:判断条件为false。 测试数据 { "k1":"v1" , "k2": "v2", "k3": "k1" } 加工规则 e_keep(false) 加工结果:丢弃日志。 更多参考 支持和其他函数组合使用。
  • e_search_table_map 对某列(查询字符串)以及其匹配的值的表格数据进行映射。 函数格式 e_search_table_map(data, inpt, output_fields, multi_match=false, multi_join=" ", missing=None, mode="fill-auto") 参数说明 参数名称 数据类型 是否必填 说明 data Table 是 映射关系的表格,表格某一列必须是查询字符串。 inpt String 是 表格中用于匹配搜索的字段名。 output_fields String,String List或Tuple List 是 表格中映射出的字段,可以是字符串、列表或者其名称映射元组的列表。 multi_match Boolean 否 是否允许匹配多个字段。默认为false表示不匹配多个字段,会返回匹配到的第一个字段值。支持使用multi_join来拼接多个匹配的值。 multi_join String 否 匹配多个字段时,多值的连接字符串,默认为空格。当multi_match值为true时生效。 missing String 否 无匹配字段时,将该参数的取值赋给输出字段output_fields。默认为None表示不做映射赋值操作。 说明: 如果表格中包含默认匹配*,由于*的优先级高于missing,此时missing将不起作用。 mode String 否 字段的覆盖模式。默认为fill-auto。 返回结果 返回查询匹配中后的映射结果。 函数示例 示例1:根据映射关系的表格,将日志中city字段映射出pop和province字段。 测试数据 { "data": 123, "city": "sh" } 例如,以下映射关系的表格,其中search列是查询字符串。 search pop province city==nj 800 js city==sh 2000 sh 加工规则 e_search_table_map( tab_parse_csv("search,pop,province\ncity==nj,800,js\ncity==sh,2000,sh"), "search", ["pop", "province"], ) 加工结果 data: 123 city: sh province: sh pop: 2000 示例2:overwrite模式。 测试数据 { "data": 123, "city": "nj", "province":"" } 加工规则 e_search_table_map( tab_parse_csv("search,pop,province\ncity==nj,800,js\ncity==sh,2000,sh"), "search", "province", mode="overwrite", ) 加工结果 pop: 800 data: 123 city: nj province: js 示例3:无匹配时目标字段的值由missing指定。 测试数据 { "data": 123, "city": "wh", "province":"" } 加工规则 e_search_table_map( tab_parse_csv("search,pop,province\ncity==nj,800,\ncity==sh,2000,sh"), "search", "province", missing="Unknown", ) 加工结果 data: 123 city: wh province: Unknown 示例4:允许匹配多个字段(multi_match模式)。 测试数据 { "data": 123, "city": "nj,sh", "province":"" } 加工规则 e_search_table_map( tab_parse_csv("search,pop,province\ncity:nj,800,js\ncity:sh,2000,sh"), "search", "province", multi_match=true, multi_join=",", ) 加工结果 data: 123 city: nj,sh province: js,sh
  • e_search_dict_map 对关键字(查询字符串)以及其匹配的值的字典数据进行映射。 函数格式 e_search_dict_map(data, output_field, multi_match=false, multi_join=" ", missing=None, mode="overwrite") 参数说明 参数名称 数据类型 是否必填 说明 data Dict 是 映射关系的字典。必须为标准的{key01:value01,key01:value02,...}格式,且关键字key必须是查询字符串。 output_field String 是 输出字段的名称。 multi_match Boolean 否 是否允许匹配多个字段。默认为false表示不匹配多个字段,会返回匹配到的最后一个字段值。支持使用multi_join拼接多个匹配的值。 multi_join String 否 匹配多个字段时,多值的连接字符串,默认为空格。当multi_match值为true时生效。 missing String 否 无匹配字段时,将该参数的取值赋给输出字段output_field。默认为None表示不做映射赋值操作。 说明: 如果字典中包含默认匹配星号(*),由于星号(*)的优先级高于missing,此时missing将不起作用。 mode String 否 字段的覆盖模式。默认为overwrite。 返回结果 返回查询匹配中后的映射结果。 函数示例 示例1:匹配模式。 测试数据 { "data":123 , "pro":1 } 加工规则 e_search_dict_map ({"pro==1": "TCP", "pro==2": "UDP", "pro==3": "HTTP"}, "protocol") 加工结果 data:123 pro:1 protocol:TCP 示例2:根据字段值的不同开头进行映射。 测试数据 { "status":"200,300" } 加工规则 e_search_dict_map( { "status:2??": "ok", "status:3??": "redirect", "status:4??": "auth", "status:5??": "server_error", }, "status_desc", multi_match=true, multi_join="测试", ) 加工结果 status:200,300 status_desc:ok测试redirect 更多参考 支持和其他函数组合使用。
  • e_table_map 与目标表格进行映射,根据输入的字段名称返回字段值。 函数格式 e_table_map(data, field, output_fields, missing=None, mode="fill-auto") 参数说明 参数名称 数据类型 是否必填 说明 data Table 是 目标表格。 field String、String List或Tuple List 是 日志中映射到表格的源字段。如果日志中不存在对应字段,则不进行任何操作。 output_fields String、String List或Tuple List 是 映射后的字段。例如["province", "pop"]。 missing String 否 无匹配字段时,将该参数的取值赋给输出字段output_fields。默认为None表示不做映射赋值操作。如果目标字段是多列,则missing可以是一个长度与目标字段数一致的默认值列表。 说明 如果表格中包含匹配星号(*),由于星号(*)的优先级高于missing,此时missing参数将不起作用。 mode String 否 字段的覆盖模式。默认为fill-auto。 返回结果 返回附带新字段值的日志。 函数示例 示例1:在映射表格中查找对应行,根据city字段返回province字段的值。 测试数据 { "data": 123, "city": "nj" } 加工规则 e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), "city", "province" ) 加工结果 data: 123 city: nj province: js 示例2:在映射表格中查找对应行,根据city字段返回province字段和pop字段的值。 测试数据 { "data": 123, "city": "nj" } 加工规则 e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), "city", ["province", "pop"], ) 加工结果 data: 123 city: nj province: js pop: 800 示例3:使用tab_parse_csv函数构建映射表格,根据city字段返回province字段和pop字段的值。 测试数据 { "data": 123, "city": "nj" } 加工规则 e_table_map( tab_parse_csv("city#pop#province\nnj#800#js\nsh#2000#sh", sep="#"), "city", ["province", "pop"], ) 加工结果 data: 123 city: nj province: js pop: 800 示例4:使用tab_parse_csv函数构建映射表格,根据city字段返回province字段和pop字段的值。 测试数据 { "data": 123, "city": "nj" } 加工规则 e_table_map( tab_parse_csv( "city,pop,province\n|nj|,|800|,|js|\n|shang hai|,2000,|SHANG,HAI|", quote="|" ), "city", ["province", "pop"], ) 加工结果 data: 123 city: nj province: js pop: 800 示例5:日志匹配字段与映射表格中字段不一样。在映射表格中查找对应行,根据cty或city字段返回province字段的值。 测试数据 { "data": 123, "city": "nj" } 加工规则 e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("city", "city")], "province" ) 加工结果 data: 123 city: nj province: js 示例6:日志匹配字段与映射表格中字段不一样,并且对输出字段进行重命名。 测试数据 { "data": 123, "city": "nj" } 加工规则 e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("city", "city")], [("province", "pro")], ) 加工结果 data: 123 city: nj pro: js 示例7:多个日志匹配字段。 测试数据 { "data": 123, "city": "nj", "pop": 800 } 加工规则 e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), ["city", "pop"], "province", ) 加工结果 data: 123 city: nj pop: 800 province: js 示例8:多个日志匹配字段,且日志匹配字段与映射表格字段不一样。 测试数据 { "data": 123, "city": "nj", "pp": 800 } 加工规则 e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("city", "city"), ("pp", "pop")], "province", ) 加工结果 data: 123 city: nj pp: 800 province: js 更多参考 支持和其他函数组合使用。
  • e_dict_map 与目标数据字典进行映射,根据输入的字段映射一个新字段。 函数格式 e_dict_map(data, field, output_field, case_insensitive=true, missing=None, mode="overwrite") 参数说明 参数名称 数据类型 是否必填 说明 data Dict 是 目标数据字典。必须为标准的{key01:value01,key01:value02,...}格式,且必须是字符串。例如{"1": "TCP", "2": "UDP", "3": "HTTP", "*": "Unknown"}。 field String或者String List 是 一个字段名或者多个字段名的列表。多个字段时: 依次对匹配到的值进行映射。 如果匹配命中多条日志,且mode的取值为overwrite时,则最后一个会覆盖前面的结果。 当没有匹配到任何字段,则使用missing参数的值作为匹配值。 output_field String 是 输出字段的名称。 case_insensitive Boolean 否 匹配时大小写是否不敏感。 true(默认值):不敏感。 false:敏感 说明: 如果字典中存在同一个关键字的不同大小写,且case_insensitive为true时,会优先选择大小写完全匹配的值。如果没有,则随机选择一个。 missing String 否 无匹配字段时,将该参数的取值赋给输出字段output_field。默认为None表示不做映射赋值操作。 说明: 如果字典中包含匹配星号(*),由于星号(*)的优先级高于missing,此时missing参数不生效。 mode String 否 字段的覆盖模式。默认为overwrite。 取值为:fill,fill-auto,add,add-auto,overwrite,overwrite-auto 返回结果 返回附带新字段的日志。 函数示例 示例1:根据测试数据中pro字段的值和目标数据字典,输出新字段protocol。 测试数据 { "data": 123, "pro": 1 } 加工规则 e_dict_map( {"1": "TCP", "2": "UDP", "3": "HTTP", "6": "HTTPS", "*": "Unknown"}, "pro", "protocol", ) 加工结果 data: 123 pro: 1 protocol: TCP 示例2:根据测试数据中status字段的值和目标数据字典,输出新字段message。 测试数据(三条测试日志) { "status":"500" } { "status":"400" } { "status":"200" } 加工规则 e_dict_map({"400": "错误", "200": "正常", "*": "其他"}, "status", "message") 加工结果 status: 500 message: 其他 status: 400 message: 错误 status: 200 message: 正常 更多参考 支持和其他函数组合使用。
  • 函数列表 类型 函数 说明 字段映射 e_dict_map 与目标数据字典进行映射,根据输入的字段映射一个新字段。支持和其他函数组合使用。 e_table_map 与目标表格进行映射,根据输入的字段名称返回字段值。支持和其他函数组合使用。 搜索映射 e_search_dict_map 对关键字(查询字符串)以及其匹配的值的字典数据进行映射。支持和其他函数组合使用。 e_search_table_map 对某列(查询字符串)以及其匹配的值的表格数据进行映射。