华为云用户手册

  • e_drop_fields 调用e_drop_fields函数删除符合条件的日志字段。 函数格式 e_drop_fields(key1, key2, ....,regex=false) 参数说明 参数 参数类型 是否必填 说明 key String 是 日志字段名,可以为正则表达式。当字段名完全满足条件时删除该字段,保留不满足条件的字段。关于正则表达式的更多信息,请参见正则表达式。至少需要配置一个日志字段。 regex Boolean 否 如果设置为false,表示不使用正则表达式进行匹配。当不配置该参数时,系统默认取值为true。 返回结果 返回删除后的日志。 函数示例 如果content字段的值为123,则删除content字段和age字段。 测试数据 { "age": 18, "content": 123, "name": "twiss" } 加工规则 e_if(e_search("content==123"), e_drop_fields("content", "age",regex=true)) 加工结果 name: twiss 更多参考 支持其他它函数组合使用。
  • 函数列表 函数 说明 V 获得日志特定字段的值。当同时传入多个字段名时,返回日志中第一个存在的字段的值。支持和其他函数组合使用。 e_set 添加新字段或为现有字段设置新的字段值。支持和其他函数组合使用。 e_drop_fields 删除符合条件的日志字段。支持和其他函数组合使用。 e_keep_fields 保留符合条件的日志字段。 e_pack_fields 打包日志字段,并输出到新的字段中。 e_rename 重命名符合条件的日志字段名称。支持和其他函数组合使用。
  • V 调用v函数获得日志特定字段的值。当同时传入多个字段名时,返回日志中第一个存在的字段的值。 函数格式 v(key, ..., default=None) 参数说明 参数 参数类型 是否必填 说明 key String 是 指定字段名。 default 任意 否 指定的字段名不存在时,返回default的值。默认值为None。 返回结果 返回日志中第一个存在的字段值。不存在时返回default参数的值。 函数示例 将content字段的值赋给test_content字段。 测试数据 { "content": "hello" } 加工规则 e_set("test_content", v("content")) 加工结果 content: hello test_content: hello 更多参考 支持和其他函数组合使用。
  • e_set 调用e_set函数添加新字段或为现有字段设置新的字段值。 函数格式 e_set(key1, value1, key2, value2, mode="overwrite") 函数中key1和value1必须成对出现。 通过e_set函数设置时间字段F_TIME或__time__时,必须设置为数字、字符串。 e_set(F_TIME, "abc") # 错误 e_set(F_TIME, "12345678") # 正确 参数说明 参数 参数类型 是否必填 说明 key String 是 目标字段名,也可以通过字符串表达式获得该字段名。 value 任意 是 新的字段值。非字符串都转化成字符串放入日志中,其中元组、列表、字典会转换成JSON对象的字符串。 说明 如果传递的值是None,则不会进行更新操作。 mode String 否 字段的覆盖模式。默认为overwrite。 返回结果 返回更新后的日志。 函数示例 示例1:为字段设置固定值。 添加一个新字段city,字段值为上海。 e_set("city", "上海") 示例2:复制字段值。 调用单个表达式函数,将现有字段ret的值,赋给新字段result。 原始数据 {"ret": "value"} 加工规则 e_set("result", v("ret")) 加工结果 ret:value result:value 示例3:动态设置值。 调用组合表达式函数,获取第一个存在的字段值,返回其小写格式并赋值给字段result。 e_set("result", str_lower(v("ret", "return"))) 示例4:多次设置字段值。 原始数据 { "ret" : "fail" } 加工规则 e_set("event_type", "login event", "event_info", "login host") 加工结果 ret: fail event_type: login event event_info: login host 更多参考 支持和其他函数组合使用。
  • e_keep_fields 调用e_keep_fields函数保留符合条件的日志字段。 日志服务中包含内置的元字段,例如__time__、__topic__等。如果在调用e_keep_fields函数时没有保留__time__字段,则日志时间将被重置为系统当前时间。如果您不希望重置元字段的值,需要将元字段放入列表中,常见格式为F_TIME, F_META, F_TAGS, "f1", "f2"。 函数格式 e_keep_fields(key1, key2, ....,regex=false) 参数说明 参数 参数类型 是否必填 说明 key String 是 日志字段名,可以为正则表达式。当字段名完全满足条件时保留该字段,删除不满足条件的字段。至少需要配置一个字段。 regex Boolean 否 如果设置为false,表示不使用正则表达式进行匹配。当不配置该参数时,系统默认取值为true。 返回结果 返回保留的日志。 函数示例 如果content字段的值是123,则保留content和age字段。 测试数据 { "age": 18, "content": 123, "name": "twiss" } 加工规则 e_if(e_search("content==123"), e_keep_fields("content", "age")) 加工结果 age: 18 content: 123
  • str_uuid 随机生成UUID。 函数格式 str_uuid(lower=true) 参数说明 参数名称 参数类型 是否必填 说明 lower Boolean 否 生成的UUID中的字母是否是小写。默认为true表示小写。 返回结果 true/false。 函数示例 测试数据:无 加工规则 e_set("UUID", str_uuid()) 加工结果 UUID: 1acf7e1d-5a6b-4267-b7c1-874c8b70745d
  • str_isupper 判断字符串中所有的字母是否都为大写。 函数格式 str_isupper(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被检测的字符串。 返回结果 true/false。 函数示例 测试数据 { "key":"LTS" } 加工规则 e_set("str_isupper", str_istitle(v("key"))) 加工结果 key: LTS str_isupper: true
  • str_istitle 判断字符串中所有单词的拼写首字母是否为大写,且其他字母为小写。 函数格式 str_istitle(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被检测的字符串。 返回结果 true/false。 函数示例 测试数据 { "key":"Lts Is A Log Service" } 加工规则 e_set("str_istitle", str_istitle(v("key"))) 加工结果 key: Lts Is A Log Service str_istitle: true
  • str_isdigit 判断字符串是否仅由数字组成。 函数格式 str_isdigit(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被检测的字符串。 返回结果 true/false。 函数示例 测试数据 { "value": "111" } 加工规则 e_set("str_isdigit", str_isdigit(v("value"))) 加工结果 value: 111 str_isdigit: true
  • str_islower 判断字符串是否由小写字母组成。 函数格式 str_islower(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被检测的字符串。 返回结果 true/false。 函数示例 测试数据 { "key": "lower" } 加工规则 e_set("str_islower", str_islower(v("key"))) 加工结果 key: lower str_islower: true
  • str_isprintable 判断字符串中是否所有字符都是可打印字符。 函数格式 str_isprintable(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被检测的字符串。 返回结果 true/false。 函数示例 测试数据 { "key": "@#11!" } 加工规则 e_set("str_isprintable", str_isprintable(v("key"))) 加工结果 key: @#11! str_isprintable: true
  • str_isspace 判断字符串是否仅由空格字符组成。 函数格式 str_isspace(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被检测的字符串。 返回结果 true/false。 函数示例 测试数据 { "key": "@#11!" } 加工规则 e_set("str_isspace", str_isspace(v("key"))) 加工结果 key: @#11! str_isspace: truefalse
  • str_isdecimal 判断字符串是否仅包含十进制字符。 函数格式 str_isdecimal(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被检测的字符串。 返回结果 true/false。 函数示例 测试数据 { "value": "111" } 加工规则 e_set("str_isdecimal", str_isdecimal(v("value"))) 加工结果 value: 111 str_isdecimal: true
  • str_isidentifier 字符串是否是有效的Python标识符,也可以用来判断变量名是否合法。 函数格式 str_isidentifier(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被检测的字符串。 返回结果 true/false。 函数示例 测试数据 { "key": "int" } 加工规则 e_set("str_isidentifier", str_isidentifier(v("key"))) 加工结果 key: int str_isidentifier: true
  • str_isnumeric 判断字符串是否由数字组成。 函数格式 str_isnumeric(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被检测的字符串。 返回结果 true/false。 函数示例 测试数据 { "key": "123W" } 加工规则 e_set("str_isnumeric", str_isnumeric(v("key"))) 加工结果 key: 123W str_isnumeric: false
  • str_isalpha 判断字符串是否仅由字母组成。 函数格式 str_isalpha(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被检测的字符串 返回结果 true/false。 函数示例 测试数据 { "value": "ltsv5" } 加工规则 e_set("str_isalpha", str_isalpha(v("value"))) 加工结果 value: ltsv5 str_isalpha: false
  • str_isalnum 判断字符串是否仅由字母和数字组成。 函数格式 str_isalnum(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被检测的字符串。 返回结果 true/false。 函数示例 测试数据 { "value": "ltsv5" } 加工规则 e_set("str_isalnum", str_isalnum(v("value"))) 加工结果 value: ltsv5 str_isalnum: true
  • str_isascii 判断字符串是否在ASCII中。 函数格式 str_isascii(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被检测的字符串。 返回结果 true/false。 函数示例 测试数据 { "value": "{ltsv5}#@" } 加工规则 e_set("str_isascii", str_isascii(v("value"))) 加工结果 value: {ltsv5}#@ str_isascii: true
  • res_local 使用res_local函数从当前数据加工任务中拉取高级参数配置信息。支持和其他函数组合使用。 函数格式 res_local(param, default=None, type="auto") 参数说明 参数名称 数据类型 是否必填 说明 param String 是 对应高级参数配置中的Key。 default String 否 当param参数的值不存在时,返回该参数的值,默认值为None。 type String 否 数据输出时的数据格式。 auto(默认值):将原始值转化为JSON格式。如果转换失败则返回原始值。 JSON:将原始值转化为JSON格式。如果转换失败则返回default参数的值。 raw:返回原始值。 返回结果 根据参数配置,返回JSON格式数据或者原始值。 表1 成功示例 原始值 返回值 返回值类型 1 1 整数 1.2 1.2 浮点 true true 布尔 false false 布尔 "123" 123 字符串 null None None ["v1", "v2", "v3"] ["v1", "v2", "v3"] 列表 ["v1", 3, 4.0] ["v1", 3, 4.0] 列表 {"v1": 100, "v2": "good"} {"v1": 100, "v2": "good"} 字典 {"v1": {"v11": 100, "v2": 200}, "v3": "good"} {"v1": {"v11": 100, "v2": 200}, "v3": "good"} 字典 表2 失败示例 原始值 返回值 说明 (1,2,3) "(1,2,3)" 不支持元组,需使用列表形式。 true "true" 只支持true、false(小写)这两种布尔类型。 {1: 2, 3: 4} "{1: 2, 3: 4}" 字典的关键字只能是字符串。 函数示例 从高级参数配置中获取信息并赋值给local。高级参数配置中的Key为endpoint,Value为hangzhou。 测试数据 { "content": "1" } 加工规则 e_set("local", res_local('endpoint')) 加工结果 content: 1 local: hangzhou
  • res_obs_file 使用res_obs_file函数从OBS Bucket中获取文件内容,并支持定期刷新。支持和其他函数组合使用。 建议日志服务Project和OBS Bucket处于同一地域,使用华为云内网获取数据。 函数格式 res_obs_file(endpoint,bucket,file) 参数说明 参数名称 数据类型 是否必填 说明 endpoint String 是 OBS中保存的文件地址。如obs.cn-north-4.huawei.com bucket String 是 OBS中使用的桶名,如lts-dsl。 file String 是 目标OBS文件的路径。例如test/data.txt,不能以正斜线(/)开头。 返回结果 返回字节流形式或文本形式的文件数据。 函数示例 示例1:从OBS中拉取JSON格式的数据。 JSON内容 { "users": [ { "name": "user1", "login_historys": [ { "date": "2019-10-10 0:0:0", "login_ip": "203.0.113.10" }, { "date": "2019-10-10 1:0:0", "login_ip": "203.0.113.10" } ] }, { "name": "user2", "login_historys": [ { "date": "2019-10-11 0:0:0", "login_ip": "203.0.113.20" }, { "date": "2019-10-11 1:0:0", "login_ip": "203.0.113.30" }, { "date": "2019-10-11 1:1:0", "login_ip": "203.0.113.50" } ] } ] } 测试数据 { "content":"123" } 加工规则 e_set( "json_parse", json_parse( res_obs_file( "https://obs.cn-north-7.ulanqab.huawei.com", "lts-dsl", "als_dsl.json" ) ), ) 加工结果 content: 123 json_parse: '{ "users": [ { "name": "user1", "login_historys": [ { "date": "2019-10-10 0:0:0", "login_ip": "203.0.113.10" }, { "date": "2019-10-10 1:0:0", "login_ip": "203.0.113.10" } ] }, { "name": "user2", "login_historys": [ { "date": "2019-10-11 0:0:0", "login_ip": "203.0.113.20" }, { "date": "2019-10-11 1:0:0", "login_ip": "203.0.113.30" }, { "date": "2019-10-11 1:1:0", "login_ip": "203.0.113.50" } ] } ] }' 示例2:从OBS中拉取文本内容。 文本内容 Test bytes 测试数据 { "content": "123" } 加工规则 e_set( "test_txt", res_obs_file( "https://obs.cn-north-7.ulanqab.huawei.com", "lts-dsl", "als_dsl.json" ) ) 加工结果 content: 123 test_txt: Test bytes
  • op_min 计算多个字段或表达式表示的数值的最小值。 函数格式 op_min(value1, value2, ...) 参数说明 参数名称 参数类型 是否必填 说明 value1 任意 是 运算值1。 value2 必须与值1一样 是 运算值2。 返回结果 返回多个数值中的最小值。 函数示例 测试数据 { "price_orange": 2, "priority_apple": 13 } 加工规则 e_set("op_min", op_min(ct_int(v("price_orange")),ct_int(v("priority_apple")))) 加工结果 price_orange: 2 priority_apple: 13 op_min: 2
  • op_in 判断字符串、元组、列表或字典中是否包含特定元素,返回true或false。 函数格式 op_in(value1, value2) 参数说明 参数名称 参数类型 是否必填 说明 value1 字符串、元组、列表或字典等 是 字符串、元组、列表或者字典等。 value2 任意 是 判断的元素。 说明 函数中字符串、元组、列表或字典参数在前,元素在后。 返回结果 如果字符串、元组、列表或字典a中包含元素b返回true,否则返回false。 函数示例 测试数据 { "list": [1, 3, 2, 7, 4, 6], "num2": 2 } 加工规则 e_set("op_in",op_in(v("list"),v("num2"))) 加工结果 list: [1, 3, 2, 7, 4, 6] num2: 2 op_in: true
  • op_slice 对指定字符串、数组、元组进行截取。 函数格式 op_slice(value, start=0, end=None, step=None) 参数说明 参数名称 参数类型 是否必填 说明 value String 是 函数要切片的值。 start Num 否 截取的起始位置,默认为位置0。 end Num 否 截取的结束位置,不包含该位置,默认为字符串结尾位置。 step Num 否 每次截取的长度。 返回结果 返回提取后的字符串。 函数示例 示例1:对word字段从起点开始进行截取,结尾为2。 测试数据 { "word": "I,love,this,world" } 加工规则 e_set("op_slice",op_slice(v("word"),2)) 加工结果 word: I,love,this,world op_slice: I, 示例2:对word字段从位置2到位置9进行截取,步长为1。 测试数据 { "word": "I,love,this,world" } 加工规则 e_set("op_slice",op_slice(v("word"),2,9,1)) 加工结果 word: I,love,this,world op_slice: love,th
  • op_add 计算多个值的和,可以是字符串或者数字等。 函数格式 op_add(value1, value2, ...) 参数说明 参数名称 参数类型 是否必填 说明 value1 字符串、元组、列表或字典等 是 运算值1。 value2 必须与值1一样 是 运算值2。 返回结果 返回求和操作后的数值。 函数示例 示例1:计算price_orange和price_apple总金额。 测试数据 { "price_orange": 2, "price_apple": 13 } 加工规则 e_set("account",op_add(ct_int(v("price_orange")),ct_int(v("price_apple")))) 加工结果 price_orange: 2, price_apple: 13, account: 15 示例2:统计bytes_in和bytes_out的和。 测试数据 { "bytes_in": 214, "bytes_out": 123 } 加工规则 e_set("total_bytes", op_add(ct_int(v("bytes_in")), ct_int(v("bytes_out")))) 加工结果 bytes_in: 214 bytes_out: 123 total_bytes: 337 示例3:给网址添加HTTPS头。 测试数据 { "host": "xx.com" } 加工规则 e_set("website", op_add("https://", v("host"))) 加工结果 host: xx.com website: https://xx.com
  • op_not_in 判断字符串、元组、列表或字典中是否不包含特定元素,返回true或false。 函数格式 op_not_in(value1, value2) 参数说明 参数名称 参数类型 是否必填 说明 value1 字符串、元组、列表或字典等 是 字符串、元组、列表或者字典等。 value2 任意 是 判断的元素。 说明 函数中字符串、元组、列表或字典参数在前,元素在后。 返回结果 如果字符串、元组、列表或字典中不包含元素返回true,否则返回false。 函数示例 测试数据 { "list": [1, 3, 2, 7, 4, 6], "num2": 12 } 加工规则 e_set("op_not_in",op_not_in(v("list"),v("num2"))) 加工结果 list: [1, 3, 2, 7, 4, 6] num2: 12 op_not_in: true
  • op_index 根据字符串、数组、元组的下标返回其对应的元素。 函数格式 op_index(value, index) 参数说明 参数名称 参数类型 是否必填 说明 value String 是 字符串、数组、元组等。 index Num 否 需要传入的字符串、数组或元组的下标。 返回结果 返回下标对应的元素。 函数示例 示例1:返回word字段下标为0的元素。 测试数据 { "word": "I,love,this,world" } 加工规则 e_set("op_index",op_index(v("word"),0)) 加工结果 word: I,love,this,world op_index: I 示例2:返回word字段下标为3的元素。 测试数据 { "word": "I,love,this,world" } 加工规则 e_set("op_index",op_index(v("word"),3)) 加工结果 word: I,love,this,world op_index: o
  • op_max 计算多个字段或表达式表示的数值的最大值。 函数格式 op_max(value1, value2, ...) 参数说明 参数名称 参数类型 是否必填 说明 value1 任意 是 运算值1。 value2 必须与值1一样 是 运算值2。 返回结果 返回多个数值中的最大值。 函数示例 测试数据 { "price_orange": 2, "priority_apple": 13 } 加工规则 e_set("max_price", op_max(ct_int(v("price_orange")),ct_int(v("priority_apple")))) 加工结果 price_orange: 2 priority_apple: 13 max_price: 13
  • op_eq 按照a==b条件进行计算,返回true或false。 函数格式 op_eq(value1, value2) 参数说明 参数名称 参数类型 是否必填 说明 value1 任意 是 运算值1。 value2 必须与值1相同 是 运算值2。 返回结果 如果值1与值2相等返回true,否则返回false。 函数示例 示例1: 测试数据 { "content": "hello", "ctx": "hello" } 加工规则 e_set("test_eq", op_eq(v("content"),v("ctx"))) 加工结果 content: hello ctx: hello test_eq: true 示例2: 测试数据 { "content": "hello", "ctx": "ctx" } 加工规则 e_set("test_eq", op_eq(v("content"),v("ctx"))) 加工结果 content: hello ctx: ctx test_eq: false
  • op_ne 按照a!=b条件进行计算,返回true或false。 函数格式 op_ne(value1, value2) 参数说明 参数名称 参数类型 是否必填 说明 value1 任意 是 运算值1。 value2 必须与值1相同 是 运算值2。 返回结果 如果值1不等于值2返回true,否则返回false。 函数示例 示例1: 测试数据 { "priority": 16, "price": 14 } 加工规则 e_set("op_ne",op_ne(ct_int(v("priority")),ct_int(v("price")))) 加工结果 priority: 16 price: 14 op_ne: true 示例2: 测试数据 { "priority": 14, "price": 14 } 加工规则 e_set("op_ne",op_ne(ct_int(v("priority")),ct_int(v("price")))) 加工结果 priority: 14 price: 14 op_ne: false
  • op_len 计算文本字符串中的字符数,可用于字符串和其他返回元组、列表、字典的表达式。 函数格式 op_len(value) 参数说明 参数名称 参数类型 是否必填 说明 value 字符串、元组、列表或字典等 是 运算值。 返回结果 返回字段的长度。 函数示例 测试数据 { "content": "I,love,this,world" } 加工规则 e_set("op_len",op_len(v("content"))) 加工结果 content: I,love,this,world op_len: 17
共100000条