模板变量
可用模板变量
自定义触发动作的内容时,除了自己编写文本外,支持用模板变量显示指标值、指标等级、告警持续时间等等。只需要按照模板变量规则写入即可,发送的文案会自动进行替换。
所有模板变量均为 “**#{ }” 格式,其中 **"{ }" 内填入对应变量内容
变量名称 | 描述 |
---|---|
#{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 差 }}
输出 "差"