You need to enable JavaScript to run this app.
导航
告警
最近更新时间:2024.07.02 17:07:37首次发布时间:2024.02.27 14:23:41

本文介绍告警相关的问题排查方法。

为什么触发了告警,但是没收到告警通知?

触发告警后,告警接收人未收到通知。告警历史页面中有该告警策略对应的告警事件记录,您可以在其对应的操作列单击查看详情,页面会跳转到该告警策略的执行信息页面,其通知状态一栏中会显示发送失败部分发送成功

  • 可能原因
    • IAM 用户未在个人信息中配置手机号码或邮箱地址,或未通过手机号和邮箱验证。 您可以在通知组详情页面中,找到未收到告警通知的对象,并在其对应的接收渠道一列单击查看,如果该对象未通过安全验证,则会显示未配置
    • IAM 用户配置的手机号码或邮箱地址状态异常,无法正常通信。
    • 触发了消息中心某些渠道的流控限制,例如每个手机号码每分钟最多收到 10 条告警短信通知,详细的流控限制请参考使用限制
    • 告警通知内容过长。
    • 使用自定义 Webhook 渠道且在内容模板中插入了告警变量时,如果告警内容被解析为非 JSON 格式,将导致发送失败。
  • 处理建议
    • 检查 IAM 用户配置的安全手机和安全邮箱是否通过相关安全验证,且对应渠道正常触达。
    • 如果触发了流控限制,建议稍后重试。
    • 检查告警通知内容格式以及内容长度是否符合预期。各个渠道的通知内容格式及长度说明请参考创建内容模板

如何避免漏告警、误告警?

日志写入到查询期间存在低延时、索引构建存在低时间差,如果您在告警策略中配置查询时间范围和执行周期时未考虑上述时间差,可能导致告警监控任务的查询结果不准确,从而出现漏告警、误告警问题。
您可以通过扩大查询的时间范围来避免漏告警、误告警。详细说明,请参考告警监控任务时效性

为什么配置了多个触发条件,只有一个生效?

日志服务告警触发条件之间为或关系,检索分析结果按照触发条件的顺序逐条匹配,检索分析结果符合第一条触发条件后,不再匹配后面的触发条件。即您在添加多条触发条件时,需按照高级别到低级别的顺序配置。具体步骤请参考创建告警策略
图片

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

当告警通知内容中包含特殊字符导致告警通知发生失败时,您可以在告警通知内容的变量中添加过滤器{{变量|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}}

为什么告警触发时间与通知时间相差较大?

使用日志服务默认的内容通知模板时,触发时间取值为{{StartTime}},即表示第一次触发告警的时间。告警触发后,在下一个周期仍未恢复时,第二次告警通知中的触发时间仍为上一个周期中第一次触发告警的时间。如果告警一直未恢复,则告警触发时间不会更新,因此造成告警触发时间和通知时间相差较大。
图片

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

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

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

告警测试错误码

您在创建告警策略时,可通过告警测试预览告警通知以及验证告警策略配置的正确性。本文罗列了告警测试相关的错误码及其原因和解决方案。

错误码

错误信息

错误原因

解决方案

AlarmProjectNotExist

日志项目(%s)不存在

告警监控的日志项目被删除。

创建新的日志项目和日志主题,并上传日志,然后在新日志项目中重新创建告警策略。

AlarmParseSQLErr

告警执行语句%d解析失败:%s

您所填写的执行语句的语法错误。

执行语句对话框中,调试检索分析语句,直至预览到符合需求的分析结果。关于检索分析语句的说明请参考检索概述分析概述

AlarmParseTriggerConditionErr

告警触发条件%d解析失败:%s

您所填写的触发条件表达式的语法错误。

根据错误提示修改告警策略中的触发条件表达式。详细说明请参考触发条件表达式

AlarmNotifyGroupNotExist

通知组(%s)不存在

您所选择的通知组被删除。

重新创建通知组,并在告警策略中绑定新的通知组。

ErrAlarmUserDefineMsgParseErr

用户自定义通知内容解析失败:%s

您所填写的通知内容的语法错误。

根据错误提示修改告警策略中的通知内容。通知内容语法说明请参考内容变量内容语法内容函数

ErrAlarmWebhookBodyParseErr

通知组(%s)中第%d个webhook请求体解析失败:%s

您所填写的 WebHook 请求体语法错误。

根据错误提示修改 WebHook 请求体。

ErrAlarmCallWebhookErr

通知组(%s)中第%d个webhook地址错误

调用 WebHook 地址失败。

检查通知组中 WebHook 地址的可用性。

ErrAlarmContentTemplateParseErr

内容模版(%s)解析失败:%s

您所填写的内容模版的语法错误。

根据错误提示修改内容模板。详细说明请参考创建内容模板

ErrSendSmsMessageOutOfQuota

用户%s发送短信超出限额

指定的 IAM 用户的短信通知频率超出限额。

参考告警限制了解限额,并稍后重试。

ErrMobileNotVerified

用户%s电话未认证

指定的 IAM 用户在个人信息中配置的手机号码未通过验证。

安全设置页面完成安全手机验证。

ErrSendVmsMessageOutOfQuota

用户%s电话超出限额

指定的 IAM 用户的电话通知频率超出限额。

参考告警限制了解限额,并稍后重试。

ErrEmailNotVerified

用户%s邮箱未认证

指定的 IAM 用户在个人信息中配置的邮箱未完成认证。

安全设置页面完成安全邮箱验证。

ErrSendSmsFail

用户%s发送短信失败:%s

短信通知发送失败。

根据错误提示检查手机设置,并稍后重试。

ErrSendVmsFail

用户%s语音通知失败:%s

语音通知发送失败。

根据错误提示检查手机设置,并稍后重试。

ErrSendEmailFail

用户%s发送邮件失败:%s

邮件通知发送失败。

根据错误提示检查邮箱设置,并稍后重试。

ErrWebhookIntegrationNotExist

告警webhook集成(%s)不存在

您所配置的 WebHook 集成配置被删除。

重新创建 WebHook 集成配置,并在通知组中绑定新的 WebHook 集成配置。

ErrCallWebhookIntegration

告警webhook集成(%s)调用失败,错误码:%v,错误信息:%s

调用 WebHook 地址失败,HTTP 状态码显示成功,但是发送告警通知到飞书、钉钉、企业微信失败。

根据错误提示检查及修改 WebHook 集成配置,并稍后重试。

AlarmDefaultErr

告警测试失败,请稍后重试

无。

稍后重试。