prometheus relabel 配置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了prometheus relabel 配置相关的知识,希望对你有一定的参考价值。
relabel_config重新标记是一个功能强大的工具,可以在目标的标签集被抓取之前重写它,每个采集配置可以配置多个重写标签设置,并按照配置的顺序来应用于每个目标的标签集。
目标重新标签之后,以__开头的标签将从标签集中删除的。
如果使用只需要临时的存储临时标签值的,可以使用_tmp作为前缀标识。
relabel的action类型
- replace: 对标签和标签值进行替换。
- keep: 满足特定条件的实例进行采集,其他的不采集。
- drop: 满足特定条件的实例不采集,其他的采集。
- hashmod: 这个我也没看懂啥意思,囧。
- labelmap: 这个我也没看懂啥意思,囧。
- labeldrop: 对抓取的实例特定标签进行删除。
- labelkeep: 对抓取的实例特定标签进行保留,其他标签删除。
常用action的测试
在测试前,同步下配置文件如下。
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: ‘prometheus‘
static_configs:
- targets: [‘localhost:9090‘]
- job_name: ‘node_export‘
static_configs:
- targets:
- deliver-database:9100
- basic-database:9100
- ETL:9100
- APP3:9100
- APP5:9100
- APP4:9100
- QCD1:9100
- QCD2:9100
- QCA1:9100
以上的机器,我已经在 hosts 做好解析了。
此时如果查看target信息,如下图。
这些都是默认的 label ,因为系统生成的 label 都是以__
开头的,目标重新标签之后,以__
开头的标签将从标签集中删除的。
replace
比如将所有 labels 中的 instance 的 9100 端口去掉
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: ‘prometheus‘
static_configs:
- targets: [‘localhost:9090‘]
- job_name: ‘node_export‘
static_configs:
- targets:
- deliver-database:9100
- basic-database:9100
- ETL:9100
- APP3:9100
- APP5:9100
- APP4:9100
- QCD1:9100
- QCD2:9100
- QCA1:9100
relabel_configs:
- source_labels:
- "__address__"
regex: "(.*):9100"
target_label: "instance"
action: replace
replacement: "$1"
重启服务查看 target 信息如下图:
说下上面的配置:
- source_labels 指定我们我们需要处理的源标签, 我们这里处理
__address__
- target_labels 指定了我们要 replace 后的标签名字, 我们这里选择
instance
- action 指定 relabel 动作,这里使用 replace 替换动作。
- regex 去匹配源标签
__address__
的值,"(.*):9100"
代表匹配这个表情9100前部分 - replacement 指定的替换后的标签(target_label)对应的数值,采用正则引用方式获取的。
keep
比如只采集所匹配名称为 APP* 的机器。
修改配置文件如下
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: ‘prometheus‘
static_configs:
- targets: [‘localhost:9090‘]
- job_name: ‘node_export‘
static_configs:
- targets:
- deliver-database:9100
- basic-database:9100
- ETL:9100
- APP3:9100
- APP5:9100
- APP4:9100
- QCD1:9100
- QCD2:9100
- QCA1:9100
relabel_configs:
- source_labels:
- "__address__"
regex: "APP.*"
action: keep
重启之后查看 target 如下图,可以看到只采集 APP 开头的服务器。
drop
在上面的基础上,修改 action 为 drop。
重启之后,target 如下图
action 为 drop,其实和 keep 是相似的, 不过是相反的, 只要 source_labels 的值匹配APP.*
的实例不会被采集。 其他的实例会被采集。
给 target 手动增加 label
配置文件修改为如下
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: ‘prometheus‘
static_configs:
- targets: [‘localhost:9090‘]
- job_name: ‘node_export‘
static_configs:
- targets:
- deliver-database:9100
- basic-database:9100
- ETL:9100
- APP3:9100
- APP5:9100
- APP4:9100
- QCD1:9100
- QCD2:9100
- QCA1:9100
labels:
os: "linux"
relabel_configs:
- source_labels:
- "__address__"
regex: "(.*):9100"
target_label: "instance"
action: replace
replacement: "$1"
欢迎大家扫码关注,获取更多信息
以上是关于prometheus relabel 配置的主要内容,如果未能解决你的问题,请参考以下文章