日志服务 函数总览

日志服务(Cloud Log Service,CLS)数据加工函数可以自由组合,来完成日志的清洗、结构化、过滤、分发、脱敏等场景。

相关产品
日志服务 产品页,含版本规格、价格与购买入口。

一、键值提取函数类

从日志文本中提取字段/字段值。

函数名称 函数功能 函数语法描述 返回值类型
ext_sep 基于分隔符提取字段值内容 ext_sep("源字段名", "目标字段1,目标字段2,目标字段…", sep="分隔符", quote="不参与分割的部分", restrict=False, mode="overwrite") 返回提取后的日志(LOG)
ext_sepstr 基于指定字符(串)提取字段值内容 ext_sepstr("源字段名","目标字段1,目标字段2,目标字段…", sep="abc", restrict=False, mode="overwrite") 返回提取后的日志(LOG)
ext_json 提取 JSON 字符串格式的字段值 返回提取后的日志(LOG) ext_json("源字段名",prefix="",suffix="",format="full",exclude_node="不平铺的 JSON 节点") 返回提取后的日志(LOG)
ext_json_jmes 使用 Jmes 表达式提取字段值 ext_json_jmes(“源字段名”, jmes= "提取 JSON 的公式", output="目标字段", ignore_null=True, mode="overwrite") 返回提取后的日志(LOG)
ext_kv 基于两级分割符提取字段值 ext_kv("源字段名", pair_sep=r"\\s", kv_sep="=", prefix="", suffix="", mode="fill-auto") 返回提取后的日志(LOG)
ext_regex 基于正则表达式提取字段值 ext_regex(“源字段名”, regex="正则表达式", output=“目标字段1,目标字段2,目标字段…….”, mode="overwrite") 返回提取后的日志(LOG)
ext_first_notnull 返回参数中第一个非 null 且非空字符的结果值 ext_first_notnull(值1, 值2, …) 返回参数中第一个非 null 结果值
ext_grok 基于 grok 语法提取匹配结果值 ext_grok(字段值, grok="", extend="") 返回提取后的日志(LOG)

二、富化函数类

在已有字段的基础上,根据规则新增字段。

函数名称 函数功能 函数语法描述 返回值类型
enrich_table 使用 csv 结构数据对日志中的字段进行匹配。当值相同时,可以将 csv 中的其他字段和值,添加到源日志中 enrich_table(“csv 源数据”, “csv 富化字段”, output=“目标字段1,目标字段2,目标字段….”, mode="overwrite") 返回映射后的日志(LOG)
enrich_dict 使用 Dict 结构对日志中的字段值进行匹配。当指定的字段的值和 Dict 中的 Key 相同时,将此 Key 对应的 Value 赋值给日志中的另一字段 enrich_dict(“JSON 字典”, "源字段名", output=目标字段, mode="overwrite") 返回映射后的日志(LOG)
t_table_map 与目标表格进行映射,根据输入的字段名称返回字段值,可简单理解为日志和维度表关联。 t_table_map(data, field, output_fields, missing=None, mode="fill-auto") 返回映射后的日志(LOG)

三、流程控制函数类

由于条件判断。

函数名称 函数功能 函数语法描述 返回值类型
compose 组合操作函数,类似于分支代码块的组合能力,可以组合多个操作函数,并按顺序执行,可以结合分支、输出函数使用 compose("函数1","函数2", …) 返回日志(LOG)
t_if 对符合条件的日志,进行相应的函数处理,否则不进行任何处理 t_if("条件", 函数) 返回日志(LOG)
t_if_not 对不符合条件的日志,进行相应的函数处理,否则不进行任何处理 t_if_not("条件",函数) 返回日志(LOG)
t_if_else 基于条件判断,分别进行不同的函数处理 t_if_else("条件", 函数1, 函数2) 返回日志(LOG)
t_switch 基于多分支条件,分别进行不同的函数处理,如果存在不符合所有条件的数据,将被丢弃 t_switch("条件1", 函数1, "条件2", 函数2, …) 返回日志(LOG)

四、行处理函数类

用于日志的分发、丢弃、拆分。

函数名称 函数功能 函数语法描述 返回值类型
log_output 输出到指定的目标主题。可以配合分支条件使用,也可以单独使用 log_output(日志主题别名),该参数在新建数据加工任务时,目标日志主题别名处配置 无返回,对目前的数据流进行输出
log_auto_output  将日志输出到动态的目标主题。例如你需要根据日志字段"pd"的值,动态创建多个目标日志主题,并将对应的日志分发至目标日志主题。 log_auto_output(topic_name="", logset_name="", index_options="", period=3,storage_type=" ",hot_period=0) 无返回,对目前的数据流进行输出
log_split 使用分隔符结合 Jmes 表达式,对特定字段进行拆分,拆分结果分裂为多行日志 log_split(字段名, sep=",", quote="\\", jmes="", output="") 返回日志(LOG)
log_drop 丢弃符合条件的日志 log_drop(条件1) 返回日志(LOG)
log_keep 保留符合条件的日志 log_keep(条件1) 返回日志(LOG)
log_split_jsonarray_jmes 将日志根据 Jmes 语法将 JSON 数组拆分和展开 log_split_jsonarray_jmes("field", jmes="items", prefix="") 返回日志(LOG)

五、字段处理函数

用于字段的增删改查、重命名。

函数名称 函数功能 函数语法描述 返回值类型
extract_tag 为动态生成的主题打标签。从日志字段中提取标签值,并将这些标签值作为动态生成主题的标签 extract_tag(标签名1,标签值1,标签名2,标签值2….) 返回日志(LOG)
fields_drop 根据字段名进行匹配,删除匹配到的字段 fields_drop(字段名1, 字段名2, …, regex=False,nest=False) 返回日志(LOG)
fields_keep 根据字段名进行匹配,保留匹配到的字段 fields_keep(字段名1, 字段名2, …, regex=False) 返回日志(LOG)
fields_pack 根据正则表达式来匹配字段名,并将匹配到的字段打包到新的字段,新字段值使用 JSON 格式进行组织 fields_pack(目标字段名, include=".*", exclude="", drop_packed=False) 返回日志(LOG)
fields_set 用来设置字段值,或者增加新字段 fields_set(字段名1, 字段值1, 字段名2, 字段值2, mode="overwrite") 返回日志(LOG)
fields_rename 字段重命名 fields_rename(字段名1, 新字段名1, 字段名2, 新字段名2, regex=False) 返回日志(LOG)
has_field 字段存在时,返回 True,否则返回 False has_field(字段名) 返回条件值(BOOL)
not_has_field 字段不存在时,返回 True,否则返回 False not_has_field(字段名) 返回条件值(BOOL)
v 获取字段值,返回对应字符串 v(字段名) 返回值字符串类型(STRING)

六、字典和列表函数

函数名称 函数功能 函数语法描述 返回值类型
array_get 获取列表(数组)的值 array_get(数组,下标位置) 返回值字符串类型(STRING)
json_add JSON 中新增节点 json_add(key,data) 返回值字符串类型(STRING)
json_edit 增加/删除/修改字典中的键值对 json_edit("result", path="", key="",value="333",index=1,mode="edit") 返回 dict
json_select 通过 Jmes 表达式,提取 JSON 字段值,并返回 Jmes 提取结果的 JSON 字符串 json_select(v(字段名), jmes="") 返回值字符串类型(STRING)
json_update JSON 中增加 KV 对 json_update(json 值, key1, value1,key2, value2) 返回值字符串类型(STRING)
xml_to_json 解析 XML 值并转换为 JSON 字符串,输入值必须为 XML 字符串结构,否则会导致转换异常 xml_to_json(字段值) 返回值 dict
json_to_xml 解析 JSON 字符串值并转换为 XML 字符串 json_to_xml(字段值) 返回值字符串类型(STRING)
if_json 判断是否为 JSON 字符串 if_json(字段值) 返回条件值(BOOL)

七、正则处理函数类

使用正则公式对文本中的字符进行匹配、替换。

函数名称 函数功能 函数语法描述 返回值类型
sensitive_detection 检测敏感信息,例如身份证、银行卡等敏感信息 sensitive_detection(scope="", ratio=1, discover_items="", replace_items="") 返回值字符串类型(STRING)
regex_match 基于正则对数据进行匹配,返回是否匹配成功,可以选择全匹配还是部分匹配 regex_match(字段值, regex="", full=True) 返回条件值(BOOL)
regex_select 基于正则对数据进行匹配,返回相应的部分匹配结果,可以指定匹配结果的第几个表达式,以及第几个分组(部分匹配+指定捕获组序号),如果最终没有匹配结果,则返回空字符串 regex_select(字段值, regex="", index=1, group=1) 返回值字符串类型(STRING)
regex_split 基于正则对数据进行分割,返回 JSON Array 字符串(部分匹配) regex_split(字段值, regex=\\"\\", limit=100) 返回值字符串类型(STRING)
regex_replace 基于正则匹配并替换(部分匹配) regex_replace(字段值, regex="", replace="", count=0) 返回值字符串类型(STRING)
regex_findall 基于正则进行匹配,并将匹配结果添加到 JSON 数组中,并返回 Array 字符串(部分匹配) regex_findall(字段值, regex="") 返回值字符串类型(STRING)

八、日期处理类

函数名称 函数功能 函数语法描述 返回值类型
dt_str 将时间类的字段值(特定格式的日期字符串或者时间戳),转换为指定时区、格式的目标日期字符串 dt_str(值, format="格式化字符串", zone="") 返回值字符串类型(STRING)
dt_to_timestamp 将时间类的字段值(特定格式的日期字符串),同时指定字段对应的时区,转换为 UTC 时间戳 dt_to_timestamp(值, zone="") 返回值字符串类型(STRING)
dt_from_timestamp 将时间类的时间戳字段,指定目标时区后,转换为时间字符串 dt_from_timestamp(值, zone="") 返回值字符串类型(STRING)
dt_now 获取加工计算时的本地时间 dt_now(format="格式化字符串", zone="") 返回值字符串类型(STRING)
custom_cls_log_time 自定义日志时间,会按照你的加工规则生成新的日志时间,支持 秒、毫秒、微秒、纳秒。 custom_cls_log_time(time) UTC 时间戳类型

九、字符串处理类

函数名称 函数功能 函数语法描述 返回值类型
str_exist 判断是否存在子串 str_exist(值1, 值2, ignore_upper=False) 返回计算的结果(BOOL)
str_count 在值中指定范围内查找子串,返回子串出现的次数 str_count(值, sub="", start=0, end=-1) 返回子串次数(INT)
str_len 返回字符串长度 str_len(值) 返回字符串长度(INT)
str_uppercase 返回大写字符串 str_uppercase(值) 返回值字符串类型(STRING)
str_lowercase 返回小写字符串 str_lowercase(值) 返回值字符串类型(STRING)
str_join 使用拼接字符串,拼接多值 str_join(拼接字符串1, 值1, 值2, …) 返回值字符串类型(STRING)
str_replace 替换字符串,返回替换结果字符串 str_replace(值, old="", new="", count=0) 返回值字符串类型(STRING)
str_format 格式化字符串,返回格式化结果 str_format(格式化字符串, 值1, 值2, …) 返回值字符串类型(STRING)
str_strip 移除字符串的开头和结尾处的指定字符 str_strip(值, chars="\\t\\r\\n") 返回值字符串类型(STRING)
str_lstrip 移除字符串开头处的指定字符。 str_strip(值, chars="\\t\\r\\n") 返回值字符串类型(STRING)
str_rstrip 移除字符串结尾处的指定字符。 str_strip(值, chars="\\t\\r\\n") 返回值字符串类型(STRING)
str_find 在值中查找子串,并返回子串出现的位置 str_find(值, sub="", start=0, end=-1) 返回指定第一次出现在值中的子字符串的位置(INT)
str_start_with 判断字符串是否以指定字符串开头 str_start_with(值, sub="", start=0, end=-1) 返回是否匹配的结果(BOOL)
str_end_with 判断字符串是否以指定字符串结尾 str_end_with(值, sub="", start=0, end=-1) 返回是否匹配的结果(BOOL)

十、类型转换函数类

函数名称 函数功能 函数语法描述 返回值类型
ct_int 对值进行整型转换,可指定原值的进制,转为十进制数值 ct_int(值1, base=10) 返回求值结果
ct_float 将值转换为浮点型数值 ct_float(值) 返回求值结果
ct_str 将值转换为字符串 ct_str(值) 返回求值结果
ct_bool 将值转换为布尔值 ct_bool(值) 返回求值结果

十一、逻辑表达式函数类

函数名称 函数功能 函数语法描述 返回值类型
op_if 根据条件判断,返回相应的值 op_if(条件1, 值1, 值2) 条件为 True 时,返回值1,否则返回值2
op_and 对值进行 and 运算,均为 True 时,返回 True,否则返回 False op_and(值1, 值2, …) 返回计算的结果(BOOL)
op_or 若存在参数值为 True,则返回 True;仅当所有参数值均为 False 时,才返回 False op_or(值1, 值2, …) 返回计算的结果(BOOL)
op_not 对值进行 not 运算 op_not(值) 返回计算的结果(BOOL)
op_eq 对值进行比较,相等则返回 True op_eq(值1, 值2) 返回比较的结果(BOOL)
op_ge 对值进行比较,值1大于或等于值2时返回 True op_ge(值1, 值2) 返回比较的结果(BOOL)
op_gt 对值进行比较,值1大于值2时返回 True op_gt(值1, 值2) 返回比较的结果(BOOL)
op_le 对值进行比较,值1小于或等于值2时返回 True op_le(值1, 值2) 返回比较的结果(BOOL)
op_lt 对值进行比较,值1小于值2时返回 True op_lt(值1, 值2) 返回比较的结果(BOOL)
op_add 对值进行求和运算 op_add(值1, 值2) 返回求值结果
op_sub 对值进行求差运算 op_sub(值1, 值2) 返回求值结果
op_mul 对值进行乘积运算 op_mul(值1, 值2) 返回求值结果
op_div 对值进行除法运算 op_div(值1, 值2) 返回求值结果
op_sum 对多值累加求和 op_sum(值1, 值2, …) 返回求值结果
op_mod 对值进行模计算 op_mod(值1, 值2) 返回求值结果
op_null 对值进行是否为 null 判断,是则返回 True,否则返回 False op_null(值) 返回计算的结果(BOOL)
op_notnull 对值进行是否为非 null 判断,是则返回 True,否则返回 False op_notnull(值) 返回计算的结果(BOOL)
op_str_eq 对字符串值进行比较,相等则返回 True op_str_eq(值1, 值2, ignore_upper=False) 返回计算的结果(BOOL)
random 生成随机数(两个参数之间的一个随机数),左闭右闭 random(值1, 值2) 返回求值结果

十二、编解码函数类

函数名称 函数功能 函数语法描述 返回值类型
decode_url 将编码 URL 进行解码 decode_url(值) 返回值字符串类型(STRING)
md5_encoding  计算并返回 MD5 值 md5_encoding(值) 计算并返回 MD5 值
uuid 生成 universally unique identifier (UUID) ,即唯一识别码 uuid() 计算并返回 UUID 值
str_encode 对字符串进行指定格式的编码 str_encode(值) 返回值字符串类型(STRING)
str_decode 对字符串进行指定格式的解码 str_decode(值) 返回值字符串类型(STRING)
base64_encode 将字符串进行 base64 编码 base64_encode(值, format="RFC3548") 返回base64字符串类型(STRING)
base64_decode 将字符串进行 base64 解码 base64_decode(值, format="RFC3548") 返回值字符串类型(STRING)

十三、IP 解析函数类

函数名称 函数功能 函数语法描述 返回值类型
geo_parse 解析出函数的地理位置 geo_parse(字段值, keep=("country","province","city"), ip_sep=",") 返回 JSON 字符串
is_subnet_of  判断 IP 是否在该网段内, 支持多个网段 is_subnet_of (网段列表, ip) 返回计算的结果(BOOL)

十四、相关函数

分类 函数 提取模式默认值
字段处理 fields_set overwrite
键值提取 ext_sep overwrite
 ext_sepstr overwrite
 ext_regex overwrite
 ext_kv overwrite
 ext_json_jmes overwrite
富化函数 enrich_table overwrite
 enrich_dict overwrite
 t_table_map fill-auto

十五、提取模式说明

原始日志:

{ "a": "", "b": 100}

参数名 说明 示例 
  加工语句 加工结果
add 当目标字段不存在时,设置目标字段 fields_set("c", 200,mode="add") {"a":"","b":"100","c":"200"}
add-auto 当新值非空,且目标字段不存在时,设置目标字段。 fields_set("c", "",mode="add-auto") {"a":"","b":"100"}
fill 当目标字段不存在或者值为空字符串时,设置目标字段。 fields_set("a", "123",mode="fill") {"a":"123","b":"100"}
fill-auto 当新值非空,且目标字段不存在或者值为空字符串时,设置目标字段。 fields_set("a", "123",mode="fill-auto") {"a":"123","b":"100"}
overwrite 总是设置目标字段。 fields_set("a", "123",mode="overwrite") {"a":"123","b":"100"}
overwrite-auto 当新值非空字符串,设置目标字段。 fields_set("b", "123",mode="overwrite-auto") {"a":"null","b":"123"}
赞 (0)
上一篇 4天前
下一篇 4天前