Prometheusrelabel_config
Posted shark_西瓜甜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prometheusrelabel_config相关的知识,希望对你有一定的参考价值。
标签重新配置 relabel_config
# source labels 从现有标签(可以是已经配置的和动态已经生成的)中选择值。
# 使用配置的分隔符(默认 = )并与配置的正则表达式匹配到的内容进行连接,用于替换、保留和删除操作。
[ source_labels: '[' <labelname> [, ...] ']' ]
# 分隔符 放在内容和原标签之间
[ separator: <string> | default = ; ]
# 在替换操作中将结果值写入的标签。
# 对于替换操作,它是强制性的。Regex捕获组($1,$2)是可以可用的
[ target_label: <labelname> ]
# 正则表达式 与提取的内容相匹配,一般是 source_labels
# 书写的正则表达是需要是 .*<regex>.* 的方式,就是两头必须都有 .*,或者使用单引号引起来 '<regex>'
[ regex: <regex> | default = (.*) ]
# 替换
# 如果正则表达式匹配,则对其执行正则表达式替换。Regex捕获组可用。
# 这个是默认行为,如果需要替换为其他值,可以使用这个配置去指定。
# 一般替换的值是给 target_label,可以用于创建新标签。
[ replacement: <string> | default = $1 ]
# 动作
# 基于正则表达式匹配执行的动作
[ action: <relabel_action> | default = replace ]
relabel_action 有:
- replace: 替换 这个是默认动作,其行为是将 regex 从source_labels 匹配的内容进行替换. 替换的值存放在replacement ,正则匹配到的组可以引用 (比如 $1, $2, …)。
最终 replacement 值会赋值给 target_label。如果regex 不匹配,则不进行替换。 - lowercase: 将连接的source_labels 映射到它们的小写字母。
- uppercase: 将连接的source_labels 映射它们的大写字母。
- keep: 删除regex与连接不匹配的目标 source_labels,让Prometheus丢弃没有匹配到regex的target.
- drop: 删除regex与连接匹配的目标 source_labels,让Prometheus丢弃匹配到regex的target
- labelmap: 匹配regex所有标签名称,并将捕获的内容分组,用第一个分组内容作为新的标签名(使用正则提取出多个字段,使用匹配到的作为新标签名,但是标签的内容不会改变,相对于对原有标签换了个名字,原标签仍然存在)
- labeldrop:将正则表达式与所有标签名称匹配。任何匹配的标签都将从标签集中删除
labelkeep:将正则表达式与所有标签名称匹配。任何不匹配的标签都将从标签集中删除
实战分析
static_configs:
- targets:
- getway=192.168.0.39:8766
- a=192.168.0.39:6060
- b=192.168.0.39:6130
- c=127.0.0.1:6130
relabel_configs:
- source_labels: [__address__]
regex: '([a-z]+)=.*'
target_label: server_name
- source_labels: [__address__]
regex: '[a-z]+=(.*)'
target_label: server_addr
- source_labels: [server_addr]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.168.0.39:9115
__address__
是targets 中的值,比如 getway=192.168.0.39:8766
- source_labels: [__address__]
regex: '([a-z]+)=.*'
target_label: server_name
上面的意思是使用 regex 指定的正则表达式 '([a-z]+)=.*'
和 __address__
的值进行匹配,并且进行了分组。
之后把分组 $1 的内容赋值给新的标签 server_name
- source_labels: [__address__]
regex: '[a-z]+=(.*)'
target_label: server_addr
上面的意思是把匹配到的分组内容 $1 分配给新的标签 server_addr
- source_labels: [server_addr] # 192.168.0.39:8766
target_label: __param_target # 192.168.0.39:8766
上面的意思是把 server_addr 标签的内容赋值给 Prometheus 内置标签 __param_target
实际会映射到 Prometheus 的配置文件中为如下内容
- job_name: "java-tcp"
scrape_interval: 5s
metrics_path: /probe
params:
target:
- 192.168.0.39:8766 # server_addr 的值
- source_labels: [__param_target]
target_label: instance
上面的意思是 把内置标签 __param_target
的值赋值个标签 instance
- target_label: __address__
replacement: 192.168.0.39:9115
上面的意思是把 replacement
的值 192.168.0.39:9115
赋值给Prometheus 内置的标签 __address__
这里的场景是 192.168.0.39:9115 为黑盒监控的监听地址。
以上是关于Prometheusrelabel_config的主要内容,如果未能解决你的问题,请参考以下文章