告警阈值规则配置
告警阈值规则是 HertzBeat
的核心功能,用户可以通过阈值规则来配置告警的触发条件。
阈值规则支持实时阈值和计划阈值,可应用于监控指标和日志数据两种数据类型。实时阈值可以在监控数据采集时直接触发告警,计划阈值支持 PromQL、SQL 等表达式在指定时间段内计算触发告警。
支持可视化页面配置或更高灵活性的表达式规则配置,支持配置触发次数,告警级别,通知模板,关联指定监控等。通知模板已支持对象嵌套访问,可以更灵活地展示告警信息。
实时阈值
实时阈值是指在监控数据采集时直接触发告警,适用于对实时性要求较高的场景。支持监控指标和日志数据两种数据类型。
创建实时阈值规则
系统页面 -> 告警 -> 告警阈值 -> 新增阈值 -> 选择实时阈值 -> 选择数据类型(监控指标/日志数据)
监控指标实时阈值
配置阈值,例如: 选择SSL证书指标对象,配置告警表达式-当指标expired
为true
触发,即equals(expired,"true")
, 设置告警级别通知模板信息等。
配置项说明:
- 阈值名称:定义此阈值规则的唯一名称
- 数据类型:选择监控指标或日志数据
- 指标对象:选择我们需要配置阈值的监控指标对象 例如:网站监控类型下的 -> 响应时间指标
- 阈值规则:配置具体指标的告警触发规则,支持图形界面和表达式规则,表达式环境变量和操作符见页面提示。阈值表达式详细帮助见 阈值表达式帮助
- 关联监控:应用此阈值规则到指定的监控对象(支持直接绑定和标签关联),若未配置,则应用到所有符合此阈值类型规则的监控对象上。
- 告警级别:触发阈值的告警级别,从低到高依次为:警告-warning,严重-critical,紧急-emergency
- 触发次数:设置触发阈值多少次之后才会真正的触发告警
- 通知模板:告警触发后发送的通知信息模板,模板环境变量见页面提示,支持对象嵌套访问,例如:
${__instancename__} ${__metric__} 指标的值为 ${responseTime},大于 50 触发告警
,也可以访问对象属性如${log.attributes.hostname}
- 附加标签:给此阈值规则附加标签,当产生告警时,此标签也会附加到告警上。
- 附加声明:给此阈值规则附加声明信息(声明内容支持环境变量),当产生告警时,此声明信息会被渲染并附加到告警上。
- 启用告警:此告警阈值配置开启生效或关闭
日志数据实时阈值
针对日志数据配置实时告警规则,支持对日志内容、属性、资源信息等进行条件判断。
例如,当 300s 内收到 60 次错误日志时触发告警。
配置项说明:
- 阈值名称:定义此阈值规则的唯一名称
- 数据类型:选择日志数据
- 阈值规则:配置日志告警触发规则,支持图形界面和表达式规则:
- 图形界面:可视化配置日志字段条件,支持
log.level
、log.message
、log.attributes.*
、log.resource.*
等字段 - 表达式规则:使用自定义表达式,支持对象嵌套访问,例如:
equals(log.level,"ERROR")
或contains(log.attributes.hostname,"server-01")
- 图形界面:可视化配置日志字段条件,支持
- 时间窗口:设置日志聚合的时间窗口,单位为秒,最小60秒。在此时间窗口内的日志会被聚合处理
- 告警级别:触发阈值的告警级别,从低到高依次为:警告-warning,严重-critical,紧急-emergency
- 告警模式:选择告警发送方式:
- 窗口组模式(group):将时间窗口内满足条件的所有日志作为一个告警发送
- 单条模式(individual):每条满足条件的日志都单独发送告警
- 触发次数:设置在时间窗口内满足条件的日志数量达到多少次后才触发告警
- 通知模板:告警触发后发送的通知信息模板,支持对象嵌套访问:
- 基本变量:
${__instancename__}
、${__alertname__}
等 - 日志字段:
${log.level}
、${log.message}
、${log.timestamp}
等 - 嵌套属性:
${log.attributes.hostname}
、${log.resource.service.name}
等
- 基本变量:
- 附加标签:给此阈值规则附加标签,当产生告警时,此标签也会附加到告警上
- 附加声明:给此阈值规则附加声明信息(声明内容支持环境变量),当产生告警时,此声明信息会被渲染并附加到告警上
- 启用告警:此告警阈值配置开启生效或关闭
阈值告警配置完毕,已经被成功触发的告警信息可以在【告警中心】看到。 若需要将告警信息邮件,微信,钉钉飞书通知给相关人员,可以在【消息通知】配置。
计划阈值
计划阈值规则是指系统按照设定的周期性时间间隔,执行一次表达式规则(如 PromQL、SQL),以判断指定时间范围内的监控数据或日志数据是否满足告警条件。这类规则适用于需要评估趋势或聚合数据的场景,而不是对单个实时数据点做出立即反应。支持监控指标和日志数据两种数据类型。
计划阈值表达式语法
计划阈值使用基于 ANTLR 语法的专用表达式语言,根据数据类型支持不同的查询语法:
监控指标表达式语法(PromQL)
支持 PromQL 风格的查询,具体语法请查询配置的时序数据库官网关于 PromQL 的文档:
查询表达式: 引用监控数据
cpu_usage
memory{\__field\__="field1"}比较表达式: 将值与阈值进行比较
cpu_usage > 80
memory_usage >= 90.5
response_time < 1000逻辑表达式: 组合多个条件
cpu_usage > 80 and memory_usage > 70
disk_usage > 90 or inode_usage > 85
cpu_usage > 80 unless maintenance_mode == 1括号表达式: 控制求值顺序
(cpu_usage > 80 or memory_usage > 90) and service_status == 1
日志数据表达式语法(SQL)
支持标准 SQL 语法查询日志数据并过滤数据,可以对日志表进行聚合查询:
-- 查询错误日志数量
SELECT COUNT(*) as error_count
FROM hertzbeat_logs
WHERE level = 'ERROR'
AND timestamp >= NOW() - INTERVAL 5 MINUTE
-- 按服务分组统计错误数
SELECT service_name, COUNT(*) as error_count
FROM hertzbeat_logs
WHERE level = 'ERROR'
GROUP BY service_name
HAVING COUNT(*) > 10
创建计划阈值规则
系统页面 -> 告警 -> 告警阈值 -> 新增阈值 -> 选择计划阈值 -> 选择数据类型(监控指标/日志数据)
监控指标计划阈值
针对监控指标配置计划阈值,例如:针对一组 CPU 指标,设定表达式 cpu_usage{instance="server1"} > 80
,当满足该表达式时触发告警。
配置项说明:
- 规则名称:用于唯一标识该阈值规则的名称
- 数据类型:选择监控指标
- 查询语言:选择 PromQL 作为查询语言
- 阈值表达式:用于定义告警条件的 PromQL 表达式,系统会按照"执行周期"定期对其进行评估。表达式支持:
- 查询标识符: 引用监控指标(如
cpu_usage
,memory{instance="server1"}
) - 比较操作符:
>
,>=
,<
,<=
,==
,!=
- 逻辑操作符:
and
,or
,unless
- 括号: 用于分组和控制求值顺序
- 数字字面量: 阈值(如
80
,90.5
)
- 查询标识符: 引用监控指标(如
- 执行周期:表达式的执行时间间隔,单位为秒。例如
300
表示每 5 分钟评估一次表达式 - 告警级别:设定当触发告警时的严重程度,包括:
warning
(警告)、critical
(严重)、emergency
(紧急) - 触发次数:表达式连续满足告警条件的次数,超过该次数后才实际触发告警
- 通知模板:当告警被触发后发送的通知内容模板,支持对象嵌套访问,页面上提供了可用的模板变量供参考
- 附加标签:给此阈值规则附加标签,当产生告警时,此标签也会附加到告警上
- 附加声明:给此阈值规则附加声明信息(声明内容支持环境变量),当产生告警时,此声明信息会被渲染并附加到告警上
- 启用告警:用于控制该阈值规则是否启用
日志数据计划阈值
针对日志数据配置计划阈值,通过 SQL 查询对日志进行聚合分析和告警判断。
配置项说明:
- 规则名称:用于唯一标识该阈值规则的名称
- 数据类型:选择日志数据
- 查询语言:选择 SQL 作为查询语言
- 日志查询表达式:使用标准 SQL 语法查询日志数据,支持聚合函数、分组、过滤等操作。例如:
SELECT COUNT(*) as error_count FROM hertzbeat_logs
WHERE level = 'ERROR' AND timestamp >= NOW() - INTERVAL 5 MINUTE
- 执行周期:SQL 查询的执行时间间隔,单位为秒。例如
300
表示每 5 分钟执行一次查询 - 告警级别:设定当触发告警时的严重程度,包括:
warning
(警告)、critical
(严重)、emergency
(紧急) - 告警模式:选择告警发送方式:
- 窗口组模式(group):将查询结果作为一个整体告警发送
- 单条模式(individual):查询结果中的每行数据都单独发送告警
- 触发次数:查询结果连续满足告警条件的次数,超过该次数后才实际触发告警
- 通知模板:当告警被触发后发送的通知内容模板,支持访问查询结果中的字段,例如:
- 查询结果字段:
${error_count}
、${service_name}
等 - 基本变量:
${__alertname__}
、${__severity__}
等
- 查询结果字段:
- 附加标签:给此阈值规则附加标签,当产生告警时,此标签也会附加到告警上
- 附加声明:给此阈值规则附加声明信息(声明内容支持环境变量),当产生告警时,此声明信息会被渲染并附加到告警上
- 启用告警:用于控制该阈值规则是否启用
阈值规则配置完成后,成功触发的告警将显示在【告警中心】中。 如需通过邮件、企业微信、钉钉、飞书等方式发送告警通知,请前往【通知配置】中进行设置。