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

引用方式

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

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

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

告警属性

变量说明数据类型取值示例引用示例
aliuidProject所属的阿里云账号ID。string117918634953****{{ alert.aliuid }}用户的告警规则已触发。
alert_instance_id告警触发的实例的ID。stringee16a8f435485f3f-5be6b81edc520-3d6****实例ID为{{ alert.alert_instance_id }}
alert_id告警规则ID,Project内唯一。stringalert-12345告警规则ID是{{ alert.alert_id }}
alert_name告警规则名称。string测试告警规则告警规则{{ alert.alert_name }}已经触发。
alert_type告警类型。
  • sls_alert:由告警监控规则触发的告警。
  • sls_pub:来自于开放告警的告警。
  • sls_ml:由智能巡检触发的告警。
stringsls_alert告警类型是{{ alert.alert_type }},格式化显示为{{ alert.alert_type | format_type }}
region地域。stringcn-hangzhou告警触发的地域为{{ alert.region }}
project告警规则所属Project。stringmy-project{{ alert.project }}项目中的告警规则已触发。
next_eval_interval下一次评估间隔,单位为秒。int300下一次评估时间为{{ alert.next_eval_interval }}秒后。
alert_time本次评估时间。int1616744734本次评估告警的时间为{{ alert.alert_time }},格式化显示为{{ alert.alert_time | format_date }}
fire_time首次触发时间。int1616059834告警首次触发时间为{{ alert.fire_time }},格式化显示为{{ alert.fire_time | format_date }}
status告警状态。
  • firing:触发告警。
  • resolved:恢复通知。
stringfiring告警状态为{{ alert.status }},格式化显示为{{ alert.status | format_status }}
resolve_time告警恢复时间。
  • 如果告警状态是firing,取值为0。
  • 如果告警状态是resolved,取值为具体恢复时间。
int0告警恢复的时间为{{ alert.resolve_time }},格式化显示为{{ alert.resolve_time | format_date }}
severity告警严重度。
  • 10:严重
  • 8:高
  • 6:中
  • 4:低
  • 2:仅报告
int10告警严重度为{{ 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 }};查询和分析语句为{{ alert.results[0].query }}
fire_results触发告警的数据,即集合操作后的数据,最多100条。

fire_results的值超过2 KB时,超出部分会被截断。

array
[{
    "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"
}]
告警触发时产生的数据为{{ alert.fire_results | to_json }}
fire_results_count触发告警的数据的总条数,可能多于100,例如笛卡尔积操作后的总条数。int3告警触发时产生的总数据条数为{{ alert.fire_results_count }}
condition触发告警的评估表达式。其中,以触发告警的值替换您所配置的变量,并使用中括号([ ])包裹。格式为Count:数量表达式;Condition:匹配表达式stringCount:[5] > 3;Condition:[example.com]=='example.com'告警评估表达式为{{ alert.condition }}
raw_condition原始的评估表达式,即变量未被替换为真实值的原始表达式。格式为Count:数量表达式;Condition:匹配表达式stringCount:__count__ > 3;Condition:host=='example.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告警关联的仪表盘名称。stringmydashboard告警关联的仪表盘名称为{{ alert.dashboard }}
alert_url告警的详细URL地址。stringhttps://sls.console.aliyun.com/lognext/project/test-xxxx/alert/alert-1617164106-940166告警URL为{{ alert.alert_url }}
query_url查询统计中第一个查询页面的URL地址。stringhttps://sls.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地址。stringhttps://sls.console.aliyun.com/lognext/project/test-xx/dashboard/internal-alert-analysis告警历史统计报表的URL地址为{{ alert.alert_history_dashboard_url }}
dashboard_url告警关联的仪表盘地址。stringhttps://sls.console.aliyun.com/next/project/myproject/dashboard/mydashboard告警关联的仪表盘地址为{{ alert.dashboard_url }}
fingerprint告警指纹。更多信息,请参见基于告警指纹去重string478325709134bc5c告警指纹为{{ alert.fingerprint }}
signin_url免登录控制台即可查看告警详情。更多信息,请参见免登录查看告警详情stringhttps://sls.console.aliyun.com/console/AlertAjax/slsSignIn.json?token=xxxx[查看详情]({{ alert.signin_url }})

Policy结构

policy变量中可引用的变量说明如下表所示。

变量说明数据类型取值示例
alert_policy_id告警策略ID。stringsls.test-alert
action_policy_id告警监控规则指定的行动策略ID,仅在告警策略使用动态行动策略时有用。stringsls.test-action
repeat_interval重复等待时间,仅在告警策略使用动态行动策略时有用。string4h

QueryData结构

results变量中可引用的变量说明如下表所示。

变量说明数据类型取值示例
store_type存储类型。
  • log:日志。
  • metric:时序数据。
  • meta:资源数据。
stringlog
region查询统计目标库所在地域。

存储类型为资源数据时,该变量值为空。

stringcn-hangzhou
project查询统计目标库所在Project。

存储类型为资源数据时,该变量值为空。

stringsls-test-alert
store查询统计中的目标库名称。stringtest-logstore
query查询语句。stringerror | select count(1) as cnt
start_time查询开始时间。

存储类型为资源数据时,该变量值为空。

int1616741485
end_time查询结束时间。

存储类型为资源数据时,该变量值为空。

int1616745085
raw_results实际查询内容,数组格式,最多100行。

raw_results的值超过2 KB时,超出部分会被截断。

array
[{
    "host": "example.com",
    "slbid": "slb-02",
    "status": "200"
}, {
    "host": "example.com",
    "slbid": "slb-01",
    "status": "200"
}]
raw_results_count实际查询数据的总条数,可能多于100。int20
fire_result告警触发内容中的第一条数据。告警触发结果集可能包含多条数据,该参数只返回第一条数据。map
{
    "host": "example.com",
    "slbid": "slb-02",
    "status": "200"
}
query_url查询的URL地址。

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

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

常见问题