alerts.read,创建或修改规则需要 alerts.manage。
规则类型
规则列表
规则 列出每条规则的数据源、触发条件、状态和最近评估时间。可以按规则、服务或数据源搜索,并在 全部、已启用 和 已停用 之间切换。
点击规则,或点击行中的 编辑,即可打开规则。
创建阈值规则
点击 新建规则 → 阈值规则 打开规则工作台。1
选择规则类型
选择 指标告警、日志告警、链路告警、APM 告警 或 RUM 告警。快速开始 中的预设会填入典型查询,例如 错误率过高、P95 延迟过高、错误日志激增 或 无数据告警。APM 告警和 RUM 告警选择服务或应用以及一项指标,而不是写查询;参见按 APM 指标告警与 RUM 告警。
2
填写基本信息
规则名称 用作事件标题,例如
api_high_error_rate。服务 把规则关联到某个服务,用于归属和跨信号上下文。说明 描述规则保护的内容。3
编写查询
设置 目标数据流、评估间隔(每 1、5 或 10 分钟)、查询语言(指标用 PromQL,其他用 SQL)和 查询。查询要返回一个数值:评估器读取第一行的第一列。可以按需填写按维度拆分。
4
设置触发条件
每一行是一个严重度:当结果 以运算符与 阈值 比较,并持续 若干分钟。添加级别 可以再加一行。命中的最高严重度生效,高严重度不能比低严重度更容易命中。分钟数会换算为评估次数。在下方设置 恢复条件 和 没有数据时。
6
测试规则
点击 测试规则。查询会在最近 6 小时的真实数据上运行,查询预览 绘制结果,并显示阈值线、当前值、预计触发次数、扫描行数和耗时。按维度拆分的规则会显示分成了多少组。
7
保存
创建前检查 必须全部通过:已填写名称、当前查询测试成功、阈值有效、Runbook URL 有效。然后点击 保存并启用,或点击 保存草稿 只保存不运行。
default 的升级策略。组织中没有这条策略时,开出的事件不会升级给任何人,请先创建它。参见默认策略。
按维度拆分
基于 SQL 或 PromQL 查询的定时规则可以按结果里的列拆分,例如按主机或服务。在规则工作台填写按维度拆分,或在创建规则时设置query.group_by。之后每组取值都像一条独立的规则。
每组返回一行,最严重的排在前面:
sum by (instance) (rate(http_requests_total{status=~"5.."}[5m])) 按 instance 拆分。结果有行却没有这个名字的列时,这一轮评估失败,什么都不改变。在规则工作台测试查询时会检查这些列。APM、RUM、实时与异常规则不能拆分。
恢复条件与没有数据
每条规则都要说清开着的事件什么时候恢复,以及一次评估没有值时算作什么。在规则工作台的恢复条件和没有数据时里设置,或在创建规则时设置trigger.recovery 和 trigger.no_data。
- **恢复阈值:**开着的事件要等值越过这条线才恢复,例如高于 90 触发的规则低于 80 才恢复。数值在阈值附近来回时,不会再反复触发、反复恢复。
- **恢复持续时间:**值要在健康的一侧保持这么久,事件才恢复。
- **没有数据时:**查询没有返回值,或按维度拆分的规则里某一组不在结果里。
实时规则不能设置这两项:计数一回落就恢复。
异常规则
异常规则在数值偏离其历史所预测的范围时触发,因此不需要固定阈值。点击 新建规则 → 异常检测规则。实时规则
实时规则在接入路径上运行,而不是按定时器运行。intake 节点接收的每条记录都会与所在数据流的实时规则匹配,匹配结果进入长度为period_secs 秒的滑动窗口。窗口内的匹配数达到触发条件时规则立即触发,计数不再满足条件时事件被解决。
创建规则会以
400 拒绝超出上述限制的实时规则。计数保存在每个 intake 节点的内存中,重启后从零开始。在分角色集群中,每个 intake 节点各自统计自己收到的记录,因此请按单个节点来确定阈值。