日志服务 配置告警策略

基于日志或指标配置告警策略,在出现符合特定条件的日志或指标时发送告警,例如 error 日志数量过多、接口响应时间过长等。

相关产品
日志服务 产品页,含版本规格、价格与购买入口。

一、前提条件

·数据已上传到日志或指标主题。

·日志主题已 配置索引,且不支持 低频存储。

二、操作步骤

登录日志服务控制台,并进入 告警策略 管理页面,在左上角单击新建,配置如下主要信息。

三、1. 基本信息

·告警名称:字符长度为1至255个字符。

·启用状态:是否启用当前告警策略,告警策略不启用时不产生任何告警及通知。

·标签:为当前创建的告警策略设定标签,便于从不同维度对资源分类管理。

·配置方式:

·自定义配置:手动指定需要监控的日志主题、查询语句及触发条件,灵活度高,配置略复杂。这篇档后续将详细介绍该配置方式。

·模板配置:使用预置模板创建告警策略,无需手动编写查询语句及触发条件,配置简单。目前仅支持容器服务 TKE 的审计日志和事件日志,后续将继续支持更多云产品日志。详见 告警策略模板。

四、2. 监控对象

选择需要监控的日志或指标主题,支持两种选择方式:

·所有执行语句使用相同的监控对象(默认):支持多选,最多可选择20个主题,不支持跨地域。每个主题单独判断是否满足触发条件,同时有多个主题满足触发条件时将同时产生多条告警。

·在每个执行语句中单独选择监控对象:可为每个执行语句单独设置主题,单选,不支持跨地域。每个执行语句的结果合并在一起判断是否满足触发条件。例如A 主题错误日志数 + B 主题错误日志数 > 10时触发一条告警。

五、3. 监控任务

·执行语句:作用于日志或指标主题的查询语句,

日志主题指标主题

·执行语句:日志检索分析语句,详见 语法规则。

·例1:状态为 error 日志 status:error

·例2:统计域名 domain:aaa.com 的平均响应时间 domain:"aaa.com" | select avg(request_time) as Latency

·查询时间范围:最大时间范围为最近24小时。

执行语句:PromQL,详见 语法规则。

·例1:文件系统空间占用率大于 50% 时触发告警 filesystem_usage_pct > 0.5

·例2:最近5分钟 CPU 负载最大值大于 1 时触发告警 max_over_time(node_load1[5m]) > 1

·触发条件:满足触发条件时进行告警,支持“交互模式”及“语句模式”两种配置方式。

·交互模式:

·依次选择告警等级、执行语句、变量名称和比较方式,然后设定告警阈值。

·支持设定多个告警等级,满足条件时触发对应等级的告警,同时满足多个条件时将触发多个告警。可根据告警级别在通知渠道组中设定不同的通知规则,例如“紧急”告警使用电话进行通知,“警告”告警使用短信进行通知,“提醒”告警不通知。

·语句模式:

·告警等级:支持提醒、警告和紧急三种级别,满足条件时触发对应等级的告警,同时满足多个条件时将触发多个告警。

·表达式:语法规则参见 触发条件表达式。

·分组触发:是否需要使用分组触发功能。

·使用分组触发功能时,如果某一个执行语句有多条结果,将根据指定的分组字段对这多条结果进行分组,按组分别判断是否满足告警触发条件,满足触发条件的每个组分别单独触发告警。

·分组字段:从执行语句执行结果中选择需要作为分组依据的字段,至少选择1个字段。

·例如:

·执行语句:* | select avg(request_time) as request_time, domain group by domain order by request_time desc limit 5

·触发条件:$1.request_time > 5

·执行语句结果:

不使用分组触发使用分组触发

共触发一条告警:

domain request_time 执行结果
aaa.com 12.56 满足触发条件,共触发一条告警
bbb.com 9.45 
ccc.com 7.23 
ddd.com 5.21 
eee.com 4.78 不满足触发条件,不触发告警

以$1.domain作为分组字段,分为5组,组1~组4满足触发条件,各单独触发一条告警,共触发4条告警:

domain 分组结果 request_time 执行结果
aaa.com 组1 12.56 满足触发条件,单独触发一条告警
bbb.com 组2 9.45 满足触发条件,单独触发一条告警
ccc.com 组3 7.23 满足触发条件,单独触发一条告警
ddd.com 组4 5.21 满足触发条件,单独触发一条告警
eee.com 组5 4.78 不满足触发条件,不触发告警

·执行周期:监控任务的执行频率,提供如下两种周期配置方式:

周期配置方式 说明 示例
固定频率 按固定的时间间隔执行一次监控任务,支持1~1440分钟 每隔5分钟执行一次监控任务
固定时间 按固定的时间点执行一次监控任务,支持00:00~23:59 每天02:00点执行一次监控任务
Cron 表达式 按照 Cron 表达式 执行监控任务,最小粒度为分钟 */5 8-20 * * *每天的8点 – 20点,每5分钟执行一次监控任务

六、4. 多维分析

触发告警时,可通过多维分析对原始日志做进一步的分析,并将分析结果附加在告警通知中,以辅助定位告警原因。多维分析不会影响告警触发条件。

多维分析类型 说明
相关原始日志 获取符合执行语句检索条件的原始日志,可配置需要展示的日志字段、条数及展示形式。例如 error 日志过多触发告警时,在告警中查看对应的详细日志。
字段 TOP5 及占比统计 针对触发告警时间范围内的全部日志,按指定字段分组统计日志条数,获取前5项字段值及其占比。例如 error 日志过多触发告警时,日志对应的 Top5 URL、Top5 响应状态码等。
自定义检索分析 针对触发告警时间范围内的全部日志,执行自定义检索分析语句。
例1:通过* | select avg(timeCost) as time,URL group by URL获取每个接口请求耗时。
例2:通过status:>499获取错误日志。

七、5. 告警通知

·告警频率:

·持续周期:当持续满足触发条件达到一定次数(默认为1,有效值范围:1 – 10)以后才发送通知。

·间隔时间:上一次发送通知后,指定间隔时间内不再发送通知。例如,每15分钟告警一次,表示15分钟内最多只会收到一次告警通知。

·通知方式:

支持短信、邮件、电话、微信、企业微信、钉钉、飞书、自定义接口回调(webhook) 等通知方式,支持两种配置类型,二选一即可。

配置类型 说明 适用场景
日志服务通知渠道组 仅在日志服务中使用 仅关注日志监控告警,不关注腾讯云可观测平台其它类型(例如云产品监控)监控告警。需使用 告警认领与升级、告警屏蔽 功能。
可观测平台通知模板 在腾讯云可观测平台中创建并共用 需同时关注日志及腾讯云可观测平台其它类型(例如云产品监控)监控告警。需使用 值班表、电话通知轮询、告警消息投递到云函数(SCF) 功能。

·附加分类字段:

对告警进行分类。采用键值对的形式(key:value)进行配置,key 仅支持字母、数字及下划线,且需以字母开头。key 最多可配置50字符,value 最多可配置200字符。可在通知渠道组中根据该字段配置不同的通知规则,也可在附加通知内容及自定义接口回调中使用{{.Label}}引用该字段。

例如设置分类字段为 service:payService(代表当前告警对应的服务名称为 payService):

·在通知渠道组中配置通知规则,当 service 包含 payService 时将告警发送至对应的团队。

·在自定义接口回调配置中使用{{.Label}}或{{.Label.service}}获取该字段的值(分别为{"service":"payService"}、payService),第三方平台收到接口回调时即可识别出该告警对应的服务名称。

·附加通知内容:
在告警通知中额外增加一部分文字,使告警通知内容更加丰富,可使用 告警通知变量 动态生成。

八、执行周期与查询时间范围详细说明

日志服务在执行告警策略时会自动调度告警策略的实际执行时间,避免较多的告警策略集中在同一时刻执行而出现缓慢情况,因此告警策略的实际执行时间会在指定的告警执行周期基础上进行秒级别的变化。

例如12:00:00同时创建了两个告警策略,均为每分钟执行一次,但实际执行时间并不完全一致:

·第一个告警策略的实际执行时间为12:01:12、12:02:12、12:03:12、12:04:11、12:05:11…

·第二个告警策略的实际执行时间为12:01:27、12:02:27、12:03:27、12:04:27、12:05:27…

同时为了保证在自动调度的情况下,告警不遗漏,告警查询时间范围会自动取整并额外增加30秒查询延迟(数据上报一般会有10秒左右延迟,严格按实际时间执行告警时,很可能因为最新的数据尚未上报而出现告警遗漏,因此额外增加30秒查询延迟)。

例如告警策略每分钟执行一次,每次查询最近一分钟的数据,实际执行时间及对应的查询时间范围如下:

执行时间 查询时间范围
12:01:12 11:59:30 ~ 12:00:30
12:02:12 12:00:30 ~ 12:01:30
12:03:12 12:01:30 ~ 12:02:30
12:04:11 12:02:30 ~ 12:03:30
12:05:11 12:03:30 ~ 12:04:30

九、Cron 表达式

告警策略执行周期支持最小粒度为分钟的 Cron 表达式,由五个空格分隔的时间字段组成,每个字段代表一个时间单位。结构如下:

* * * * *

各字段含义如下:

·第1个字段:分钟(0 – 59)

·第2个字段:小时(0 – 23)

·第3个字段:日(1 – 31)

·第4个字段:月(1 – 12)

·第5个字段:星期(0 – 6)(星期天为0)

注意:在所有的地域中,Cron 表达式执行时区均为 UTC+8 时区。

表达式中可以使用一些特殊字符来表示更复杂的时间规则:

·*:表示匹配任意值。假如在分钟字段使用*,即表示每分钟都将执行一次。

·?:表示无指定字段,只能用在日和星期两个字段。

·-:表示匹配范围。例如在分钟字段使用5-20,表示在5分到20分钟之间,每分钟执行一次 。

·/:表示从起始时间开始执行,每隔固定时间执行一次。例如在分钟字段使用5/20,表示从5分开始,每隔20分钟执行一次,也即25分、45分各执行一次。

·,:表示列出枚举值。例如:在分钟字段使用5,20,表示在5分和20分各执行一次。

示例:

表达式 含义
0 12 * * * 每天中午12:00执行一次
15 10 * * * 每天上午10:15执行一次
* 14 * * * 每天的14:00 – 14:59时间段,每隔1分钟执行一次
0/5 14 * * * 每天的14:00 – 14:55时间段,每隔5分钟执行一次
0/5 14,18 * * * 每天的14:00 – 14:55,18:00 – 18:55,每隔5分钟执行一次
0-5 14 * * * 每天的14:00 – 14:05时间段,每隔1分钟执行一次
10,44 14 * 3 3 三月份每周三的下午14:10和14:44各执行一次
15 10 * * 1-5 每周周一至周五每天上午10:15执行一次

十、最佳实践

·按时间段分别设置告警触发条件

·使用同环比作为告警触发条件

·按日志所属服务将告警发送到不同的团队

赞 (0)
上一篇 5天前
下一篇 5天前