新版内容模板的内置函数便于您对数据进行各种操作,丰富了通知内容的格式和展示样式。本文介绍内置模板函数的语法及示例。
通用函数
数学函数
函数 | 说明 | 过滤器 | 示例 |
---|---|---|---|
float(value, default=0.0) | 将整数或字符串转换成浮点数。 如果转换失败,默认返回0.0。通过default参数,可指定转换失败的返回值。 | 支持 |
|
int(value, default=0) | 将一个字符串或数字转换为整数。 如果转换失败,默认返回0。通过default参数,可指定转换失败的返回值。 | 支持 |
|
length(value) | 返回对象(字符串、列表、元组等)的长度或个数。 | 支持 |
|
abs(value) | 返回数字的绝对值。 | 支持 | {{ abs(-1) }} 的结果为1。 |
min(value) | 返回最小值。 | 支持 | {{ min([1, 3, 2]) }} 的结果为1。 |
max(value) | 返回最大值。 | 支持 | {{ max([1, 3, 2]) }} 的结果为3。 |
ceil(value) | 向上取整数。 | 支持 | {{ ceil(1.23) }} 的结果为2。 |
floor(value) | 向下取整数。 | 支持 | {{ floor(1.23) }} 的结果为1。 |
round(value, 1) | 四舍五入取整数。 其中, | 支持 |
|
sum(value) | 求和计算。 | 支持 | {{ sum([1, 2, 3]) }} 的结果为6。 |
字符串函数
函数 | 说明 | 过滤器 | 示例 |
---|---|---|---|
string(value) | 将对象转为字符串类型。 | 支持 | {{ string(1.23) }} 的结果为1.23。此处的1.23为字符串类型。 |
capitalize(value) | 将字符串的首字母转换为大写形式,其它字符转换为小写形式。 | 支持 | {{ capitalize("heLLO World") }} 的结果为Hello world。 |
lower(value) | 将字符串转换为小写形式。 | 支持 | {{ lower("FOO") }} 的结果为foo。 |
upper(value) | 将字符串转换为大写形式。 | 支持 | {{ upper("foo") }} 的结果为FOO。 |
title(value) | 返回标题化的字符串,即每个单词的首字母为大写形式,其余字母为小写形式。 | 支持 | {{ title("hello world") }} 的结果为Hello World。 |
trim(value) | 删除字符串头尾的空字符。 | 支持 | {{ trim(" foo\n") }} 的结果为foo。 |
replace(value, old, new) | 替换目标字符串。 | 不支持 | {{ replace("foo", "oo", "ly") }} 的结果为fly。 |
wordcount(value) | 统计单词个数。 | 支持 | {{ wordcount("hello world") }} 的结果为2。 |
truncate(value, n, end='') | 截断字符串。
| 不支持 |
|
quote(value) | 使用半角双引号("")包裹字符串。 | 支持 |
|
indent(value, n=4) | 对每一行字符串进行缩进,默认缩进4个空格。 通过n参数,可指定缩进的空格数。 | 支持 |
|
startswith(value, prefix) | 判断字符串是否以特定子串开始。 | 支持 | {{ startswith("football", "foo") }} 的结果为true。 |
endswith(value, suffix) | 判断字符串是否以特定子串结束。 | 支持 | {{ endswith("football", "all") }} 的结果为true。 |
removeprefix(value, prefix) | 移除字符串的前缀。 | 支持 | {{ removeprefix("football", "foot") }} 的结果为ball。 |
removesuffix(value, suffix) | 移除字符串的后缀。 | 支持 | {{ removesuffix("football", "ball") }} 的结果为foot。 |
split(value, sep=None, maxsplit=-1) | 切割字符串。
| 支持 |
|
列表和对象函数
函数 | 说明 | 过滤器 | 示例 |
---|---|---|---|
enumerate(value) | 将一个可迭代的对象组合为一个索引序列,并列出原始元素和元素的下标。 | 不支持 | {{ enumerate(["foo", "bar"]) }} 的结果为[(0, 'foo'), (1, 'bar')]。 |
list(value) | 将一个可迭代的对象转换为列表类型。 | 支持 |
|
dict(value) | 创建一个字典,类似于直接使用{} 创建字典。 | 不支持 | {{ dict(foo=1, bar="hello") }} 的结果为{'foo': 1, 'bar': 'hello'}。 |
first(value) | 返回列表中的第一项。 | 支持 | {{ first([1, 2, 3]) }} 的结果为1。 |
last(value) | 返回列表中的最后一项。 | 支持 | {{ last([1, 2, 3]) }} 的结果为3。 |
sort(value, reverse=true) | 对列表中的元素进行排序。 通过reverse=true,可实现逆序排序。 | 支持 |
|
dictsort(value) | 将对象中的键值对(Key:Value)按照Key进行排序,返回数组。 | 支持 |
|
join(value, d='') | 使用连接符连接列表中的元素。 通过d参数,可指定连接符。 | 支持 |
|
格式化函数
函数 | 说明 | 过滤器 | 示例 |
---|---|---|---|
escape_markdown(value) | 转义特殊的Markdown字符。 | 支持 | {{ escape_markdown("__a__ **b** #c") }} 的结果为__a__ **b** #c 。 |
escape_html(value) | 转义特殊的HTML字符。 | 支持 | {{ escape_html("<div>") }} 的结果为<div> 。 |
to_json(value) | 将对象转为JSON格式。 | 支持 |
|
parse_json(value) | 将字符串解析为JSON数据结构。 | 支持 |
|
编码和解码函数
函数 | 说明 | 过滤器 | 示例 |
---|---|---|---|
base64_encoding(value) | 对输入值进行Base64编码。 | 支持 | {{ base64_encoding("foo") }} 的结果为Zm9v。 |
base64_decoding(value) | 对输入值进行Base64解码。 | 支持 | {{ base64_decoding("Zm9v") }} 的结果为foo。 |
md5_encoding(value) | 对输入值进行MD5编码。 | 支持 | {{ md5_encoding("foo") }} 的结果为acbd18db4cc2f85cedef654fccc4a4d8。 |
url_encoding(value) | 对输入值进行URL编码。 | 支持 | {{ url_encoding("https://example.com?a=b&c=d") }} 的结果为https%3A%2F%2Fexample.com%3Fa%3Db%26c%3Dd。 |
url_decoding(value) | 对输入值进行URL解码。 | 支持 | {{ url_decoding("https%3A%2F%2Fexample.com%3Fa%3Db%26c%3Dd") }} 的结果为https://example.com?a=b&c=d。 |
日期和时间函数
函数 | 说明 | 过滤器 | 示例 |
---|---|---|---|
parse_date(value, fmt="%Y-%m-%d %H:%M:%S") | 将输入值转为timestamp类型的日期和时间表达式。 通过fmt参数,可指定日期和时间表达式的格式。 | 支持 |
|
format_date(value, tz=None, fmt="%Y-%m-%d %H:%M:%S") | 将输入值进行格式化。 通过fmt参数,可指定日期和时间表达式的格式。 如果输入值不是日期对象,则函数会将其转换为日期对象,再进行格式化。关于日期时间格式化指令的更多信息,请参见日期时间格式化指令。关于时区列表的更多信息,请参见时区列表。 | 不支持 |
|
timestamp(value) | 将时间和日期字符串转换为Unix时间戳。 如果输入值不是日期对象,则函数会将其转换为日期对象,再进行格式化。 | 支持 |
|
format_duration(value, locale='en-US', sep='') | 格式化时间间隔。其中value的单位为秒。 通过locale参数,可指定文字的语言。locale参数的取值请参见告警业务函数locale取值。 | 支持 |
|
告警业务函数
告警业务函数是和告警上下文以及内容模板配置相关,可自动感知如下信息:
说明 在不同的告警上下文中执行告警业务函数时,返回的结果有可能不同。
- 告警属性,例如当前告警的严重度、状态等。
- 内容模板语言配置,例如是中文、英文。
- 通知渠道,例如钉钉、邮件等。
函数 | 说明 | 过滤器 | 示例 |
---|---|---|---|
format_type(alert.type, locale=None) | 将告警类型转换为文字描述。 通过locale参数,可指定文字的语言。locale参数的取值请参见告警业务函数locale取值。 | 支持 |
|
format_region(alert.region, locale=None) | 将告警所在地域转换为文字描述。 通过locale参数,可指定文字的语言。locale参数的取值请参见告警业务函数locale取值。 | 支持 |
|
format_severity(alert.severity, locale=None) | 将告警严重度转换为文字描述,且支持彩色字体。 说明 目前只有钉钉、企业微信、邮件和消息中心这四个渠道支持彩色文本。 通过locale参数,可指定文字的语言。locale参数的取值请参见告警业务函数locale取值。 | 支持 |
|
format_status(alert.status, locale=None) | 将告警状态转换为文字描述,且支持彩色字体。 说明 目前只有钉钉、企业微信、邮件和消息中心这四个渠道支持彩色文本。其他渠道时调用该函数会无改变。 通过locale参数,可指定文字的语言。locale参数的取值请参见告警业务函数locale取值。 | 支持 |
|
to_list(value) | 将数组或对象转换为列表。 | 支持 |
|
annotations_to_list(alert.annotations, locale=None) | 将告警标注转换为列表形式。类似于to_list(alert.annotations),区别在于annotations_to_list函数支持自动将标准名称转换为文字描述,例如将title字段转换为标题 或者Title 。标准名称列表,请参见告警标注字段映射。通过locale参数,可指定文字的语言。locale参数的取值请参见告警业务函数locale取值。 | 支持 |
|
blockquote(value) | 为通知内容添加引用样式。
| 支持 |
|
参考信息
- 告警业务函数中locale参数的取值
locale取值 说明 None或空字符串 使用内容模板中配置的语言。 en-US 英文。 zh-CN 中文。 - 告警标注字段映射
标注 映射值(中文) 映射值(英文) title 标题 Title desc 描述 Description anomaly_score 异常分数 Anomaly Score job_id 任务ID Task ID model_id 模型ID Model ID severity 异常严重度 Anomaly Severity __pub_alert_app__ 应用 Application __pub_alert_protocol__ 协议 Protocol __pub_alert_region__ 接入区域 Region __pub_alert_service__ 服务 Service __ensure_url__ 异常确认 Anomaly Confirmation __mismatch_url__ 误报确认 False Positive Confirmation __plot_image__ 时序图 Time Series Chart __host_ip__ 机器地址 Machine Address __host_group_name__ 机器组名称 Machine Group Name __cloud_monitor_type__ 阿里云云监控 CloudMonitor