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

内容变量

最近更新时间2024.02.05 17:03:16

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

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

变量格式

告警通知内容中可直接引用内容变量,变量格式为{{xxxx}},变量必须被两个大括号包裹。日志服务根据告警策略发送告警通知时,会自动将通知内容中的变量替换为对应的实际值。例如对于内容变量 {{ 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 循环进行遍历,否则实际的返回内容可能不符合预期。

支持的内容变量

变量列表

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

变量

类型

含义

示例

{{AccountID}}

String

火山引擎账号 ID。

  • 配置示例:
    用户{{AccoutID}}账号触发了告警规则。
  • 告警通知示例:
    用户20000****6账号触发了告警规则。

{{UserName}}

String

火山引擎账号的用户名。

说明

  • 不推荐用于自定义接口回调渠道的请求体中。
  • 选择自定义接口回调渠道时,该变量值为空。
  • 配置示例:
    用户{{UserName}}账号触发了告警规则。
  • 告警通知示例:
    用户volcengine账号触发了告警规则。

{{ProjectName}}

String

触发告警的 Project 名称。

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

{{AlarmTopicName}}

String

触发告警的 Topic 名称。

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

{{NotifyMsg}}

String

告警策略中配置的通知内容

说明

  • 该变量仅用于自定义接口回调渠道的请求体中,表示引用通知内容字段。
  • 告警恢复类型的告警通知不支持使用该字段。
  • 配置示例:
    告警通知内容:{{NotifyMsg|safe}}。
  • 告警通知示例:
    告警通知内容:用户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}}个监控周期满足触发条件。
  • 告警通知示例:
    监控的日志主题包括ycyc,abab。

{{Topics}}

[]String

告警策略中配置的所有日志主题名称。

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

{{TopicIds}}

[]String

告警策略中配置的所有日志主题 ID。

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

{{StartTime}}

String

第一次触发告警的时间。

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

{{StartTimeUnix}}

Integer

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

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

{{NotifyTime}}

String

本次告警通知的时间。

  • 配置示例:

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

{{NotifyTimeUnix}}

Integer

本次告警通知的时间戳。格式为 10 位的 UNIX 时间戳。

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

{{NotifyType}}

Integer

告警通知类型。

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

{{Severity}}

String

告警级别,即告警的严重程度。包括 noticewarningcritical,严重程度递增。

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

{{ConsecutiveAlertNums}}

Integer

连续告警次数。

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

{{TriggerParams}}

[]String

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

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

{{DetailUrl}}

String

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

  • 配置示例:
    执行历史信息请单击链接{{DetailUrl|safe}}查看。
  • 告警通知示例:
    执行历史信息请单击链接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}}
  • 告警通知示例:
    日志检索详情: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}}。
  • 告警通知示例:
    原始通知内容:原始通知内容:{{Message}}。

{{QueryResult}}

[][]Object

表示触发告警时查询语句的执行结果。对象类型,建议通过 toJson 或 toString进行格式转换。详细信息请参考 {{QueryResult}}

示例请参考QueryResult

{{QueryResultStr}}

[]String

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

示例请参考QueryResult

{{QueryLog}}

[][]Object

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

示例请参考QueryLog

{{QueryLogStr}}

[]String

以字符串数组形式返回 QueryLog 结果。最多返回 10 条原始日志。
暂不支持下标访问,即不支持 {{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}}查看告警详情。
  • 告警通知示例:
    单击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}}

说明

查询语句的执行结果也可以以 String 数组([]string)类型返回,若有相关需求,可以引用变量 QueryResultStr

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

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

QueryLog

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

说明

  • 使用变量 QueryLog 前,应确保检索中涉及到的字段均已开启键值索引统计。配置方式请参考设置索引
  • QueryLog 对应的原始日志信息也可以通过字符串数组形式返回,若有相关需求,可以引用变量 QueryLogStr
  • 最多返回 10 条原始日志。

变量示例

  • 通知内容配置示例:

    {%-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|safe}}