夜莺-Nightingale
夜莺V7
项目介绍 功能概览
部署升级 部署升级
数据接入 数据接入
告警管理 告警管理
数据查看 数据查看
功能介绍 功能介绍
API FAQ
夜莺V6
项目介绍 架构介绍
快速开始 快速开始
黄埔营
安装部署 安装部署
升级
采集器 采集器
使用手册 使用手册
API API
数据库表结构 数据库表结构
FAQ FAQ
开源生态
Prometheus
版权声明
第1章:天降奇兵 第1章:天降奇兵
第2章:探索PromQL 第2章:探索PromQL
第3章:Prometheus告警处理 第3章:Prometheus告警处理
第4章:Exporter详解 第4章:Exporter详解
第5章:数据与可视化 第5章:数据与可视化
第6章:集群与高可用 第6章:集群与高可用
第7章:Prometheus服务发现 第7章:Prometheus服务发现
第8章:监控Kubernetes 第8章:监控Kubernetes
第9章:Prometheus Operator 第9章:Prometheus Operator
参考资料

告警抑制 by 查询(商业版)

概述

“按查询数据抑制”(Inhibit by Query Data)是一种高级的告警抑制机制。当告警触发时,系统会先执行配置的数据查询,根据查询结果决定是否抑制该告警:

  • 有查询结果:抑制告警,不发送通知
  • 无查询结果:正常发送告警通知

这种机制可以实现更加灵活和智能的告警抑制策略,避免在特定条件下产生冗余告警。

使用场景

场景一:基于实时状态的告警抑制

当某个服务正在维护或已知存在问题时,通过查询维护标记数据来抑制相关告警。

示例:如果监控系统中存在 maintenance_mode{service="app"} 指标且值为 1,则抑制该服务的所有告警。

场景二:依赖关系的级联抑制

当上游服务已经告警时,抑制下游服务的相关告警,避免告警风暴。

示例:数据库服务器已经产生告警时,抑制所有依赖该数据库的应用服务的连接失败告警。

场景三:动态阈值判断

结合实时查询数据,实现更复杂的抑制逻辑。

示例:仅当集群中其他节点正常运行时才抑制单节点告警,避免在全局故障时错误抑制。

配置说明

配置界面

配置界面截图

配置步骤

1. 选择抑制类型

在告警规则的抑制配置中,选择 “Inhibit by Query Data”(按查询数据抑制)类型。

2. 配置告警过滤条件

定义需要被抑制的告警必须满足的条件,支持两种过滤方式:

标签过滤

根据告警的标签(Labels)进行匹配。

  • 标签:选择或输入标签名称
  • 运算符:支持 ==(等于)、!=(不等于)、=~(正则匹配)、!~(正则不匹配)
  • 标签值:输入匹配的值

示例

标签: rulename
运算符: ==
标签值: 告警
属性过滤

根据告警的属性(Attributes)进行匹配

示例

属性: 业务组
运算符: ==
属性值: n9e

💡 提示:可以添加多个过滤条件,所有条件必须同时满足(AND 关系)。

3. 配置查询数据

设置需要执行的数据查询,当查询返回至少一条数据时,告警将被抑制。

查询

数据源类型

选择数据源类型,目前支持 Prometheus

数据源

选择具体的数据源实例。

查询配置
Prometheus 查询

在"内置指标"输入框中填写 PromQL 表达式。

支持模板变量

  • {{$labels.xxx}}:引用告警的标签值
  • {{$value}}:引用告警的触发值
  • {{$event}}:引用整个告警事件对象

示例

mem_active{ident="{{$labels.ident}}"}

该查询会查询与告警事件相同 ident 标签的 mem_active 指标,如果查询到数据,则抑制告警。

4. 保存配置

完成以上配置后,点击"保存"按钮使配置生效。

配置示例

示例 1:基于主机存活状态抑制告警

场景:当主机的 mem_active 指标有数据时(表示主机存活),抑制该主机的网络告警。

配置

  1. 标签过滤

    rulename == 网络告警
    
  2. 查询配置

    • 数据源类型:Prometheus
    • 数据源:prom
    • PromQL:mem_active{ident="{{$labels.ident}}"}

逻辑:如果能查询到该主机的内存活动指标,说明主机正常运行,此时的网络告警可能是误报,因此抑制。

示例 2:维护窗口期间抑制告警

场景:通过维护模式标记抑制正在维护的服务告警。

配置

  1. 标签过滤

    service == web-app
    
  2. 查询配置

    • 数据源类型:Prometheus
    • 数据源:prom
    • PromQL:maintenance_mode{service="{{$labels.service}}"} == 1

逻辑:如果该服务的维护模式标记为 1,则抑制所有相关告警。

注意事项

查询性能

  • 每次告警触发时都会执行查询,请确保查询语句性能良好
  • 避免使用复杂的聚合查询或大时间范围的查询

模板变量

  • 模板变量在查询执行时会被替换为实际值
  • 如果标签不存在,{{$labels.xxx}} 会被替换为空字符串
  • 建议在配置前确认告警事件包含所需的标签

过滤条件

  • 标签过滤和属性过滤是 AND 关系,必须全部满足

数据源可用性

  • 查询失败时,告警不会被抑制,会正常发送通知

最佳实践

  1. 先测试后上线:使用"测试"功能验证配置是否符合预期
  2. 合理使用属性过滤:利用属性过滤可以更精确地定位需要抑制的告警
  3. 避免过度抑制:确保抑制逻辑不会误杀重要告警
  4. 文档化配置:在规则备注中说明抑制逻辑,方便团队维护

常见问题

Q: 抑制的告警是否会保存到历史记录?

A: 被抑制的告警会保存到历史告警记录中。

Q: 如何调试查询配置?

A: 可以使用"测试"按钮模拟告警触发,查看查询执行结果和抑制判断逻辑。

Q: 查询超时会影响告警发送吗?

A: 不会。如果查询超时或失败,告警会正常发送,不会被抑制。

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat
Flashduty
Flashduty