You need to enable JavaScript to run this app.
导航
告警通知内容常见问题
最近更新时间:2024.11.08 10:53:41首次发布时间:2024.02.27 14:23:41

告警通知内容中包含特殊字符,如何处理?

当告警通知内容中包含特殊字符导致告警通知发生失败时,您可以在告警通知内容的变量中添加过滤器{{变量|escapejs}}。日志服务会根据该配置,将指定字符串或指定变量中的特殊字符转换为 Unicode 编码的字符串。详细说明请参考过滤器

说明

飞书、钉钉或企业微信收到告警通知后,会重新将 Unicode 编码的字符串转换为特殊字符。

例如您在告警策略中设置了如下包含特殊字符的通知内容,并在内容模板中引用了该内容(对应的变量名为{{NotifyMsg}}),则您可以使用如下变量和过滤器对特殊字符进行 Unicode 转码。

  • 告警策略中的通知内容

    {
     "projectname":"test1",
     "description":"测试",
     "region": "cn-north-1"
    }
    
  • 内容模板中的变量配置

    原始通知内容: {{NotifyMsg|escapejs}}
    

如何避免告警通知内容中的特殊字符被转义?

日志服务发送告警时,会自动将内容变量替换为对应的实际值,如果实际值包含引号(")等特殊字符,则在使用 toJson、toPrettyJson 函数等部分场景下会被转义,使通知内容的可读性降低。针对该问题,您可以在对应的变量中添加过滤器{{变量|safe}},强制内容不被转义。详细说明请参考过滤器
例如{{FireResults}}变量的实际值为[{"cnt":1,"cnt_1":0}],当您使用{{toJson(FireResults)}}时,通知内容将被转义为[{&quote;cnt&quote;:1,&quote;cnt_1&quote;:0}]。为避免通知内容被转义,获取通知内容[{"cnt":1,"cnt_1":0}],您可以使用{{toJson(FireResults)|safe}}

如何避免告警通知内容被截断?

各个告警通知渠道都存在通知内容长度限制,当内容渲染后的通知内容长度超过限制时,超过限制部分会被截断。通知内容长度限制请参考创建内容模板
您可以使用 for 循环语句对数组和对象进行迭代操作,避免通知内容被截断。示例如下:

{%-for logs in QueryLog%}
{%- for log in logs%}
{{log.msg}}
{%endfor-%}
{%endfor-%}

如何在告警通知中引用触发告警的内容?

您可以在告警通知内容模板中添加变量 {{FireResults}}{{Results}},用于在告警通知中引用触发告警的详细内容。关于告警变量的详细说明,请参考内容变量。示例如下:

  • 检索分析结果
    Image
  • {{FireResults}} 变量示例
    • 内容模板

      触发告警的数据为{{toJson(FireResults)|escapejs}}
      
    • 告警通知
      Image

  • {{Results}}变量示例
    • 内容模板

      {{toJson(Results[0].RawResults)|escapejs}}
      
    • 告警通知
      Image

如何对通知内容进行格式化、数据运算等操作?

日志服务提供了丰富的内容语法内容函数,用于处理告警通知内容。您可以通过内容函数和内容语法对数据、文本、变量等内容进行格式化处理、自定义设计。