Event Relabel 事件处理器
概述
Relabel 事件处理器是 Nightingale 告警通知流程中对事件标签进行重新标记和处理的重要环节。该处理器的功能和在数据上报时对数据进行 relabel 类似,允许您对告警事件的标签进行各种操作,包括删除、保留、重命名、合并和修改标签值等。
主要功能
- 🏷️ 标签删除:删除不需要的标签(labeldrop)
- 🎯 标签保留:只保留指定的标签(labelkeep)
- 🔄 标签重命名:对标签key进行重命名(labelmap)
- 🔧 标签合并:根据已有标签构建新标签(replace)
- ✏️ 值修改:修改标签的value内容(replace)
使用步骤
1. 选择处理器类型
在告警规则配置页面,选择"处理器"类型为 Relabel。
2. 配置操作类型
根据需求选择合适的 Action:
- 删除标签:选择
labeldrop
- 保留标签:选择
labelkeep
- 重命名标签:选择
labelmap
- 修改/构建标签:选择
replace
3. 配置匹配条件
在 regex 字段中设置标签key的匹配条件,支持正则表达式。
4. 设置替换内容(如需要)
根据选择的操作类型,配置相应的 replacement、target_label 等参数。
5. 测试配置
保存配置后,新的告警事件将按照设置的规则进行标签处理。
使用场景与配置示例
场景 1:删除不需要的标签
如上图中的告警事件,有非常多的标签,如果有的标签我们不太关心想去掉,可以通过 labeldrop 操作,将这些标签 drop 掉,比如如果想删掉 listening_10 和 host 标签,可以配置如下:
配置参数:
- Action:
labeldrop
- Regex:
listening_10|host
保存之后,listening_10 和 host 会被删除。
场景 2:只保留指定的标签
如上图中的告警事件,有非常多的标签,如果只想保留我们关心的标签,可以通过 labelkeep 操作,比如我们只想保留 service、name 和 addr 标签,可以配置如下:
配置参数:
- Action:
labelkeep
- Regex:
service|^name$|addr
注意:name 这样写
^name$
是因为其他标签包含了name,进行严格匹配
保存之后,新的告警事件,只会保留 service|name|addr 三个标签。
场景 3:重命名标签key
如上图,想将 __name__
重命名为 name
,则可以使用如下配置:
配置参数:
- Action:
labelmap
- Regex:
__(name)__
- Replacement:
$1
或固定值name
新的 name 标签增加之后,之前的 __name__
标签还会保留,需要再配置一个 labeldrop 删除掉。
保存之后,新的告警事件,__name__
会改为 name。
场景 4:构建新的标签
如上图的告警事件,如果我们想构建一个包括了 ident+listening_10 内容的新标签,我们可以使用 replace 操作,将 ident+listening_10 合并到一起:
配置参数:
- Action:
replace
- Target_label:
addr
- Source_labels:
["ident", "listening_10"]
- Separator:
:
保存之后,新的告警事件,会有一个新的 addr 标签。
场景 5:修改标签的value
如上图,如果我们修改 addr 标签,将端口部分去掉,可以使用 replace 操作:
配置参数:
- Action:
replace
- Target_label:
addr
- Source_labels:
["addr"]
- Regex:
([^:]+):.*
- Replacement:
${1}
保存之后,新的告警事件,addr 中的端口会去掉。
常见使用场景
1. 标签清理
清理告警事件中的冗余标签,只保留业务关心的核心标签。
2. 标签标准化
统一标签命名规范,将不规范的标签key重命名为标准格式。
3. 环境区分
通过标签合并,构建包含环境信息的新标签,便于告警分类。
4. 敏感信息处理
去除或修改包含敏感信息的标签内容。
注意事项
- 🔍 正则表达式:所有匹配条件都支持正则表达式,确保语法正确
- 📋 操作顺序:多个relabel操作按配置顺序执行,注意操作间的依赖关系
- ⚠️ 标签保留:使用labelmap重命名标签时,原标签仍会保留,需额外配置labeldrop删除
- 🧪 充分测试:建议在生产环境使用前进行充分测试
- 📊 性能影响:复杂的正则表达式可能影响处理性能,建议优化匹配条件