跳到主要内容
版本:v1.7.x

告警阈值规则配置

提示

告警阈值规则是 HertzBeat 的核心功能,用户可以通过阈值规则来配置告警的触发条件。
阈值规则支持实时阈值和计划阈值,可应用于监控指标日志数据两种数据类型。实时阈值可以在监控数据采集时直接触发告警,计划阈值支持 PromQL、SQL 等表达式在指定时间段内计算触发告警。
支持可视化页面配置或更高灵活性的表达式规则配置,支持配置触发次数,告警级别,通知模板,关联指定监控等。通知模板已支持对象嵌套访问,可以更灵活地展示告警信息。

threshold

实时阈值

实时阈值是指在监控数据采集时直接触发告警,适用于对实时性要求较高的场景。支持监控指标和日志数据两种数据类型。

创建实时阈值规则

系统页面 -> 告警 -> 告警阈值 -> 新增阈值 -> 选择实时阈值 -> 选择数据类型(监控指标/日志数据)

监控指标实时阈值

配置阈值,例如: 选择SSL证书指标对象,配置告警表达式-当指标expiredtrue触发,即equals(expired,"true") , 设置告警级别通知模板信息等。

HertzBeat

配置项说明:

  • 阈值名称:定义此阈值规则的唯一名称
  • 数据类型:选择监控指标或日志数据
  • 指标对象:选择我们需要配置阈值的监控指标对象 例如:网站监控类型下的 -> 响应时间指标
  • 阈值规则:配置具体指标的告警触发规则,支持图形界面和表达式规则,表达式环境变量和操作符见页面提示。阈值表达式详细帮助见 阈值表达式帮助
  • 关联监控:应用此阈值规则到指定的监控对象(支持直接绑定和标签关联),若未配置,则应用到所有符合此阈值类型规则的监控对象上。
  • 告警级别:触发阈值的告警级别,从低到高依次为:警告-warning,严重-critical,紧急-emergency
  • 触发次数:设置触发阈值多少次之后才会真正的触发告警
  • 通知模板:告警触发后发送的通知信息模板,模板环境变量见页面提示,支持对象嵌套访问,例如:${__instancename__} ${__metric__} 指标的值为 ${responseTime},大于 50 触发告警,也可以访问对象属性如 ${log.attributes.hostname}
  • 附加标签:给此阈值规则附加标签,当产生告警时,此标签也会附加到告警上。
  • 附加声明:给此阈值规则附加声明信息(声明内容支持环境变量),当产生告警时,此声明信息会被渲染并附加到告警上。
  • 启用告警:此告警阈值配置开启生效或关闭

日志数据实时阈值

针对日志数据配置实时告警规则,支持对日志内容、属性、资源信息等进行条件判断。

例如,当 300s 内收到 60 次错误日志时触发告警。

log_realtime

配置项说明:

  • 阈值名称:定义此阈值规则的唯一名称
  • 数据类型:选择日志数据
  • 阈值规则:配置日志告警触发规则,支持图形界面和表达式规则:
    • 图形界面:可视化配置日志字段条件,支持 log.levellog.messagelog.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 的文档:

  1. 查询表达式: 引用监控数据

        cpu_usage
    memory{\__field\__="field1"}
  2. 比较表达式: 将值与阈值进行比较

        cpu_usage > 80
    memory_usage >= 90.5
    response_time < 1000
  3. 逻辑表达式: 组合多个条件

        cpu_usage > 80 and memory_usage > 70
    disk_usage > 90 or inode_usage > 85
    cpu_usage > 80 unless maintenance_mode == 1
  4. 括号表达式: 控制求值顺序

        (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,当满足该表达式时触发告警。

threshold

配置项说明:

  • 规则名称:用于唯一标识该阈值规则的名称
  • 数据类型:选择监控指标
  • 查询语言:选择 PromQL 作为查询语言
  • 阈值表达式:用于定义告警条件的 PromQL 表达式,系统会按照"执行周期"定期对其进行评估。表达式支持:
    • 查询标识符: 引用监控指标(如 cpu_usage, memory{instance="server1"}
    • 比较操作符: >, >=, <, <=, ==, !=
    • 逻辑操作符: and, or, unless
    • 括号: 用于分组和控制求值顺序
    • 数字字面量: 阈值(如 80, 90.5
  • 执行周期:表达式的执行时间间隔,单位为秒。例如 300 表示每 5 分钟评估一次表达式
  • 告警级别:设定当触发告警时的严重程度,包括:warning(警告)、critical(严重)、emergency(紧急)
  • 触发次数:表达式连续满足告警条件的次数,超过该次数后才实际触发告警
  • 通知模板:当告警被触发后发送的通知内容模板,支持对象嵌套访问,页面上提供了可用的模板变量供参考
  • 附加标签:给此阈值规则附加标签,当产生告警时,此标签也会附加到告警上
  • 附加声明:给此阈值规则附加声明信息(声明内容支持环境变量),当产生告警时,此声明信息会被渲染并附加到告警上
  • 启用告警:用于控制该阈值规则是否启用

日志数据计划阈值

针对日志数据配置计划阈值,通过 SQL 查询对日志进行聚合分析和告警判断。

threshold

配置项说明:

  • 规则名称:用于唯一标识该阈值规则的名称
  • 数据类型:选择日志数据
  • 查询语言:选择 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__}
  • 附加标签:给此阈值规则附加标签,当产生告警时,此标签也会附加到告警上
  • 附加声明:给此阈值规则附加声明信息(声明内容支持环境变量),当产生告警时,此声明信息会被渲染并附加到告警上
  • 启用告警:用于控制该阈值规则是否启用

阈值规则配置完成后,成功触发的告警将显示在【告警中心】中。 如需通过邮件、企业微信、钉钉、飞书等方式发送告警通知,请前往【通知配置】中进行设置。