事件标签重写

概述

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:删除不需要的标签

img

如上图中的告警事件,有非常多的标签,如果有的标签我们不太关心想去掉,可以通过 labeldrop 操作,将这些标签 drop 掉,比如如果想删掉 listening_10 和 host 标签,可以配置如下:

配置参数:

  • Action: labeldrop
  • Regex: listening_10|host

img

保存之后,listening_10 和 host 会被删除。

img

场景 2:只保留指定的标签

img

如上图中的告警事件,有非常多的标签,如果只想保留我们关心的标签,可以通过 labelkeep 操作,比如我们只想保留 service、name 和 addr 标签,可以配置如下:

配置参数:

  • Action: labelkeep
  • Regex: service|^name$|addr

注意:name 这样写 ^name$ 是因为其他标签包含了name,进行严格匹配

image-20240717112440461

保存之后,新的告警事件,只会保留 service|name|addr 三个标签。

image-20240717112033348

场景 3:重命名标签key

img

如上图,想将 __name__ 重命名为 name,则可以使用如下配置:

配置参数:

  • Action: labelmap
  • Regex: __(name)__
  • Replacement: $1 或固定值 name

新的 name 标签增加之后,之前的 __name__ 标签还会保留,需要再配置一个 labeldrop 删除掉。

img

保存之后,新的告警事件,__name__ 会改为 name。

img

场景 4:构建新的标签

img

如上图的告警事件,如果我们想构建一个包括了 ident+listening_10 内容的新标签,我们可以使用 replace 操作,将 ident+listening_10 合并到一起:

配置参数:

  • Action: replace
  • Target_label: addr
  • Source_labels: ["ident", "listening_10"]
  • Separator: :

img

保存之后,新的告警事件,会有一个新的 addr 标签。

img

场景 5:修改标签的value

img

如上图,如果我们修改 addr 标签,将端口部分去掉,可以使用 replace 操作:

配置参数:

  • Action: replace
  • Target_label: addr
  • Source_labels: ["addr"]
  • Regex: ([^:]+):.*
  • Replacement: ${1}

img

保存之后,新的告警事件,addr 中的端口会去掉。

img

常见使用场景

1. 标签清理

清理告警事件中的冗余标签,只保留业务关心的核心标签。

2. 标签标准化

统一标签命名规范,将不规范的标签key重命名为标准格式。

3. 环境区分

通过标签合并,构建包含环境信息的新标签,便于告警分类。

4. 敏感信息处理

去除或修改包含敏感信息的标签内容。

注意事项

  • 🔍 正则表达式:所有匹配条件都支持正则表达式,确保语法正确
  • 📋 操作顺序:多个relabel操作按配置顺序执行,注意操作间的依赖关系
  • ⚠️ 标签保留:使用labelmap重命名标签时,原标签仍会保留,需额外配置labeldrop删除
  • 🧪 充分测试:建议在生产环境使用前进行充分测试
  • 📊 性能影响:复杂的正则表达式可能影响处理性能,建议优化匹配条件

常见问题

Q1:配置了 Relabel 但告警事件标签没变,怎么排查?

A:按这个顺序:

  1. 匹配条件:regex 写错的概率最大 — 用 即时查询 看实际事件标签,对照正则匹配;
  2. 操作类型选错:labelmap 不删原标签,需要再配一个 labeldrop;
  3. 处理器顺序:在告警规则的"流水线配置"里,relabel 处理器需要在告警通知节点之前;
  4. 生效时机:Relabel 处理新触发的事件,已经存在的事件不会被回溯重写。

Q2:labelkeep 和 labeldrop 都用了,谁优先?

A:按处理器配置顺序执行。先 labeldrop 再 labelkeep 等于"先删一批,再只保留一批",最终留下交集。建议别同时用,选一个语义清晰的就行。

Q3:标签 value 含特殊字符(如 []{}、空格),正则怎么写?

A:

  • 在 regex 里对特殊字符转义\[\{\ (空格通常不用转);
  • 或者用更宽松的 .* 匹配;
  • ^$ 限定边界避免误匹配,如 ^name$(精确匹配 name)。

Q4:可以从其他标签的 value 提取部分字符串成为新标签吗?

A:可以 — 用 replace + 正则捕获组:

Action: replace
Source_labels: [original_label]
Regex: ^([a-z]+)-(\d+)$       # 捕获前缀和数字
Target_label: prefix
Replacement: ${1}              # 引用第 1 个捕获组

效果:original_label=web-01 → 新增 prefix=web 标签。

参考资料

更新时间 2025-03-12

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