Prometheus如何从file_sd的address字段提取新标签并修改instance值
Prometheus file_sd 目标格式转换正确relabel配置
正确配置如下
relabel_configs: # 提取空格后的主机名作为hostname标签 - source_labels: [__address__] regex: '^(\S+)\s+(\S+)$' replacement: '${2}' target_label: hostname # 提取空格前的IP拼接9100端口,赋值给instance标签 - source_labels: [__address__] regex: '^(\S+)\s+(\S+)$' replacement: '${1}:9100' target_label: instance # 更新实际抓取地址为IP加9100端口,保证抓取正常 - source_labels: [__address__] regex: '^(\S+)\s+(\S+)$' replacement: '${1}:9100' target_label: __address__
原配置失效原因
- 正则表达式逻辑错误:
(.+)(.+)属于贪婪匹配,无法正确识别空格作为IP和主机名的分界,分组取值完全不符合预期 - 执行逻辑混乱:提前修改了
__address__和instance的值,还没提取主机名就把原始的ip hostname格式的原始值覆盖了,导致后续无法拿到主机名信息 - 重复赋值冲突:多次对同一个标签做赋值操作,后面的规则会覆盖前面的结果,最终输出值不符合预期
内容的提问来源于stack exchange,提问作者Disbalance
相关产品推荐
相关产品推荐

