search
异常检测 模板变量

模板变量

可用模板变量

自定义触发动作的内容时,除了自己编写文本外,支持用模板变量显示指标值、指标等级、告警持续时间等等。只需要按照模板变量规则写入即可,发送的文案会自动进行替换。

所有模板变量均为 “**#{ }” 格式,其中 **"{ }" 内填入对应变量内容

变量名称 描述
#{level} 触发时的等级或状态,包含 ok(恢复) ,info(提示),warning(警告), critical(严重) 四种类型,其中“()”内为对应的中文解释,不会显示出来
#{prevLevel} 上次触发时的等级或状态,包含 ok(恢复) ,info(提示),warning(警告), critical(严重) 四种类型,其中“()”内为对应的中文解释,不会显示出来
#{levelName} 显示 #{level} 的中文文案(恢复;提示;警告;严重)
#{prevLevelName} 显示 #{preLevel} 的中文文案(恢复;提示;警告;严重)
#{tags} 显示检测指标中 所有 触发维度的 GroupBy 标签 (即触发对象)。具体参照下面举例
#{tags.tagKey} 指定 具体 需显示的 GroupBy 标签值,tagKey 替换为对应Group By的 “tag名称”。具体参照下面举例
#{fields} 显示 所有 检测的指标触发告警时的值。具体参照下面举例
#{fields.fieldKey} 指定 具体 需显示的检测指标触发告警时的值,fieldKey 替换为对应的 “指标名”。具体参照下面举例
#{durantion} 告警的持续时间,单位毫秒
#{durantionHuman} 告警的持续时间文案,X小时X分钟X秒
#{ruleld} 触发规则的ID
#{ruleName} 触发规则的名称
#{alertld} 触发历史的唯一ID

举例

如图所示:添加了两个检测指标分别为订单_单价订单_优惠价格,“触发维度”选择了两个Group By标签 "平台" 和 “类型” 。

规则

此时触发了一条检测规则发送的邮件中:

#{tags.平台} 显示为 “淘宝”
#{fields.M1} 显示为 “ 149.21 ”

触发邮件示例

变量

触发邮件

邮件

进阶模板语法(测试版)

2020-05-21 / 官方脚本1.0.2 新增功能

本功能当前处于测试阶段,具体实现可能随更新有变化,请酌情使用

进阶模板语法使用“**{{ }}**”格式,支持一定程度上的可编程性,语法格式为:

{{ <模板变量> | <指令> <指令参数...> | <指令> <指令参数...> }}

类似Linux 的管道,从模板变量的值开始,依次执行处理指令,最终输出结果。

可用的指令如下:

eval指令

执行计算

参数:

位置序号 是否必须 默认值 说明
1 必须 Python表达式,x为变量值

示例:

假设 fields.M1 为 100

{{ fields.M1 | eval str(x) + '%' }}
输出 "100%"

{{ fields.M1 | eval x ** 2 }}
输出 10000

round指令

保留小数点

参数:

位置序号 是否必须 默认值 说明
1 可选 0 小数点位数、且是否使用千位分隔、是否返回数值

示例:

假设 fields.M1 为 1000.23

{{ fields.M1 | round 2 }}
保留2位小数,输出 "1000.23"

{{ fields.M1 | round k0 }}
保留整数,使用千位分隔,输出 "1,000"

{{ fields.M1 | round k3 }}
保留3位小数,使用千位分隔,输出 "1,000.230"

{{ fields.M1 | round v3 }}
保留3位小数,返回数值,输出 1000.23

asPercent指令

展示为百分比形式,如:10 显示为 10%,无计算过程

参数:

位置序号 是否必须 默认值 说明
1 可选 0 小数点位数、且是否使用千位分隔、是否返回数值

示例:

假设 fields.M1 为 65.23

{{ fields.M1 | asPercent 1 }}
保留1位小数,输出 "65.2%"

toPercent指令

转换为百分比形式,如:0.1 显示为 10%,存在计算过程,

参数:

位置序号 是否必须 默认值 说明
1 可选 0 小数点位数、且是否使用千位分隔、是否返回数值

示例:

假设 fields.M1 为 0.123

{{ fields.M1 | toPercent 1 }}
保留1位小数,输出 "12.3%"

volumn指令

容量换算(1000进位),支持的单位为:Byte, KB, MB, GB, TB

参数:

位置序号 是否必须 默认值 说明
1 必须 原始单位
2 必须 转换目标单位,可填写AUTO,让系统自动选择单位
3 可选 0 小数点位数、且是否使用千位分隔、是否返回数值

示例:

假设 fields.M1 为 1000

{{ fields.M1 | volumn MB GB }}
从 MB 转换为 GB,输出 "1 GB"

{{ fields.M1 | volumn GB MB k0 }}
从 GB 转换为 MB,保留整数且使用千位分隔,输出 "1,000 MB"

volumni指令

volumn指令的1024进位版本,支持的单位为:Byte, KiB, MiB, GiB, TiB

bitRate指令

比特速率换算(1024进位),支持的单位为:bps, Kbps, Mbps, Gbps

参数:

位置序号 是否必须 默认值 说明
1 必须 原始单位
2 必须 转换目标单位,可填写AUTO,让系统自动选择单位
3 可选 0 小数点位数、且是否使用千位分隔、是否返回数值

示例:

假设 fields.M1 为 1000

{{ fields.M1 | volumn Mbps Gbps }}
从 Mbps 转换为 Gbps,输出 "1 Gbps"

{{ fields.M1 | volumn Gbps Mbps k0 }}
从 Gbps 转换为 Mbps,保留整数且使用千位分隔,输出 "1,000 Mbps"

byteRate指令

字节速率换算(1024进位),支持的单位为:B/s, KB/s, MB/s, GB/s

参数:

位置序号 是否必须 默认值 说明
1 必须 原始单位
2 必须 转换目标单位,可填写AUTO,让系统自动选择单位
3 可选 0 小数点位数、且是否使用千位分隔、是否返回数值

示例:

假设 fields.M1 为 1000

{{ fields.M1 | volumn MB/s GB/s }}
从 MB/s 转换为 GB/s,输出 "1 GB/s"

{{ fields.M1 | volumn GB/s MB/s k0 }}
从 GB/s 转换为 MB/s,保留整数且使用千位分隔,输出 "1,000 MB/s"

upper指令

转换为大写

无参数

示例:

假设 fields.M1 为 apple

{{ fields.M1 | upper }}
输出 "APPLE"

lower指令

转换为小写

无参数

示例:

假设 fields.M1 为 "APPLE"

{{ fields.M1 | upper }}
输出 "apple"

dictValue指令

获取字典值(值映射)

参数:

位置序号 是否必须 默认值 说明
1 必须 JSON格式表示,如:{"ok":"成功","ng": "失败"}

示例:

假设 fields.M1 为 "apple"

{{ fields.M1 | dictValue {"apple":"苹果","ms": "微软"} }}
输出 "苹果"

ifTrue/ifFalse指令

满足当输入值为True/False时,则输出固定内容。

必须为布尔类型的True/False才能匹配,其他内容如数字1/0等不会认为是True/False

本指令一般与eval指令连用

参数:

位置序号 是否必须 默认值 说明
1 必须 输出值

示例:

假设 fields.M1 为 60
{{ fields.M1 | eval x > 70 | ifTrue 好 | ifFalse 差 }}
输出 "差"