事件丢弃

概述

Event Drop 处理器是一个灵活的事件过滤工具,允许您根据自定义的逻辑条件来决定是否删除特定的告警事件。当标签过滤和属性过滤都无法满足您的需求时,可以使用此处理器实现更加复杂的过滤逻辑。

工作原理

Event Drop 处理器使用 Go Template 语法来编写判断逻辑:

  • 如果模板执行结果为 true,则删除该事件
  • 如果模板执行结果为 false 或其他值,则保留该事件

配置方法

1. 选择处理器类型

在告警规则配置页面中,选择 “Event Drop” 作为处理器类型。

2. 编写判断逻辑

在判断逻辑输入框中,使用 Go Template 语法编写您的过滤条件。

可用变量

在模板中,您可以使用以下预定义变量:

变量 描述 示例用法
$event 整个事件对象 $event.RuleName
$labels 事件的标签映射 $labels.instance
$value 触发值 $value

使用示例

示例1:根据标签值过滤

{{ if eq $labels.service "mon" }}true{{ else }}false{{ end }}

此配置会删除所有标签 service 为 “mon” 的事件。

示例2:根据触发值过滤

{{ if lt $value 10 }}true{{ else }}false{{ end }}

此配置会删除所有触发值小于 10 的事件。

示例3:根据实例名称过滤

{{ if hasPrefix $labels.instance "test-" }}true{{ else }}false{{ end }}

此配置会删除所有实例名称以 “test-” 开头的事件。

示例4:组合条件过滤

{{ if and (eq $labels.env "dev") (lt $value 5) }}true{{ else }}false{{ end }}

此配置会删除环境为 “dev” 且触发值小于 5 的事件。

常用模板函数

比较函数

  • eq: 等于 - {{ eq $value 100 }}
  • ne: 不等于 - {{ ne $labels.env "prod" }}
  • lt: 小于 - {{ lt $value 50 }}
  • le: 小于等于 - {{ le $value 50 }}
  • gt: 大于 - {{ gt $value 100 }}
  • ge: 大于等于 - {{ ge $value 100 }}

逻辑函数

  • and: 逻辑与 - {{ and (eq $labels.env "prod") (gt $value 100) }}
  • or: 逻辑或 - {{ or (eq $labels.env "dev") (eq $labels.env "test") }}
  • not: 逻辑非 - {{ not (eq $labels.env "prod") }}

字符串函数

  • hasPrefix: 前缀匹配 - {{ hasPrefix $labels.instance "web-" }}
  • hasSuffix: 后缀匹配 - {{ hasSuffix $labels.instance "-prod" }}
  • contains: 包含字符串 - {{ contains $labels.message "error" }}

测试功能

在配置完成后,您可以使用页面提供的测试功能来验证您的判断逻辑是否正确:

  1. 点击"测试"按钮
  2. 查看测试结果,确认是否符合预期
  3. 根据需要调整判断逻辑

常见问题

  1. 模板解析失败

    • 检查 Go Template 语法是否正确
    • 确认变量名拼写无误
  2. 模板执行失败

    • 检查是否使用了不存在的标签或属性
    • 确认数据类型是否匹配
  3. 事件未按预期删除

    • 确认模板返回值是否为字符串 “true”
    • 使用测试功能验证逻辑

调试建议

  1. 使用简单的条件开始测试
  2. 逐步增加复杂度
  3. 查看系统日志了解执行结果
  4. 利用测试功能验证逻辑正确性

通过合理使用 Event Drop 处理器,您可以实现精确的事件过滤,减少不必要的告警噪音,提高告警系统的效率。

常见问题

Q1:事件被 drop 后还能在哪查到?

A:被 drop 的事件完全丢弃,活跃告警 / 历史告警里都看不到。如果想保留审计痕迹,建议:

  • 不用 drop,改用屏蔽规则 — 屏蔽保留事件但不发通知,活跃告警里仍能看到;
  • 或者在 drop 之前先用事件抑制 — 抑制不丢,只是不发通知。

Q2:drop 和 mute 怎么选?

A:

  • drop:彻底不要这条事件 — 适合"测试环境的全部告警"、“已知冗余告警源"等永久过滤场景;
  • mute(屏蔽):临时压制 — 适合维护窗口期、已知问题处理期。

Q3:drop 是按事件标签过滤的吗?

A:是。在 drop 处理器里配置标签过滤条件(同事件标签重写的语法),命中条件的事件就被丢弃。

Q4:能基于查询动态决定是否 drop 吗?

A:本处理器只支持静态标签匹配。要做"查询数据库再决定是否丢"用 事件抑制(基于查询)

参考资料

更新时间 2025-03-12

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云