本文介绍新版内容模板的变量以及引用方式。
引用方式
-
引用变量时,变量名称必须完全匹配。
-
对于不存在的变量或者不合法的引用,系统默认替换为空字符串。
-
如果引用的值为对象类型,则会转换为JSON字符串。
-
-
模板的变量名称规则:大小写字母、数字、下划线,且不以数字开头。
-
如果模板变量名称符合标准规则,则可以通过
{{alert.xxx}}获取值。 -
如果模板变量名称不符合标准规则,例如变量名称为
__tag__:__namespace__,获取值的方法为{{alert.annotations["__tag__:__namespace__"] }}。
-
配置行动策略时必须选择内容模板,内容模板定义具体的发送内容和主题。您可以在发送内容和主题/标题中,通过{{ alert.xxx }}方式引用模板变量。日志服务发送告警通知时,会将发送内容和主题/标题中的模板变量替换为真实值,例如{{ alert.project }}替换为告警规则所属的Project名称。

除了直接引用变量外,您还可以通过控制流以及内置函数对变量进行操作和处理。具体的模板语法和内置函数请参见内容模板语法(新版)、内置模板函数。
告警属性
|
变量 |
说明 |
数据类型 |
取值示例 |
引用示例 |
|
aliuid |
Project所属的阿里云账号ID。 |
string |
117918634953**** |
|
|
alert_instance_id |
告警触发的实例的ID。 |
string |
ee16a8f435485f3f-5be6b81edc520-3d6**** |
实例ID为 |
|
alert_id |
告警规则ID,Project内唯一。 |
string |
alert-12345 |
告警规则ID是 |
|
alert_name |
告警规则名称。 |
string |
测试告警规则 |
告警规则 |
|
alert_type |
告警类型。
|
string |
sls_alert |
告警类型是 |
|
region |
地域。 |
string |
cn-hangzhou |
告警触发的地域为 |
|
project |
告警规则所属Project。 |
string |
my-project |
|
|
next_eval_interval |
下一次评估间隔,单位为秒。 |
int |
300 |
下一次评估时间为 |
|
alert_time |
本次评估时间。 |
int |
1616744734 |
本次评估告警的时间为 |
|
fire_time |
首次触发时间。 |
int |
1616059834 |
告警首次触发时间为 |
|
status |
告警状态。
|
string |
firing |
告警状态为 |
|
resolve_time |
告警恢复时间。
|
int |
0 |
告警恢复的时间为 |
|
severity |
告警严重度。
|
int |
10 |
告警严重度为 |
|
labels |
标签列表。 |
map |
{"env":"test"} |
告警标签为 |
|
annotations |
标注列表。 |
map |
{ "title": "告警标题","desc": "告警描述" } |
告警标注为 |
|
results |
查询参数和中间结果,数组类型。变量取值说明,请参见QueryData结构。 |
array |
参见本文末尾附录。 |
第一个查询的开始时间为 |
|
fire_results |
触发告警的数据,即集合操作后的数据,最多100条。 fire_results变量值超过2KB,并且查询结果字段内容的长度超过1KB时,超出部分会被截断。数据被截断处理方式请参见触发告警的日志太多,在告警通知中展示不完全时,如何处理? |
array |
参见本文末尾附录。 |
告警触发时产生的数据为 |
|
fire_results_count |
触发告警的数据的总条数,可能多于100,例如笛卡尔积操作后的总条数。 |
int |
3 |
告警触发时产生的总数据条数为 |
|
condition |
触发告警的评估表达式。其中,以触发告警的值替换您所配置的变量,并使用中括号([ ])包裹。格式为 |
string |
|
告警评估表达式为 |
|
raw_condition |
原始的评估表达式,即变量未被替换为真实值的原始表达式。格式为 |
string |
|
原始评估表达式为 |
|
policy |
告警策略或者行动策略。变量取值说明,请参见Policy结构。 |
map |
参见本文末尾附录。 |
告警策略ID为 |
|
dashboard |
告警关联的仪表盘名称。 |
string |
mydashboard |
告警关联的仪表盘名称为 |
|
alert_url |
告警的详细URL地址。 |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xxxx/alert/alert-1617164106-940166 |
告警URL为 |
|
query_url |
查询统计中第一个查询页面的URL地址。 |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xxx/logsearch/test-alert-access?encode=base64&endTime=1617175989&queryString=KiB8IHNlbGVjdCBjb3VudCgxKSBhcyBjbn****&queryTimeType=99&startTime=1617175089 |
查询统计中第一个查询页面的URL地址为 |
|
alert_history_dashboard_url |
告警历史统计报表的URL地址。 |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xx/dashboard/internal-alert-analysis |
告警历史统计报表的URL地址为 |
|
dashboard_url |
告警关联的仪表盘地址。 |
string |
https://sls.console.alibabacloud.com/next/project/myproject/dashboard/mydashboard |
告警关联的仪表盘地址为 |
|
fingerprint |
告警指纹。更多信息,请参见基于告警指纹去重。 |
string |
478325709134bc5c |
告警指纹为 |
|
signin_url |
免登录控制台即可查看告警详情。更多信息,请参见免登录查看告警详情。 |
string |
https://sls.console.alibabacloud.com/console/AlertAjax/slsSignIn.json?token=xxxx |
|
Policy结构
policy变量中可引用的变量说明如下表所示。
|
变量 |
说明 |
数据类型 |
取值示例 |
|
alert_policy_id |
告警策略ID。 |
string |
sls.test-alert |
|
action_policy_id |
告警监控规则指定的行动策略ID,仅在告警策略使用动态行动策略时有用。 |
string |
sls.test-action |
|
repeat_interval |
重复等待时间,仅在告警策略使用动态行动策略时有用。 |
string |
4h |
QueryData结构
results变量中可引用的变量说明如下表所示。
|
变量 |
说明 |
数据类型 |
取值示例 |
|
store_type |
存储类型。
|
string |
log |
|
region |
查询统计目标库所在地域。 存储类型为资源数据时,该变量值为空。 |
string |
cn-hangzhou |
|
project |
查询统计目标库所在Project。 存储类型为资源数据时,该变量值为空。 |
string |
sls-test-alert |
|
store |
查询统计中的目标库名称。 |
string |
test-LogStore |
|
query |
查询分析语句。 |
string |
error | select count(1) as cnt |
|
start_time |
查询开始时间。 存储类型为资源数据时,该变量值为空。 |
int |
1616741485 |
|
end_time |
查询结束时间。 存储类型为资源数据时,该变量值为空。 |
int |
1616745085 |
|
raw_results |
实际查询内容,数组格式,最多100行。 raw_results变量值超过2KB,并且查询结果字段内容的长度超过1KB时,超出部分会被截断。 |
array |
|
|
raw_results_count |
实际查询数据的总条数,可能多于100。 |
int |
20 |
|
fire_result |
告警触发内容中的第一条数据。告警触发结果集可能包含多条数据,该参数只返回第一条数据。 |
map |
|
|
query_url |
查询的URL地址。 存储类型为资源数据时,该变量值为空。 |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xxx/logsearch/test-alert-access?encode=base64&endTime=1617175989&queryString=KiB8IHNlbGVjdCBjb3VudCgxKSBhcy*******&queryTimeType=99&startTime=1617175089 |
|
dashboard_url |
查询关联的仪表盘地址。 |
string |
https://sls.console.alibabacloud.com/next/project/myproject/dashboard/mydashboard |
|
role_arn |
使用服务角色的ARN。 |
string |
acs:ram::117918634953****:role/aliyunslsalertmonitorrole |
常见问题
附录
-
results结构[{ "store_type": "log", "region": "cn-hangzhou", "project": "sls-alert-test", "store": "test", "query": "* | select count(1) as cnt", "start_time": 1616741485, "end_time": 1616745085, "dashboard_id": "mydashboard", "raw_results": [{ "cnt": "4" }], "raw_result_count": 1, "fire_result": { "cnt": "4" }, "truncated": false, "role_arn": "" }] -
fire_results结构[{ "host": "example.com", "host__1": "example.com", "pv": "836", "slbid": "slb-02", "status": "200" }, { "host": "example.com", "host__1": "example.com", "pv": "836", "slbid": "slb-02", "status": "200" }] -
policy结构{ "alert_policy_id": "sls.test-alert", "action_policy_id": "sls.test-action", "repeat_interval": "5m0s" }
示例
通过新版内容模板定义通知内容的示例如下:
告警内容
{ "alert_id": "test-alert", "alert_name": "PV/UV Alert", "project": "project-1", "status": "firing", "severity": 6, "labels": { "app": "nginx", "host": "host-1" }, "results": [ { "project": "project-1", "logstore": "logstore-1", "query": "* | select count(*) as pv" }, { "project": "project-2", "logstore": "logstore-2", "query": "* | select count(distinct user_id) as uv" } ] }内容模板配置
- Alert ID: {{ alert.alert_id }} - Alert Name: {{ alert.alert_name }} - Project: {{ alert.project }} - Status: {% if alert.status == "firing" %}FIRING{% else %}RESOLVED{% endif %} - Labels: {%- for key, val in alert.labels.items() %} - {{ key }}: {{ val }} {%- endfor %} - Query: {{ alert.results[0].query }}输出结果
- Alert ID: test-alert - Alert Name: PV/UV Alert - Project: project-1 - Status: FIRING - Labels: - app: nginx - host: host-1 - Query: * | select count(*) as pv