You need to enable JavaScript to run this app.
导航

内容变量

最近更新时间2024.04.19 11:08:49

首次发布时间2022.12.09 19:44:40

在配置告警通知内容时,除固定的文字内容字符串之外,还可以添加变量。本文档介绍变量的格式和支持的变量列表。

变量格式

告警通知内容中可直接引用内容变量,变量格式为{{变量名称}},变量必须被两个大括号{{ }}包裹。日志服务发送告警通知时,会自动将通知内容中的变量替换为对应的实际值。例如对于内容变量 {{AccountID}},日志服务会将其替换为当前告警策略所属的火山引擎账号 ID。
部分告警变量会被替换为包含引号等特殊字符的字符串,在使用 toJson、toPrettyJson 函数等部分场景下会被转义,使告警内容的可读性降低。如果发现通知内容中存在转义情况,则建议在对应的变量中添加 |safe,以实现强制不转义。例如 {{toJson(FireResults)}} 会被替换为转义后的字符串 [{&quote;cnt&quote;:1,&quote;cnt_1&quote;:0}]{{toJson(FireResults)|safe}} 会被替换为未转义的原文 [{"cnt":1,"cnt_1":0}]。详细说明请参考过滤器

说明

  • 变量名称区分大小写。在告警通知内容引用变量时,变量名称必须完全匹配变量列表中的变量一列。
  • 如果变量名称或格式不正确,日志服务会将其替换为空字符串。
  • 如果引用的值为对象类型,需要通过 toJson 或 toString 函数进行格式转换,或者使用 for 循环进行遍历,否则实际的返回内容可能不符合预期。
  • 如果引用的值为数组对象类型,支持以{{a[i][j].b}}格式获取数组对象中子字段的值,例如{{QueryResult[0][0].count}}

支持的内容变量

变量列表

日志服务告警通知内容中支持引用以下变量。

变量

类型

含义

示例

{{AccountID}}

String

告警策略所属的火山引擎账号 ID。

  • 配置示例:
    {{AccoutID}}账号中的告警已被触发。
  • 告警通知示例:
    20000****6账号中的告警已被触发。

{{UserName}}

String

告警策略所属的火山引擎账号的用户名。

说明

不推荐在飞书、钉钉、企业微信和自定义 Webhook 渠道的内容模板中使用该变量,因为在这些渠道中使用时,变量值为空。

  • 配置示例:
    {{UserName}}用户中的告警已被触发。
  • 告警通知示例:
    volcengine用户中的告警已被触发。

{{ProjectName}}

String

触发告警的日志项目。

  • 配置示例:
    日志项目{{ProjectName}}触发了告警。
  • 告警通知示例:
    日志项目http_module触发了告警。

{{AlarmTopicName}}

String

触发告警的日志主题。

  • 配置示例:
    日志主题{{AlarmTopicName}}触发了告警。
  • 告警通知示例:
    日志主题http_module触发了告警。

{{NotifyMsg}}

String

告警策略的通知内容中的原始内容被渲染后的内容。

说明

  • 仅支持在内容模板中使用该变量。
  • 不推荐在告警策略中的通知内容中使用该变量。
  • 告警恢复类型的告警通知不支持使用该变量。
  • 配置示例:
    告警通知内容:{{NotifyMsg|safe}}。
  • 告警策略中的通知内容示例:
    {{AccoutID}}账号下的日志主题{{AlarmTopicName}}触发了告警。
  • 告警通知示例:
    告警通知内容:20000****6账号下的日志主题http_module触发了告警。

{{Region}}

String

告警策略所属日志项目的所在地域。

  • 配置示例:
    {{Region}}地域下的告警策略{{Alarm}}已被触发。
  • 告警通知示例:
    cn-beijing地域下的告警策略超限报警已被触发。

{{Alarm}}

String

告警策略名称。

  • 配置示例:
    告警策略{{Alarm}}已被触发。
  • 告警通知示例:
    告警策略超限报警已被触发。

{{AlarmID}}

String

告警策略 ID。

  • 配置示例:
    告警策略{{AlarmID}}已被触发。
  • 告警通知示例:
    告警策略7070267f-30da-4861-8d0a-01f4bc6****已被触发。

{{ExecuteQuery}}

[]String

告警策略中配置的查询语句

  • 配置示例:
    当前告警策略的检索分析语句为{{toJson(ExecuteQuery)|safe}}。
  • 告警通知示例:
    当前告警策略的检索分析语句为 ["* | select RemoteAddr, pv from (select RemoteAddr, sum(case when ReqTime > 1000 then 1 else 0 end) as pv group by RemoteAddr) order by pv desc"]

{{Duration}}

String

告警的持续时间,单位为分钟。

  • 配置示例:
    告警的持续时间为{{Duration}}分钟。
  • 告警通知示例:
    告警的持续时间为3分钟。

{{Condition}}

String

告警策略中配置的触发条件

  • 配置示例:
    当前告警策略的触发条件为{{Condition}}。
  • 告警通知示例:
    当前告警策略的触发条件为$1.pv >= 3

{{HappenThreshold}}

Integer

告警策略中配置的发送告警周期

  • 配置示例:
    此告警策略持续{{HappenThreshold}}个监控周期满足触发条件,则发送告警。
  • 告警通知示例:
    此告警策略持续5个监控周期满足触发条件,则发送告警。

{{Topics}}

[]String

告警策略中配置的监控对象,即当前告警策略监控的所有日志主题。

  • 配置示例:
    监控的日志主题包括{{Topics|join:','}}。
  • 告警通知示例:
    监控的日志主题包括ycyc,abab

{{TopicIds}}

[]String

告警策略监控的所有日志主题的 ID。

  • 配置示例:
    监控的日志主题包括{{TopicIds|join:','}}。
  • 告警通知示例:
    监控的日志主题包括a573686e-d097-4227-9fa5-612d0ae2****,4a7796bd-76a5-45ec-880b-680c45cb****

{{StartTime}}

String

第一次触发告警的时间。

  • 配置示例:
    第一次触发告警的时间为{{StartTime}}。
  • 告警通知示例:
    第一次触发告警的时间为2022-12-09 20:43:16

{{StartTimeUnix}}

Integer

第一次触发告警的时间戳。格式为秒级 UNIX 时间戳。

  • 配置示例:
    第一次触发告警的时间戳为{{StartTimeUnix}}。
  • 告警通知示例:
    第一次触发告警的时间戳为1670589796

{{NotifyTime}}

String

本次告警通知的时间。

  • 配置示例:
    告警通知时间为{{NotifyTime}}。
  • 告警通知示例:
    告警通知时间为2022-12-09 20:43:16

{{NotifyTimeUnix}}

Integer

本次告警通知的时间戳。格式为秒级 UNIX 时间戳。

  • 配置示例:
    告警通知时间戳为{{NotifyTimeUnix}}。
  • 告警通知示例:
    告警通知时间戳为1670589796

{{NotifyType}}

Integer

告警通知类型。

  • 1:告警触发
  • 2:告警恢复
  • 配置示例:
    告警通知类型为{{NotifyType}}。
  • 告警通知示例:
    告警通知类型为1

{{Severity}}

String

告警策略中配置的告警级别,即告警的严重程度。

  • notice:通知。
  • warning:警告。
  • critical:严重。
  • 配置示例:
    告警级别为{{Severity}}。
  • 告警通知示例:
    告警级别为notice

{{ConsecutiveAlertNums}}

Integer

连续告警次数。

  • 配置示例:
    连续告警次数为{{ConsecutiveAlertNums}}。
  • 告警通知示例:
    连续告警次数为3

{{TriggerParams}}

[]String

告警触发时,触发条件中字段对应的实际值。

  • 配置示例:
    触发条件中字段的实际值为{{toJson(TriggerParams)|safe}}。
  • 告警通知示例:
    触发条件中字段的实际值为["$1.count=100"]

{{DetailUrl}}

String

告警策略的执行信息页面链接。详细说明请参考执行历史

说明

日志服务默认为 {{DetailUrl}} 添加过滤器 |safe,确保链接不做转义。即:

  • 使用 {{DetailUrl}}{{DetailUrl|safe}} 时,日志服务不会转义对应的链接。
  • 使用 {{DetailUrl|escape}} 时,日志服务会转义对应的链接。
  • 配置示例:
    请单击链接{{DetailUrl}}查看执行历史信息。
  • 告警通知示例:
    请单击链接https://console.volcengine.com/tls/region:tls+cn-beijing/project/a573686e-d097-4227-9fa5-612d0ae2****/alarms/7070267f-30da-4861-8d0a-01f4bc6d5****detail查看执行历史信息。

{{QueryUrl}}

String

告警策略中,第一个执行语句的检索分析页面链接。

说明

日志服务默认为 {{QueryUrl}} 添加过滤器 |safe,确保链接不做转义。即:

  • 使用 {{QueryUrl}}{{QueryUrl|safe}} 时,日志服务不会转义对应的链接。
  • 使用 {{QueryUrl|escape}} 时,日志服务会转义对应的链接。
  • 配置示例:
    日志检索详情:{{QueryUrl}}
  • 告警通知示例:
    日志检索详情:https://console.volcengine.com/tls/region:tls+cn-beijing/project/0abbb4ff-9eba-4079-af37-eec515e0****/search?topicId=&time=now-5m,now&codebase64=&hideTitle=false&hideTopic=false&hideIndexBtn=false&hideShareBtn=false

{{Message}}

String

在告警策略的通知内容中填写的原始内容。

  • 配置示例:
    原始通知内容:{{Message}}。
  • 告警策略中的通知内容示例:
    {{AccoutID}}账号下的{{AlarmTopicName}}触发了告警。
  • 告警通知示例:
    原始通知内容:{{AccoutID}}账号下的{{AlarmTopicName}}触发了告警。

{{QueryResult}}

[][]Object

触发告警时检索查询语句的执行结果。最多返回 10 行结果,总长度为 2KB。对象类型,建议通过 toJson 或 toString 进行格式转换。详细信息请参考 {{QueryResult}}

示例请参考QueryResult

{{QueryResultStr}}

[]String

以字符串数组形式返回 QueryResult 结果。
暂不支持下标访问,即不支持 {{QueryResultStr[0]}}

示例请参考QueryResult

{{QueryLog}}

[][]Object

执行语句中检索条件匹配到的原始日志信息,不包含分析语句中的过滤条件。对象类型,建议通过 toJson 或 toString 进行格式转换。最多返回 10 条原始日志,总长度为 2KB。详细信息请参考 QueryLog

示例请参考QueryLog

{{QueryLogStr}}

[]String

以字符串数组形式返回 QueryLog 结果。最多返回 10 条原始日志,长度为 2KB。
暂不支持下标访问,即不支持 {{QueryLogStr[0]}}

示例请参考QueryLog

{{QueryStartTime}}

Integer

告警策略中最后一条执行语句的起始时间,格式为秒级 Unix 时间戳。查看执行语句编号的方式请参考如何查看执行语句编号?

  • 配置示例:
    {{QueryStartTime}}
  • 告警通知示例:
    1699411640

{{QueryEndTime}}

Integer

告警策略中最后一条执行语句的结束时间,格式为秒级 Unix 时间戳。查看执行语句编号的方式请参考如何查看执行语句编号?

  • 配置示例:
    {{QueryEndTime}}
  • 告警通知示例:
    1699412200

{{Results}}

[]QueryData

查询参数和中间结果,数组类型,数组长度最大为 3。详细说明请参考 QueryData 结构

  • 配置示例:
    第一个查询的开始时间为{%set result0=Results[0]%}{{result0.StartTime}}结束时间为{{result0.EndTime}};count的值为{{result0.RawResultsCount}};查询和分析语句为{{result0.Query}}。RawResults:{{toJson(result0.RawResults)|safe}}, RawResultsCount:{{result0.RawResultsCount}},FireResult:{{toJson(result0.FireResult)|safe}}。
  • 告警通知示例:
    第一个查询的开始时间为1701676139结束时间为1701677039;count的值为1;查询和分析语句为*| select count(*) as cnt。RawResults:[{"cnt":"0"}], RawResultsCount:1,FireResult:{"cnt":"0"}

{{FireResults}}

[]Object

触发告警的数据,即集合操作后的结果,最多 100 条。FireResults 的实际长度超过 2KB 时,超限部分会被截断。

  • 配置示例:
    触发告警的数据为{{toJson(FireResults)|safe}}。
  • 告警通知示例:
    触发告警的数据为[{"cnt":"0"}]

{{FireResultsCount}}

Integer

触发告警的检索分析结果条数集合操作后的数据总量,可能多于 100。

  • 配置示例:
    告警触发时产生的总数据条数为{{FireResultsCount}}
  • 告警通知示例:
    告警触发时产生的总数据条数为 10

{{SignInUrl}}

String

告警详情页面链接,通过此链接可免登录查看告警的详细信息、变更处理人等相关操作。详细说明请参考免登录访问告警详情页面

说明

日志服务默认为 {{SignInUrl}} 添加过滤器 |safe,确保链接不做转义。即:

  • 使用 {{SignInUrl}}{{SignInUrl|safe}} 时,日志服务不会转义对应的链接。
  • 使用 {{SignInUrl|escape}} 时,日志服务会转义对应的链接。
  • 配置示例:
    单击{{SignInUrl}}查看告警详情。
  • 告警通知示例:
    单击https://console-embedded.volcanicengine.com/api/passport/login/loginWithSigninToken?signinToken=czVXb1M0djlpZ&redirectURI=%2Ftls%2Fregion%3Atls%2Bxxxxxxx查看告警详情。

QueryData 结构

Results 变量表示查询参数和中间结果。其中可引用的变量如下。

变量

数据类型

说明

示例

TopicId

String

检索分析的目标日志主题 ID。

fed25df2-cc27-4b0a-8ad2-773aef61****

Query

String

检索分析语句。

error

StartTime

Integer

查询开始时间,格式为 10 位的 Unixtime 时间戳。

1699411640

EndTime

Integer

查询结束时间,格式为 10 位的 Unixtime 时间戳。

1699412200

RawResults

[]Object

实际查询结果,数组格式,最多 100 行。RawResults 的实际长度超过 2KB 时,超出部分会被截断。

[{"cnt":"0"}]

RawResultsCount

Integer

实际查询数据的总条数,可能多于 100。

1

FireResult

Object

触发告警的日志内容。可能有多条原始日志触发了告警策略,此参数仅返回触发告警的第一条原始日志数据。

{"cnt":"0"}

QueryResult

变量说明
QueryResult 结构用于表示触发告警时查询语句的执行结果。您可以通过函数语法对其属性进行二次处理。该变量以对象类型返回,访问每一个属性时,应通过英文句号(.)指定其属性,例如{{log.name}}{{log.名称}}{{QueryResult[0][0].count}}

说明

  • 查询语句的执行结果还支持以 String 数组([]string)类型返回,若有相关需求,可以引用变量QueryResultStr
  • 最多返回 10 行结果,总长度为 2KB。

变量示例
例如告警策略配置的执行语句为 type:1 | select count(*) as count,对应的变量值为:

[
    [
        {
            "count": 1
        }
    ],
]

QueryLog

变量说明
QueryLog 结构用于表示执行语句中检索条件匹配到的原始日志信息,不包含分析语句中的过滤条件。QueryLog 变量以二维对象数组类型返回,访问每一个属性时,应通过英文句号(.)指定其属性,例如 {{log.name}}{{log.名称}}

说明

  • QueryLog 对应的原始日志也可以通过字符串数组形式返回,若有相关需求,可以引用变量 QueryLogStr
  • 最多返回 10 条原始日志,总长度为 2KB。

变量示例

  • 通知内容配置示例:

    {%-for logs in QueryLog%}
    {%- for log in logs%}
    {{log.name}}
    {{log.type}}
    {{log.double_key}}
    {{log.obj_key.key1}}
    {{log.obj_key.key2}}
    {{log.obj_key.key_long}}
    {{log.obj_key.key_double}}
    {%endfor-%}
    {%endfor-%}
    

    或者:

    {{toPrettyJson(QueryLog)}}
    
  • 渲染结果示例:

    [
      [
        {
          "double_key": 1.1,
          "name": "volcengine",
          "obj_key": {
            "key1": 1,
            "key2": "key2",
            "key_double": 1.1,
            "key_long": 123
          },
          "type": 1
        }
      ]
    ]
    

过滤器

日志服务告警变量支持添加过滤器,过滤器为链式调用,用于对变量数据进行二次处理。
变量过滤器的格式为 {{变量|过滤器}},例如 {{toJson(FireResults)}} 会被替换为转义后的字符串 [{&quote;cnt&quote;:1,&quote;cnt_1&quote;:0}]{{toJson(FireResults)|safe}} 表示直接输出 toJson(FireResults) 变量替换后的内容,强制不转义,所以告警通知中会输出未转义的原文 [{"cnt":1,"cnt_1":0}]

过滤器列表

过滤器

说明

示例

safe

原文输出数据,强制不转义。
部分告警变量会被替换为包含引号等特殊字符的字符串,在使用 toJson、toPrettyJson 函数等部分场景下会被转义,使告警内容的可读性降低。如果发现通知内容中存在转义情况,则建议在对应的变量位置添加 |safe,强制不转义。

  • 引用示例:
    {{"<script>"|safe}}
  • 处理结果:
    <script>

escape

对特殊字符进行自动转义。
如果收到的告警通知内容中,应被转义的特殊字符未被转义,可以使用此过滤器强制转义指定字符串或指定变量的所有输出内容。

  • 引用示例:
    {{"<script>"|escape}}
  • 处理结果:
    &lt;script&gt;

escapejs

对特殊字符进行 Unicode 编码。
如果告警通知内容中存在需要被 Unicode 编码的特殊字符 ,可以使用此过滤器对指定字符串或指定变量中的特殊字符进行 Unicode 编码。详细说明请参考告警通知内容中包含特殊字符,如何处理?

  • 引用示例:
    {{"<script> alert('hello')</script>"|escapejs|safe}}
  • 处理结果:
    \u003Cscript\u003E alert\u0028\u0027hello\u0027\u0029\u003C/script\u003E

过滤器示例

以下示例表示在告警通知中添加操作集合、操作集合数量、查询结果等信息,并在末尾添加免登录告警详情页面的链接。其中,查询结果部分会返回查询结果详情、日志主题 ID、查询检索语句等的详细信息。

操作集合:{{toJson(FireResults)|safe}}
操作集合数量: {{FireResultsCount}}
查询结果: {{replace("*","\\*",toJson(Results))|safe}}
        {%set result = Results[0]%}
        TopicId: {{result.TopicId}}
        Query: {{replace("*","\\*",result.Query)}}
        StartTime: {{result.StartTime}}
        EndTime: {{result.EndTime}}
        RawResults: {{toJson(result.RawResults)}}
        RawResultsCount: {{result.RawResultsCount}}
        FireResult: {{toJson(result.FireResult)}}
告警详情: {{SignInUrl}}