本文介绍新版内容模板的变量以及引用方式。

引用方式

注意 引用变量时,变量名称必须完全匹配。对于不存在的变量或者不合法的引用,系统默认替换为空字符串。如果引用的值为对象类型,则会转换为JSON字符串。

配置行动策略时必须选择内容模板,内容模板定义具体的发送内容和主题。您可以在发送内容主题中,通过{{ alert.xxx }}方式引用模板变量。日志服务发送告警通知时,会将发送内容主题中的模板变量替换为真实值,例如{{ alert.project }}替换为告警规则所属的Project名称。

除了直接引用变量外,您还可以通过控制流以及内置函数对变量进行操作和处理。具体的模板语法和内置函数请参见内容模板语法(新版)内置模板函数

告警属性

变量 说明 数据类型 取值示例 引用示例
aliuid Project所属的阿里云账号ID。 string 1234567890 {{ alert.aliuid }}用户的告警规则已触发。
alert_instance_id 告警触发的实例的ID。 string ee16a8f435485f3f-5be6b81edc520-3d69233 实例ID为{{ alert.alert_instance_id }}
alert_id 告警规则ID,Project内唯一。 string alert-12345 告警规则ID是{{ alert.alert_id }}
alert_name 告警规则名称。 string 测试告警规则 告警规则{{ alert.alert_name }}已经触发。
alert_type 告警类型。
  • sls_alert:由告警监控规则触发的告警。
  • sls_pub:来自于开放告警的告警。
  • sls_ml:由智能巡检触发的告警。
string sls_alert 告警类型是{{ alert.alert_type }},格式化显示为{{ alert.alert_type | format_type }}
region 地域。 string cn-hangzhou 告警触发的地域为{{ alert.region }}
project 告警规则所属Project。 string my-project {{ alert.project }}项目中的告警规则已触发。
next_eval_interval 下一次评估间隔,单位为秒。 int 300 下一次评估时间为{{ alert.next_eval_interval }}秒后。
alert_time 本次评估时间。 int 1616744734 本次评估告警的时间为{{ alert.alert_time }},格式化显示为{{ alert.alert_time | format_date }}
fire_time 首次触发时间。 int 1616059834 告警首次触发时间为{{ alert.fire_time }},格式化显示为{{ alert.fire_time | format_date }}
status 告警状态。
  • firing:触发告警。
  • resolved:恢复通知。
string firing 告警状态为{{ alert.status }},格式化显示为{{ alert.status | format_status }}
resolve_time 告警恢复时间。
  • 如果告警状态是firing,取值为0。
  • 如果告警状态是resolved,取值为具体恢复时间。
int 0 告警恢复的时间为{{ alert.resolve_time }},格式化显示为{{ alert.resolve_time | format_date }}
severity 告警严重度。
  • 10:严重
  • 8:高
  • 6:中
  • 4:低
  • 2:仅报告
int 10 告警严重度为{{ alert.severity }},格式化显示为{{ alert.severity | format_severity }}
labels 标签列表。 map {"env":"test"} 告警标签为{{ alert.labels | to_list }}
annotations 标注列表。 map { "title": "告警标题","desc": "告警描述" } 告警标注为{{ alert.annotations | to_list }}
results 查询参数和中间结果,数组类型。变量取值说明,请参见QueryData结构 array
[{
    "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": ""
}]
第一个查询的开始时间为{{ alert.results[0].start_time }};结束时间为{{ alert.results[0].end_time }};count的值为{{ alert.results[0].fire_result.cnt }}
fire_results 触发告警的数据,即集合操作后的数据,最多100条。 array
[{
    "host": "www.xhu.mock.com",
    "host__1": "www.iks.mock.com",
    "pv": "836",
    "slbid": "slb-02",
    "status": "200"
}, {
    "host": "www.ykw.mock.com",
    "host__1": "www.iks.mock.com",
    "pv": "836",
    "slbid": "slb-02",
    "status": "200"
}]
告警触发时产生的数据为{{ alert.fire_results | to_json }}
fire_results_count 触发告警的数据的总条数,可能多于100,例如笛卡尔积操作后的总条数。 int 3 告警触发时产生的总数据条数为{{ alert.fire_results_count }}
condition 触发告警的评估表达式。其中,以触发告警的值替换您所配置的变量,并使用中括号([ ])包裹。格式为Count:数量表达式;Condition:匹配表达式 string Count:[5] > 3;Condition:[www.mro.mock.com]=='www.mro.mock.com' 告警评估表达式为{{ alert.condition }}
raw_condition 原始的评估表达式,即变量未被替换为真实值的原始表达式。格式为Count:数量表达式;Condition:匹配表达式 string Count:__count__ > 3;Condition:host=='www.mro.mock.com' 原始评估表达式为{{ alert.raw_condition }}
policy 告警策略或者行动策略。变量取值说明,请参见Policy结构 map
{
    "alert_policy_id": "sls.test-alert",
    "action_policy_id": "sls.test-action",
    "repeat_interval": "5m0s"
}
告警策略ID为{{ alert.policy.alert_policy_id }}
dashboard 告警关联的仪表盘名称。 string mydashboard 告警关联的仪表盘名称为{{ alert.dashboard }}
alert_url 告警的详细URL地址。 string https://sls.console.aliyun.com/lognext/project/test-xxxx/alert/alert-1617164106-940166 告警URL为{{ alert.alert_url }}
query_url 查询统计中第一个查询页面的URL地址。 string https://sls-stg.console.aliyun.com/lognext/project/test-xxx/logsearch/test-alert-access?encode=base64&endTime=1617175989&queryString=KiB8IHNlbGVjdCBjb3VudCgxKSBhcyBjbnQ%3D&queryTimeType=99&startTime=1617175089 查询统计中第一个查询页面的URL地址为{{ alert.query_url }}
alert_history_dashboard_url 告警历史统计报表的URL地址。 string https://sls.console.aliyun.com/lognext/project/test-xx/dashboard/internal-alert-analysis 告警历史统计报表的URL地址为{{ alert.alert_history_dashboard_url }}
dashboard_url 告警关联的仪表盘地址。 string https://sls.console.aliyun.com/next/project/myproject/dashboard/mydashboard 告警关联的仪表盘地址为{{ alert.dashboard_url }}
fingerprint 告警指纹。更多信息,请参见基于告警指纹去重 string 478325709134bc5c 告警指纹为{{ alert.fingerprint }}
signin_url 免登录控制台即可查看告警详情。更多信息,请参见免登录查看告警详情 string https://sls.console.aliyun.com/console/AlertAjax/slsSignIn.json?token=xxxx [查看详情]({{ alert.signin_url }})

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 存储类型。
  • log:日志。
  • metric:时序数据。
  • meta:资源数据。
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行。 array
[{
    "host": "www.zc.mock.com",
    "slbid": "slb-02",
    "status": "200"
}, {
    "host": "www.evi.mock.com",
    "slbid": "slb-01",
    "status": "200"
}]
raw_results_count 实际查询数据的总条数,可能多于100。 int 20
fire_result 告警触发内容中的第一条数据。告警触发结果集可能包含多条数据,该参数只返回第一条数据。 map
{
    "host": "www.zc.mock.com",
    "slbid": "slb-02",
    "status": "200"
}
query_url 查询的URL地址。

存储类型为资源数据时,该字段值为空。

string https://sls-stg.console.aliyun.com/lognext/project/test-xxx/logsearch/test-alert-access?encode=base64&endTime=1617175989&queryString=KiB8IHNlbGVjdCBjb3VudCgxKSBhcyBjbnQ%3D&queryTimeType=99&startTime=1617175089
dashboard_url 查询关联的仪表盘地址。 string https://sls.console.aliyun.com/next/project/myproject/dashboard/mydashboard
role_arn 使用服务角色。 string acs:ram::1234567890:role/aliyunslsalertmonitorrole