You need to enable JavaScript to run this app.
导航
内容函数
最近更新时间:2024.09.24 10:30:59首次发布时间:2022.12.09 19:44:40

日志服务提供一系列函数用于处理告警通知内容,您可以通过函数对数据和变量进行各种转换操作与处理。本文档介绍日志服务提供的内置函数语法、使用方式及示例。

控制函数

函数

语法

示例

until

until 函数用于生成从 0 到 n 的 Integer 类型数组,步长默认为 1,类似 python 中的 range 函数。例如 until(3) 返回数组 []int{0,1,2}
支持配合 for 循环使用。
语法格式如下:

until(n)

其中,n 表示数组长度,Integer 类型。

  • 函数示例

    {%for i in until(3)%}
    {{i}}
    {%endfor%}
    
  • 处理结果

    0
    1
    2
    

untilStep

untilStep 函数用于生成从 start 到 stop (不包含 stop)且步长为 step 的 Integer 类型数组。
语法格式如下:

untilStep(start,stop,step)

其中:

  • Start:Integer 类型,表示数组左边界。
  • Stop:Integer 类型,表示数组右边界。
  • Step:Integer 类型,表示数组步长。
  • 函数示例

    {%for i in untilStep(0,10,2)%}
    {{i}}
    {%endfor%}
    
  • 处理结果

    0 2 4 6 8
    

UUID 函数

函数

语法

示例

uuidv4

uuidv4 函数用于通过 UUID v4 算法生成一个随机字符串。
语法格式如下:

{{uuidv4()}}
  • 函数示例

    {{uuidv4()}}
    
  • 处理结果

    2b1ac53a-413c-428a-b35d-48c62a12d86d
    

URL 函数

函数

语法

示例

urlParse

urlParse 函数用于从 URL 中提取指定字段,处理结果为字符串格式。
语法格式如下:

{{urlParse(url)}}

其中,url 表示待提取字段的 URL 字符串。

将一串 URL 提取为以下格式的字符串。

{
scheme:   'http'
host:     'server.com:8080'
path:     '/api'
query:    'list=false'
opaque:   nil
fragment: 'anchor'
userinfo: 'admin:secret'
}
  • 函数示例
    {{ urlParse("http://admin:secret@server.com:8080/api?list=false#anchor")}} 
     toJson(urlParse("http://admin:secret@server.com:8080/api?list=false#anchor"))|safe
  • 处理结果
    {%with t=urlParse("http://admin:secret@server.com:8080/api?list=false#anchor")%}
       {{t.scheme}}
       {{t.host}}
       {{t.path}}
        {{t.query}}
        {{t.opaque}}
        {{t.fragment}}
    {%endwith%}
    

urlJoin

urlJoin 函数用于将 URL 对象转换为字符串形式。
语法格式如下:

{{urlJoin(urlObj)}}

其中,urlObj 表示包含 URL 信息的对象。

  • 函数示例

    {{urlJoin(dict("fragment","fragment","host","host:80","path","/path","query","query","scheme","http"))}}
    
  • 处理结果

    http://host:80/path?query#fragment
    

数学函数

函数名称

语法说明

示例

max

max 函数用于统计所有参数中的最大值。
语法格式如下:

max(value=a,b,c,d,e...)
  • 函数示例

    {{max(1,2,3,4)}}
    
  • 处理结果

    4
    

min

min 函数用于统计所有参数中的最小值。
语法格式如下:

min(value=a,b,c,d,e...)
  • 函数示例

    {{min(3,5,3,1)}}
    
  • 处理结果

    1
    

ceil

ceil 函数用于对 data 向上取整。
语法格式如下:

ceil(value=data)
  • 函数示例

    {{ceil(1.1)}}
    
  • 处理结果

    2.000000
    

floor

floor 函数用于对 data 向下取整。
语法格式如下:

floor(value=data)
  • 函数示例

    {{floor(1.1)}}
    
  • 处理结果

    1.000000
    

add

add 函数用于执行加法运算,即将输入的所有参数都当做 Integer 类型进行相加。
语法格式如下:

add(value=a,b,c,d...)
  • 函数示例

    add(1,2,3)
    
  • 处理结果

    6
    

sub

sub 函数用于执行减法运算,即输出 a-b,其中 a、b 均为 Integer 类型。
语法格式如下:

sub(a,b)
  • 函数示例

    sub(10,1)
    
  • 处理结果

    9
    

div

div 函数用于执行除法运算,即 a/b
语法格式如下:

div(a,b)
  • 函数示例

    div(10,2)
    
  • 处理结果

    5
    

mod

mod 函数用于取模,即 a%b
语法格式如下:

mod(a,b)
  • 函数示例

    mod(10,3)
    
  • 处理结果

    1
    

mul

mul 函数用于执行乘法运算,即所有输入参数的乘积,结果 Integer 类型。
语法格式如下:

mul(value=a,b,c,...)
  • 函数示例

    mul(1,2,3)
    
  • 处理结果

    6
    

round

round 函数用于对数值进行四舍五入。输出四舍五入后的数值,保留 6 位小数。
语法格式如下:

round(data,i,j)

其中:

  • data:float 类型,表示原数值。
  • i:Integer 类型,表示第几位数进行四舍五入。正整数表示小数点的位数,负整数表示小数点前的位数。
  • j:float 类型,取值范围为(0,1),表示 data 中的小数部分大于 j 才进位,否则舍去。
  • 函数示例

    {{round(1.1,0,0.5)}}
    
  • 处理结果

    1.000000
    

字符串函数

函数

说明

使用示例

trim

trim 函数用于删除原始字符串开头和末尾的空字符。
语法格式如下:

trim(value)
  • 函数示例

    {{trim(" a ")}}
    
  • 处理结果

    a
    

upper

upper 函数用于将原始字符串中所有字符转换为大写形式。
语法格式如下:

upper(value)
  • 函数示例

    {{upper("hello")}}
    
  • 处理结果

    HELLO
    

lower

lower 函数用于将原始字符串中所有字符转换为小写形式。
语法格式如下:

lower(value)
  • 函数示例

    {{lower("HELLO")}}
    
  • 处理结果

    hello
    

title

title 函数用于将原始字符串进行标题化处理,即每个单词的首字母大写,其余字母小写。
语法格式如下:

title(value)
  • 函数示例

    {{title("hello world")}}
    
  • 处理结果

    Hello World
    

contains

contains 函数用于判断指定字符串 originstr 是否包含子字符串 substr。 如果包含指定子串,则输出 True,否则输出 False。
语法格式如下:

contains(substr,orignstr)

其中:

  • orignstr:字符串类型,表示待判断的字符串。
  • substr:字符串类型,表示子字符串。
  • 函数示例

    {{contains("hel","hello")}}
    
  • 处理结果

    True
    

quote

quote 函数用于对字符串的引用,即使用半角双引号("")将指定字符串包裹起来。
语法格式如下:

quote (value)
  • 函数示例

    {{quote("hello\"")}}
    
  • 处理结果

    "hello""
    

replace

replace 函数用于将指定字符串 originstr 中的某个子字符串 oldstr 替换为另一个子字符串 newstr。输出格式为字符串。
语法格式如下:

replace(oldstr,newstr,originstr)

其中:

  • originstr:字符串类型,表示原始字符串。
  • oldstr:字符串类型,表示需要替换的原始子字符串。
  • newstr:字符串类型,表示替换的新子字符串。
  • 函数示例

    {{replace("ll","aa","hello")}}
    
  • 处理结果

    heaao
    

repeat

repeat 函数用于生成重复的序列,即将字符串重复 n 次。输出结果为字符串格式。
语法格式如下:

repeat(n,str)

其中:

  • n:Integer 类型,表示重复次数。
  • str:字符串类型,表示原始字符串。
  • 函数示例

    {{repeat(3,"hello")}}
    
  • 处理结果

    hellohellohello
    

substr

substr 函数用于截取字符串 str 中下标为 [i,j) 的子字符串。 输出结果为截取的关键词,字符串格式。
语法格式如下:

substr(i,j,str)

其中:

  • i:Integer 类型,子字符串左边界,下标从零开始。
  • j:Integer 类型,子字符串右边界,不包含 j。
  • str:字符串类型,表示原始字符串。
  • 函数示例

    {{substr(0,5,"hello world")}}
    
  • 处理结果

    hello
    

nospace

nospace 函数用于删除字符串 str 中的所有空格。
语法格式如下:

nospace(str)

其中,str 为字符串类型,表示原始字符串。

  • 函数示例

    {{nospace("hello world")}}
    
  • 处理结果

    helloworld
    

trunc

trunc 函数用于截取字符串 str 的 [0,i) 子字符串,并返回结果。输出结果为截取的子字符串。
语法格式如下:

trunc(i,str)

其中:

  • i:Integer 类型,表示字符串右边界,不包含 i。
  • str:字符串类型,表示原始字符串。
  • 函数示例

    {{trunc(5,"hello world")}}
    
  • 处理结果

    hello
    

abbrev

abbrev 函数用于对指定字符串进行省略处理。该函数中应指定省略后的字符串长度,其他字符串用英文句号(...)代替。输出格式为字符串类型。
语法格式如下:

abbrev(i,str)

其中:

  • i:Integer 类型,表示保留字符串 [0,i) 位置的内容。
  • str:字符串类型,表示原始字符串。
  • 函数示例

    {{abbrev(8,"hello world")}}
    
  • 处理结果

    hello...
    

abbrevboth

abbrevboth 函数保留 [i,j) 的 str 子字符串,其他字符串全部使用...替换。 输出格式为字符串类型。
语法格式如下:

abbrevboth(i,j,str)

其中:

  • i 和 j:Integer 类型,表示保留字符串 [i,j) 位置的内容。
  • Str:字符串类型,表示原始字符串。
  • 函数示例

    {{abbrevboth(5,10,"hello world!!!")}}
    
  • 处理结果

    ... wor...
    

initials

initials 函数用于将字符串 str 中每个单词的首字母提取出来,并组合成一个新的字符串。
语法格式如下:

initials(str)
  • 函数示例

    {{initials("hello world!!!")}}
    
  • 处理结果

    hw
    

randAlphaNum

randAlphaNum 函数用于生成包含数字的随机字符串。 输出格式为字符串类型。
语法格式如下:

randAlphaNum(n)

其中,n 为 integer 类型,表示字符数量。

  • 函数示例

    {{randAlphaNum(1)}}
    
  • 处理结果

    5
    

randAlpha

randAlpha 函数用于生成不包含数字的随机字符串。
语法格式如下:

randAlpha(n)

其中,n 为 Integer 类型,表示字符数量。

  • 函数示例

    {{randAlpha(1)}}
    
  • 处理结果

    c
    

randNumeric

randNumeric 函数用于生成随机数字。 输出结果为字符串类型。
语法格式如下:

randNumeric(n)

其中,n 为 integer 类型,表示字符数量。

  • 函数示例

    {{randNumeric(3)}}
    
  • 处理结果

    321
    

randAscii

andAscii 函数用于生成随机 ARSCII 字符。输出结果为字符串类型。
语法格式如下:

randAscii(n)

其中,n 为 integer 类型,表示字符数量。

  • 函数示例

    {{randAscii(3)}}
    
  • 处理结果

    i&g
    

hasPrefix

hasPrefix 函数用于判断指定字符串中是否包含指定前缀。 包含时返回 True,否则返回 False。
语法格式如下:

hasPrefix(pre,str)

其中:

  • pre:字符串类型,表示字符串前缀。
  • str:字符串类型,表示原始字符串。
  • 函数示例

    {{hasPrefix("hel","hello")}}
    
  • 处理结果

    True
    

hasSuffix

hasSuffix 函数用于判断指定字符串中是否包含指定后缀。 包含时返回 True,否则返回 False。
语法格式如下:

hasSuffix(suf,str)

其中:

  • suf:字符串类型,表示字符串后缀。
  • str:字符串类型,表示原始字符串。
  • 函数示例

    {{hasSuffix("llo","hello")}}
    
  • 处理结果

    True
    

squote

squote 函数用于对字符串进行转义,并将其用单引号('')包裹。输出格式为字符串类型。
语法格式如下:

squote(str)

其中,str 为字符串类型,表示原始字符串。

  • 函数示例
    {{squote("hello"")|safe}}
  • 处理结果
    'hello"'
    

cat

cat 函数用于拼接指定字符串。 输出格式为字符串类型。
语法格式如下:

cat(data=a,b,c)

其中,a、b、c 均为字符串类型,表示待拼接的字符。

  • 函数示例
    {{cat("hello",1,true)|safe}}
  • 处理结果
    hello 1 true
    

indent

indent 函数用于将字符串对齐,即在指定字符串前补充空格。
语法格式如下:

indent(n,str)

其中,n 表示补充的空格数量,str 为原始字符串。

  • 函数示例

    {{indent(3,"hello")}}
    
  • 处理结果

    hello
    

nindent

nindent 函数用于将字符串换行后对齐,即换行后,再增加 n 个空格。
语法格式如下:

nindent(n,str)
  • 函数示例

    {{nindent(3,"hello")}}
    
  • 处理结果

    hello
    

plural

plural 函数用于条件判断,参数 i 等于 1 时返回第一个参数,否则返回第二个参数。
语法格式如下:

plural(a,b,i)
  • 函数示例

    {{plural("a","b",1)}}
    
  • 处理结果

    a
    

snakecase

snakecase 函数用于将命名规则转换为下划线分割命名法。
语法格式如下:

snakecase(str)
  • 函数示例

    {{snakecase("HelloWorld")}}
    
  • 处理结果

    hello_world
    

camelcase

camelcase 函数用于将命名规则转换为大驼峰命名法。
语法格式如下:

camelcase(str)
  • 函数示例

    {{camelcase("hello_world")}}
    
  • 处理结果

    HelloWorld
    

kebabcase

kebabcase 函数用于将命名规则转化成连字符(-)分割命名法。
语法格式如下:

kebabcase(str)
  • 示例1

    • 函数示例

      {{kebabcase("hello_world")}}
      
    • 处理结果

      hello-world
      
  • 示例2

    • 函数示例

      {{kebabcase("FirstName")}}
      
    • 处理结果

      first-name
      

swapcase

swapcase 函数用于将字符串中字符的大小写互相转换。
语法格式如下:

swapcase(str)
  • 函数示例

    {{swapcase("HelloWorld")}}
    
  • 处理结果

    hELLOwORLD
    

shuffle

shuffle 函数用于将原始字符串中的字符打乱重新排列成新的字符串。
语法格式如下:

shuffle(syr)
  • 函数示例

    {{shuffle("HelloWorld")}}
    
  • 处理结果

    dHrollelWo
    

对象和列表函数

函数

说明

使用示例

join

join 函数使用连接符连接列表 value 中的指定元素。其中,通过 symbol 参数可指定连接符。
语法格式如下:

join(symbol='',value)
  • 示例1

    • 函数示例

      {{ join("",list(1, 2, 3)) }}
      
    • 处理结果

      123
      
  • 示例2

    • 函数示例

      {{ join(',',list(1, 2, 3)) }}
      
    • 处理结果

      1,2,3
      

split

split 函数用于分割指定字符串 value。处理结果为对象类型。 其中 key 为 _i,字符串类型,其中 i 表示下标。
语法格式如下:

split(symbol,value)

其中:

  • symbol:字符串类型,用于指定分隔符。
  • value:字符串类型,表示原始待分割的字符串。
  • 函数示例

    {%for k,v in split(",","a,b,c")%}
    {{k}}:{{v}}
    {%endfor%}
    
  • 处理结果

    _0:a
    _1:b
    _2:c
    

toString

toString 函数用于将指定参数转换为字符串格式。
语法格式如下:

toString(value)
  • 函数示例

    {{toString("aa")}}
    
  • 处理结果

    aa
    

toJson

toJson 函数用于将指定参数转换为 JSON 格式的字符串输出。
语法格式如下:

toJson(value)
  • 函数示例

    {{toJson(urlParse("http://admin:secret@server.com:8080/api?list=false#anchor"))}}
    
  • 处理结果

    {"fragment": "anchor","host": "server.com:8080","hostname": "server.com","opaque": "","path": "/api","query": "list=false","scheme": "http","userinfo": "admin:secret"}
    

toPrettyJson

toPrettyJson 函数用于将指定参数转换为格式化的字符串。
语法格式如下:

toPrettyJson(value)
  • 函数示例

    {{toPrettyJson(urlParse("http://admin:secret@server.com:8080/api?list=false#anchor"))}}
    
  • 处理结果

    {
      "fragment": "anchor",
      "host": "server.com:8080",
      "hostname": "server.com",
      "opaque": "",
      "path": "/api",
      "query": "list=false",
      "scheme": "http",
      "userinfo": "admin:secret"
    }
    

ternary

ternary 函数用于条件判断,当 value3 值为 true 时返回 value1,否则返回 value2。
语法格式如下:

ternary(value1,value2,value3)
  • 函数示例

    {{ternary(1,2,true)}}
    
  • 处理结果

    1
    

append

append 函数用于向列表添加指定值,即将值 value 加入到 list1 中。
语法格式如下:

append(list1,value)
  • 函数示例

    {%-with mp1=list("a","1","b","2")-%}
     {%-with mp1=append(mp1,"a")%}
     {{-mp1
     {%endwith-%}
     {%endwith%}
    
  • 处理结果

    a,1,b,2,a
    

数据结构函数

函数

说明

使用示例

list

list 函数用于将指定参数定义为列表。
语法格式如下:

list(values=a,b,c,...)
  • 函数示例

    {{list("a","b","c")
    
  • 处理结果

    a,b,c
    

dict

dict 函数将参数定义为键值对类型(key-value)的 JSON 对象并返回,类似于直接使用{}创建字典。
语法格式如下:

dict(key1,value1,key2,value2)
  • 函数示例

    {{toJson(dict("a",1,"b",2))}}
    
  • 处理结果

    {"a":1,"b":2}
    

hasKey

hasKey 函数用于判断字典 dict 中是否包含指定 key。
语法格式如下:

hasKey(dict,key)
  • 函数示例

    {%with mp=dict("a",1,"b",2)%}
    {%if hasKey(mp,"a")%}
    has
    {%else%}
    no
    {%endif%}
    {%endwith%}
    
  • 处理结果

    has
    

set

set 函数用于对字典赋值某个属性。
语法格式如下:

dict(key,value)
  • 函数示例

    {%with mp=dict("a",1,"b",2)%}
    {%with mp=set(mp,"a",3)%}
    {%for k,v in mp%}
    {{k}}:{{v}}
    {%endfor%}
    {%endwith%}
    {%endwith%}
    
  • 处理结果

    mp={"a":3,"b":2}
    

unset

unset 函数用于删除字典里的某个属性。
语法格式如下:

unset(map,key)

其中:

  • map :字段名称,
  • key :待删除的属性 key。
  • 函数示例

    {%with mp=dict("a",1,"b",2)%}
    {%with mp=unset(mp,"a")%}
    {%for k,v in mp%}
    {{k}}:{{v}}
    {%endfor%}
    {%endwith%}
    {%endwith%}
    
  • 处理结果

    mp={"b":2}
    

pluck

pluck 函数用于将多个字典中相同的 key 构造成一个数组。
语法格式如下:

pluck(key,map1,map2)
  • 函数示例

    {%with mp1=dict("a",1,"b",2)%}
    {%with mp2=dict("a",2,"b",2)%}
        {%- for v in pluck("a",mp1,mp2) %}
            {{ v}}
        {%- endfor -%}
    {%endwith%}
    {%endwith%}
    
  • 处理结果

    1
    2
    

merge

merge 函数用于合并两个字典,取并集。
语法格式如下:

merge(map1,map2)
  • 函数示例

    {%with mp1=dict("a",1,"b",2)%}
    {%with mp2=dict("b",2,"d",2)%}
    {%with mp1=merge(mp1,mp2)%}
       {%- for k,v in mp1 -%}
       {{k}}:{{v}}
       {% endfor -%}
    {%endwith%}
    {%endwith%}
    {%endwith%}
    
  • 处理结果

    a:1
    b:2
    d:2
    

mergeOverwrite

mergeOverwrite 函数用于合并两个字典,如果存在重复 key,则以第二个字典的值为准。
语法格式如下:

mergeOverwrite(map1,map2)
  • 函数示例

    {%with mp1=dict("a","1","b","2")%}
    {%with mp2=dict("a","1","b","2")%}
    {%with mp1=mergeOverwrite(mp1,mp2)%}
       {%- for k,v in mp1 -%}
       {{k}}:{{v}}
       {% endfor -%}
    {%endwith%}
    {%endwith%}
    {%endwith%}
    
  • 处理结果

    a:1
    b:2
    

keys

keys 函数用于获取指定字典的 key 列表,并将其以数组形式返回。
语法格式如下:

keys(map1)
  • 函数示例

    {%with mp1=dict("a",1,"b",2)%}
    {%- for v in keys(mp1) -%}
    {{v}}
    {% endfor -%}
    {%endwith%}
    
  • 处理结果

    a
    b
    

values

values 函数用于获取字典的 value 列表。
语法格式如下:

values(map1)
  • 函数示例

    {%with mp1=dict("a",1,"b",2)%}
    {%- for v in values(mp1) -%}
    {{v}}
    {% endfor -%}
    {%endwith%}
    
  • 处理结果

    1
    2
    

pick

保留字典中的指定 key,并将该键值对保存为新的字典。
语法格式如下:

pick(map1,key1,key2)
  • 函数示例

    {%with mp1=dict("a",1,"b",2,"c","3")%}
    {%- for k,v in pick(mp1,"a","b") -%}
    {{-k}}:{{v}}
    {% endfor -%}
    {%endwith%}
    
  • 处理结果

    a:1
    b:2
    

omit

删除字典中的指定 key,并将剩余键值对保存为新的字典。
语法格式如下:

omit(map,key)
  • 函数示例

    {%with mp1=dict("a",1,"b",2,"c",3)%}
    {%- for k,v in omit(mp1,"a") -%}
    {{-k}}:{{v}}
    {% endfor -%}
    {%endwith%}
    
  • 处理结果

    b:2
    c:3
    

deepCopy

deepCopy 函数用于深度复制某个变量。
语法格式如下:

deepCopy(map1)
  • 函数示例

    {%with mp1=dict("a",1,"b",2)%}
    {%with mp2=deepCopy(mp1)%}
    {%endwith%}
    {%endwith%}
    
  • 处理结果
    存在 mp1 和 mp2 两个字典,其内容相同、互不干扰。

数组操作函数

函数

说明

使用示例

push

push 函数用于向列表添加指定值。
语法格式如下:

push(mp1,"x")
  • 函数示例

    {%with mp1=list("a","1","b","2")%}
    {%with mp1=push(mp1,"x")%}
    {%endwith%}
    {%endwith%}
    
  • 处理结果

    mp1=["a","1","b","2","x"]
    

prepend

prepend 函数用于将值加入到 list 的前面。
语法格式如下:

prepend(mp1,"x")
  • 函数示例

    {%with mp1=list("a","1","b","2")%}
    {%with mp1=prepend(mp1,"x")%}
    {%endwith%}
    {%endwith%}
    
  • 处理结果

    mp1=["x","a","1","b","2"]
    

first

first 函数用于返回列表第一个元素。
语法格式如下:

first(mp1)
  • 函数示例

    {%with mp1=list("a","1","b","2")%}
    {{first(mp1)}}
    {%endwith%}
    
  • 处理结果

    a
    

rest

rest 函数用于返回列表除第一个元素以外的其他元素。
语法格式如下:

rest(mp1)
  • 函数示例
    {%with mp1=list("a","1","b","2")%} 
     {%with mp1=rest(mp1)%} 
     {{toJson(mp1)|safe}} 
     {%endwith%} 
     {%endwith%}
  • 处理结果
    ["1","b","2"]
    

last

last 函数用于返回列表中的最后一个元素。
语法格式如下:

last(mp1)
  • 函数示例

    {%with mp1=list("a","1","b","2")%}
    {{last(mp1)}}
    {%endwith%}
    
  • 处理结果

    2
    

initial

initial 函数用于返回除最后一个元素以外的所有元素。
语法格式如下:

initial(mp1)
  • 函数示例
    {%with mp1=list("a","1","b","2")%} 
     {%with mp1=initial(mp1)%} 
     {{toJson(mp1)|safe}} 
     {%endwith%} 
     {%endwith%}
  • 处理结果
    ["a","1","b"]
    
    
    

reverse

reverse 函数用于将列表的顺序反转。
语法格式如下:

reverse(mp1)
  • 函数示例
    {%with mp1=list("a","1","b","2")%} 
     {%with mp1=reverse(mp1)%} 
     {{toJson(mp1)|safe}} 
     {%endwith%} 
     {%endwith%}
  • 处理结果
    ["2","b","1","a"]
    
    
    

uniq

uniq 函数用于去除数组中重复的部分。
语法格式如下:

uniq(mp1)
  • 函数示例

    {%with mp1=list("a","1","b","1")%}
    {%with mp1=uniq(mp1)%}
    {%endwith%}
    {%endwith%}
    
  • 处理结果

    mp1=["2","b","1"]
    

without

without 函数用于取两个数组中不相交的部分,即传入 a 和 b 两个数组,使用差集操作来去除它们之间的公共部分,并输出结果。
语法格式如下:

without(mp1,mp2)
  • 函数示例

    {%with mp1=list("a","1","b","2")%}
    {%with mp2=list(1,"b",2)%}
    {{first(without(mp1,mp2))}}
    {%endwith%}
    {%endwith%}
    
  • 处理结果

    a
    

has

has 函数用于判断数组中是否存在某个元素。
语法格式如下:

has(key,mp1)
  • 函数示例

    {%with mp1=list("a","1","b","2")%}
    {{has("a",mp1)}}
    {%endwith%}
    
  • 处理结果

    True
    

slice

slice 函数用于取 slice 中的值,第一个参数为 list 类型,第二个参数为开始下标,第三个参数为结束下标。
语法格式如下:

slice(map1,开始下标,结束下标)
  • 函数示例

    {%with mp1=list("a","1","b","2")%}
    {%for x in slice(mp1,0,2)%}
    {{x}}
    {%endfor%}
    {%endwith%}
    
  • 处理结果

    a
    1
    

concat

concat 函数用于将多个数组合并,并保存为新的数组。
语法格式如下:

concat(map1,map2)
  • 函数示例
    {%with mp1=list("a","1","b","2")%} 
     {%with mp2=list("a","1","b","2")%} 
     {%with mp3=concat(mp1,mp2)%} 
     {{toJson(mp3)|safe}} 
     {%endwith%} 
     {%endwith%} 
     {%endwith%}
  • 处理结果
    mp3=["a","1","b","2","a","1","b","2"]
    

日期函数

函数

说明

使用示例

date

date 函数用于将指定时间戳转换为指定格式的字符串。
语法格式如下:

date("2006-01-02 15:04:05",Unix时间戳)
  • 第一个参数表示时间格式,必须指定为2006-01-02 15:04:05
  • Unix时间戳:待转换格式的 UTC 时间,默认转换当前时间。该参数为 Integer 类型或者 time 类型。
  • 函数示例

    {{date("2006-01-02 15:04:05",now())}}
    
  • 处理结果

    2023-11-16 16:26:20
    

dateInZone/date_in_zone

dateInZone/date_in_zone 函数用于获取指定时区的当前时间。
语法格式如下:

date_in_zone("2006-01-02 15:04:05",Unix时间戳,时区)
  • 第一个参数表示时间格式,必须指定为( 2006-01-02 15:04:05)。
  • Unix时间戳:待转换格式的 UTC 时间,默认为当前时刻。
  • 时区:目标时区,即将 UTC 时间转换为指定时区的时间,例如 UTC+8。默认为当前时区。
  • 函数示例

    {{date_in_zone("2006-01-02 15:04:05","","UTC+8")}}
    
  • 处理结果

    2023-11-16 16:26:20
    

date_modify/dateModify

date_modify/dateModify 函数用于在时间基础上进行加减时间,例如在当前时间的基础上加 20 分钟,返回 time 类型。
语法格式如下:

date_modify(time,Unix时间戳)
  • time:增加或减少的时间,例如 +20m 表示加 20 分钟。支持的单位包括小时(h)、分钟(m)、秒(s)。
  • Unix时间戳:待转换格式的 UTC 时间,默认为当前时刻。也可以指定为 now() 表示当前时间。
  • 函数示例

    date_modify("+20m",now())
    
  • 处理结果

    2023-11-16 17:55:36.08687 +0800 CST m=+1200.191703835
    

now

now 函数用于返回当前时间,返回数据类型为 time。
语法格式如下:

now()
  • 函数示例

    now()
    
  • 处理结果

    2023-11-16 17:36:38.006711 +0800 CST m=+0.200781293
    

ago

ago 函数用于返回指定日期和当前时刻的时间间隔。
语法格式如下:

ago(时间戳)
  • 函数示例

    ago(date_modify("+20m",now()))
    
  • 处理结果

    -20m0s
    

加密函数

函数

说明

使用示例

sha256sum

sha256sum 函数用于计算输入字符串的 SHA256 值。
语法格式如下:

sha256sum(string)

其中,string 表示待编码的字符串。

  • 函数示例

    {{sha256sum("hello")}}
    
  • 处理结果

    2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
    

sha1sum

sha1sum 函数用于计算输入字符串 SHA1 值。
语法格式如下:

sha1sum(string)

其中,string 表示待编码的字符串。

  • 函数示例

    {{sha1sum("hello")}}
    
  • 处理结果

    aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
    

adler32sum

adler32sum 函数用于返回 Adler-32 算法校验和。
语法格式如下:

adler32sum(string)

其中,string 表示待编码的字符串。

  • 函数示例

    adler32sum("hello")
    
  • 处理结果

    103547413
    

reflect 函数

函数

说明

使用示例

typeOf

typeOf 函数用于获取变量类型。
语法格式如下:

typeOf(key)
  • 函数示例

    {{typeOf("a")}}
    
  • 处理结果

    string
    

typeIs

typeIs 函数用于判断指定字符串是否为指定格式。返回数据类型为 Boolean。
语法格式如下:

typeIs(type,string)

其中:

  • type:格式名称,支持设置为 Integer、string 等 golang 中 fmt.Printf 指定 %T 参数的打印值。
  • string:待判断格式的字符串。
  • 函数示例

    {{typeIs("int",1)}}
    
  • 处理结果

    True
    

kindOf

kindOf 函数用于判断指定参数的数据类型。
语法格式如下:

kindOf()
  • 函数示例

    {{kindOf(1)}}
    
  • 处理结果

    int
    

deepEqual

deepEqual 函数用于反射判断两个值是否相等。返回数据类型为 Boolean。
语法格式如下:

deepEqual(value1,value2)
  • 函数示例

    {%with mp1=list("a","1","b","2")%}
    {%with mp2=list("a","1","b","2")%}
    {{deepEqual(mp1,mp2)}}
    {%endwith%}
    {%endwith%}
    
  • 处理结果

    True
    

正则表达式函数

函数

说明

使用示例

regexMatch

regexMatch 函数用于判断指定字符串和正则表达式是否匹配。匹配则返回 True,否则返回 False。
等同于 Go 语言的正则 MatchString 函数。
语法格式如下:

regexMatch(regex,string)

其中:

  • regex:正则表达式。
  • String:待判断的字符串。
  • 函数示例

    regexMatch("^Hello","Hello world")
    
  • 处理结果

    True
    

regexFind

regexFind 函数用于使用指定的正则表达式在指定字符串中提取内容,提取时匹配一次。
等同于 Go 语言的 FindString 函数。
语法格式如下:

regexFindAll(regex,string)

其中:

  • regex:正则表达式。
  • String:判断的字符串。
  • 函数示例

    regexFind("[abc]","abcd")
    
  • 处理结果

    a
    

regexFindAll

regexFindAll 函数用于使用指定的正则表达式在指定字符串中提取内容,提取时指定匹配次数。
等同于 Go 语言的正则 MatchString 函数。
语法格式如下:

regexFindAll(regex,string,n)

其中:

  • regex:正则表达式。
  • String:待判断的字符串。
  • n:匹配次数。
  • 函数示例

    {%with t=regexFindAll("[abc]","abca",4)%}
       {%for x in t%}
          {{x}}
    {%endfor%}
    {%endwith%}
    
  • 处理结果

    a
    b
    c
    a
    

regexReplaceAll

regexReplaceAll 函数用于将匹配正则表达式的字符串替换为指定字符串。
等同于 Go 语言的 ReplaceAllString 函数。
语法格式如下:

regexReplaceAll(regex,string1,string2)

其中:

  • regex:正则表达式。
  • string1:待判断的字符串。
  • string2:替换后的字符串。
  • 函数示例

    regexReplaceAll("[abc]","abcd","")
    
  • 处理结果

    d
    

regexSplit

regexSplit 函数等同于 Golang re.Split,使用正则分割字符串。返回数据类型为数组。
语法格式如下:

regexSplit(regex,string,n)

其中:

  • regex:正则表达式。
  • String:待判断的字符串。
  • n:匹配次数。
  • 函数示例

    {%with t=regexSplit("[\\s]","1 2",2)%}
       {%for x in t%}
          {{x}}
       {%endfor%}
    {%endwith%}
    
  • 处理结果

    1
    2
    

编解码函数

函数

说明

使用示例

b64enc

b64enc 函数用于对指定字符串进行 Base64 编码。
语法格式如下:

b64enc(string)
  • 函数示例

    b64enc("hello")
    
  • 处理结果

    aGVsbG8=
    

b64dec

b64dec 函数用于对指定字符串进行 Base64 解码。语法格式如下:

b64dec(string)
  • 函数示例

    b64dec("aGVsbG8=")
    
  • 处理结果

    hello
    

b32enc

b32enc 函数用于对指定字符串进行 Base32 编码。语法格式如下:

b32enc(string)
  • 函数示例

    b32enc("hello")
    
  • 处理结果

    NBSWY3DP
    

b32dec

b32dec 函数用于对指定字符串进行 Base32 解码。语法格式如下:

b32dec(string)
  • 函数示例

    b32dec("NBSWY3DP")
    
  • 处理结果

    hello
    

函数示例

示例 1:提取QueryLog内容。

  • QueryLog 内容示例

    [
      [
        {
          "double_key": 1.1,
          "name": "bytedance",
          "obj_key": {
            "key1": 1,
            "key2": "key2",
            "key_double": 1.1,
            "key_long": 123
          },
          "type": 1
        }
      ]
    ]
    
  • 函数示例

    对比项

    不使用函数

    使用 toPrettyJson 函数

    通知内容配置

    {{QueryLog}}

    {{toPrettyJson(QueryLog)}}

    结果

    <[][]map[string]interface {} Value>
    

    说明

    未输出实际值。

    [
      [
        {
          "double_key": 1.1,
          "name": "bytedance",
          "obj_key": {
            "key1": 1,
            "key2": "key2",
            "key_double": 1.1,
            "key_long": 123
          },
          "type": 1
        }
      ]
    ]
    

    说明

    已输出实际值。

示例2:获取执行信息页面链接中的前 35 个字符

  • {{DetailUrl}} 内容示例

    https://console.volcengine.com/tls/region:tls+cn-beijing/project/a573686e-d097-4227-9fa5-612d0ae2****/alarms/7070267f-30da-4861-8d0a-01f4bc6d5****detail
    
  • 函数示例

    {{substr(0,68, DetailUrl)}}
    
  • 处理结果

    https://console.volcengine.com/tls/
    

示例3:将告警中最后一条执行语句的起始时间戳转换为指定格式

  • {{NotifyTimeUnix}}内容示例

    1708582822
    
  • 函数示例

    本次告警中最后一条执行语句的起始时间:{{date("2006-01-02 15:04:05",QueryStartTime)}}
    
  • 处理结果

    本次告警中最后一条执行语句的起始时间:2024-02-22 14:20:22
    

示例4:对告警策略 ID 进行 SHA256 加密

  • {{AlarmID}}内容示例

    0a335663-88f1-4b51-ad67-c71ae008****
    
  • 函数示例

    告警策略ID:{{sha256sum(AlarmID)}}
    
  • 处理结果

    告警策略ID:b8dc90d8de9cc33efffab28ad263598de8938f09356f83632176bff09ef6****