如何在Prometheus 2.40的relabel_configs中提取FQDN主机名至新标签?
解决Prometheus从FQDN提取主机名到新标签的问题
正确的relabel配置
使用以下配置即可提取__address__中的主机名部分到instanceID标签:
- source_labels: [__address__] regex: ^([^.]+)\..* replacement: $1 target_label: instanceID
关键说明
- 你之前的正则无法生效的核心原因:Prometheus的
relabel_configs中,regex要求完全匹配source_labels拼接后的整个字符串。你写的^([^.]+)这类正则只匹配了FQDN的开头部分,没有覆盖完整的字符串,导致匹配失败,无法生成新标签。 - 正则
^([^.]+)\..*的作用:^([^.]+):捕获第一个.之前的所有字符(即目标主机名xxx-xxx-xxx-xxx)\..*:匹配第一个.之后的所有剩余内容,确保整个FQDN字符串被完全匹配
- 必须添加
replacement: $1:指定用第一个捕获组的内容作为新标签的值,否则默认会使用整个匹配的原字符串,无法实现提取效果。
内容的提问来源于stack exchange,提问作者David J. Smith
相关产品推荐
相关产品推荐

