事件操作函数
本文介绍事件操作函数的语法规则,包括参数解释、函数示例等。
函数列表
类型 |
函数 |
说明 |
---|---|---|
事件操作 |
根据条件判断是否丢弃日志。支持和其他函数组合使用。 |
|
根据条件判断是否保留日志。 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() 支持和其他函数组合使用。 |
||
事件分裂 |
基于日志字段的值分裂出多条日志,并且支持通过JMES提取字段后再进行分裂。支持和其他函数组合使用。 |
|
输出事件 |
输出日志到指定的日志流代称中(日志流代称在创建加工任务时配置目标日志流时指定),并可配置输出时的tag信息。
支持和其他函数组合使用。 |
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()
- 加工结果
丢弃日志。
- 测试数据
- 示例1:当__programe__字段的值为access时丢弃日志,否则保留该日志。
- 更多参考
支持和其他函数组合使用。
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)
- 加工结果:丢弃日志。
- 测试数据
- 示例1:当__programe__字段的值是access的时候保留日志,否则丢弃日志。
- 更多参考
支持和其他函数组合使用。
e_split
基于日志字段的值分裂出多条日志,并且支持通过JMES提取字段后再进行分裂。
- 函数格式
e_split(字段名, sep=',', quote='"', lstrip=true, jmes=None, output=None)
分裂规则:
- 如果配置了jmes参数,则将日志字段的值转化为JSON列表,并使用JMES提取值作为下一步的值。如果没有配置jmes参数,则将字段的值直接作为下一步的值。
- 如果上一步的值是一个列表或JSON列表格式的字符串,则按照此列表分裂并结束处理。否则使用sep、quote或lstrip将上一步的值进行CSV解析,根据解析后的多个值进行分裂并结束处理。
- 参数说明
参数名称
参数类型
是否必填
说明
字段名
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_output、e_coutput
输出日志到指定的日志流中,并可配置输出时tag信息。
- 函数格式
e_output(logsteam, tags=None) e_coutput(logstream, tags=None)
预览时不会输出日志到目标日志流中,而是输出到页面,供您调试。
- 参数说明
参数名称
参数类型
是否必填
说明
logstream
String
否
需要输出日志流的代称,日志流代称在创建加工任务时配置目标日志流时指定。
tags
Dict
否
为日志设置新的标签,以字典格式传入。
加工结果- e_output:输出日志到指定的日志流中,且对应的日志不再执行后面的加工规则。
- e_coutput:输出日志到指定的日志流中,且对应的日志继续执行后面的加工规则。
- 函数示例
- 示例1:将k2满足正则表达式,输出到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。
- 测试数据
- 更多参考
支持和其他函数组合使用。