日志服务提供多样化的告警通知内容语法,例如特殊字符转义、变量的条件判断等,以便于您在高阶的使用场景中自定义设计告警通知的内容与显示样式,使告警通知的内容更加丰富和清晰。
日志服务在告警功能中提供内置的内容语法,支持针对告警通知的内容和样式进行自定义设计,满足多种场景下的通知内容定制化需求。在设计告警通知内容时,您应遵循本文中提及的内容语法,以便获得更优质的使用体验。
日志服务提供的语法如下:
类型 | 语法 | 说明 |
---|---|---|
基础语法支持 | 支持整数、浮点数、字符串、数组、字典等数据类型。 | |
分隔符用于分隔不同类型的对象。 | ||
支持算数操作等操作符。 | ||
操作 | 删除指定位置的空白符。 | |
参数或者逻辑比较表达式进行条件化判断。 | ||
通过 for 循环语句对数组和对象进行迭代操作。 | ||
使用 verbatim 标签对特殊语句进行转义。 | ||
通过注释语法在通知内容中插入注释信息。 | ||
通过 with 语句进行变量定义。 |
内容变量语法类似于 Python 语法,支持以下数据类型。
数据类型 | 说明 |
---|---|
数字 | 包含整型(Integer)和浮点型(Double),例如 1、3.1、-2 等。 |
字符串 | 所有字符串均需要被双引号( |
布尔值 | 支持布尔值,即 True 和 False。 |
空值 | None。 |
列表 | 支持列表类型。列表在不同编程语言中的叫法不同,例如数组、列表、Slice 等。例如 |
字典 | 支持字典类型。字典在不同编程语言中的叫法不同,例如对象、字典等。例如 |
分隔符用于分隔不同类型的对象,日志服务告警通知中支持的分隔符包括:
分隔符 | 使用场景 | 示例 |
---|---|---|
| 可用于变量或表达式中,是变量和表达式的基本格式。 |
|
| 用于控制语句。 |
|
| 用于在通知内容中插入注释信息,注释仅显示在告警策略的配置中,不会随通知内容发送给接受者。 |
|
日志服务告警通知中支持以下操作符。其中,算数和比较操作符通常只对数值类型的变量或常量生效。
类别 | 操作符 | 说明 |
---|---|---|
算数操作 |
| 加法 |
| 减法 | |
| 乘法 | |
| 除法,返回值是一个浮点数。 | |
| 取模 | |
比较操作 |
| 等于 |
| 不等于 | |
| 大于 | |
| 大于等于 | |
| 小于 | |
| 小于等于 | |
逻辑操作 |
| 且操作 |
| 或操作 | |
| 取反 | |
其它操作 |
| 用于判断是否包含,判断后返回 Boolean 类型的结果。
|
| 操作组合,例如: |
默认情况下,在被分隔符包裹的内容中:
{{ AccountID }}
等同于 {{AccountID}}
,在通知内容中该变量会被替换为实际的账号 ID。用户 {{AccountID}} 账号下的 {{Topics}} 触发了告警规则。
中,两个变量前后的空白符会被保留。-
)的方式清除多余的空白符。在分隔符开始或结束的地方添加一个连字符,用于清除该分隔符前面和后面所有紧连着的空白符。例如 {{ abc -}} 和 {{- xyz }}
的渲染结果为 abc和xyz
。{{-
或 {%-
-}}
或 -%}
说明
{{ "abc " }} {{- "xyz"}}
格式化后为 abc xyz
。-
)和分隔符之间不能插入空格,否则将作为普通字符处理。例如 {{- abc }}
中清除空白符语法有效,格式化之后为abc
;{{ - abc }}
中清除控制符操作无效,格式化之后为 -abc
。通知内容中,日志服务可以通过指定的 if 条件语句对参数或者逻辑比较表达式进行条件化判断,并根据判断结果进行动态的内容展示。
if
之后的传入普通变量或常量,表示对该值进行真值判断。其中以下字符将被日志服务判定为假,其它值则被判定为真:false
、数字 0
、空字符串 ""
if
之后传入逻辑比较表达式,表示按照比较结果进行判断。例如 {{ if ConsecutiveAlertNums >= 5 }}
用于判断连续告警次数在 5 次及以上。条件判断支持以下几种形式:
使用方式 | 示例 |
---|---|
if |
|
if-else |
|
if-elif |
|
if-elif-else |
|
If 嵌套 |
|
在告警通知中,日志服务支持通过 for 循环语句对数组和对象进行迭代操作。支持的迭代方式如下:
使用方式 | 示例 |
---|---|
数组迭代 |
|
数组迭代,包含下标访问 |
|
对象迭代 | 通过 for 循环将对象转为键值对(
|
嵌套循环 |
|
如果需要在告警通知内容中添加{{
等特殊字符串,且该字符串不应被作为分隔符或变量语法进行解析,在配置通知内容时,您需要对此类特殊字符串进行转义。使用 verbatim 标签包裹需要按照原始样式输出的内容即可。
例如,以下配置表示保留{% verbatim %}
和{% endverbatim %}
之间所有的内容。
{% verbatim %} {{ QueryResultStr }} {% endverbatim %}
转义并格式化后,输出结果如下:
{{ QueryResultStr }}
您可以通过注释语法在通知内容中插入注释信息,注释仅显示在告警策略的配置中,不会随通知内容发送给接收者。
注释类型 | 语法 | 示例 |
---|---|---|
单行注释 |
|
|
多行注释 |
|
|
通过 with 语句进行变量定义,语法格式如下:
{%with t=list("a","b")%} {%endwith%}
通过 set 关键词进行变量定义,语法格式如下:
{% set t=0 %}