prometheus-relabel_configs和metric_relabel_configs
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了prometheus-relabel_configs和metric_relabel_configs相关的知识,希望对你有一定的参考价值。
参考技术A relabel_configs作用:
1)在target的标签集被抓取之前重写这些标签集;
2)过滤target是否应该被抓取,比如:如果配置了action为keep的规则,如果target的标签集满足该规则,则对该target进行抓取,否则不对该target进行指标的抓取
介绍
1)每个采集配置可以配置多个重写标签,并按照配置的顺序应用于每个target的标签集;重写标签之后,以__开头的标签将被从标签集中删除;
2)作用时机:发生在采集样本数据之前,对target实例标签进行重写
3)最基本的应用场景:基于target实例中包含的metadata标签,动态的添加或者覆盖标签
4)relabel_config经常出现的一些target元标签
4.1)__address__:当前目标实例的访问地址<host>:<port>
4.2)__scheme__:访问target时的HTTP Scheme,值为http或者https
4.3)__metrics_path__:访问target拉取指标的path
4.4)__param_<name>:访问target服务时包含的请求参数
4.5)不同的target发现实现方式有它们各自的元标签
relabel_configs配置
source_labels: <labelname1>,…… #配置了要进行relabel的标签key,如果指定了多个标签key,用逗号进行分隔
separator: <string类型> #如果source_labels中配置了多个标签key,标签key对应的标签value会按照这里配置的分隔符进行拼接,默认分隔符为分号
target_label: <labelname> #经过relabel后的值会被赋值给target_label指定的标签key
regex: <正则表达式,默认为.*> #只有source_labels指定的标签key对应的标签值符合regex这里定义的正则表达式,才会进行relabel操作
modulus: <uint64类型> #对source_labels中标签key对应的标签value进行散列运算
replacement: <string,默认为$1> #指定了要写入到target_label中标签key的值(这里用到正则捕获组的知识,用regex对source_labels中标签key对应的标签value进行正则匹配,捕获组学习参考:https://segmentfault.com/a/1190000021043947)
action: <relabel操作> #定义了当前relabel_config对标签的处理,默认action为replace
relabel常见的action类型主要有以下7个
1)replace:默认值,replace会根据regex的配置匹配source_labels标签的值(多个source_label的值会按照separator进行拼接),并且将匹配到的值写入target_label中。如果有多个匹配组,可以使用$1、$2确定写入的内容;如果没匹配到任何内容,不对target_label进行重写
2)keep: 用于选择,丢弃source_labels的值中没有匹配到regex正则表达式内容的target实例
3)drop: 用于排除,丢弃source_labels的值中匹配到regex表达式内容的target实例
4)hashmod: 这种情况下,用modulus的值作为散列系数,计算source_label对应的散列值
5)labelmap: 根据regex的定义去匹配target实例所有标签的名称,并且以匹配到的内容作为新的标签名称,其值作为新标签的值
6)labeldrop:删除正则相匹配的source_label
7)labelkeep: 删除不匹配正则表达式的source_label
总结
relabel_configs,可能会导致target的指标不被拉取
write_relabel_configs,可能会导致指定的时间序列不被采集
作用:在prometheus从target拉取指标后,存储指标前,对指标的时间序列进行编辑
使用场景:1)将不需要的监控数据丢弃掉;2)对指标中的标签进行处理(比如:新增标签,并将已存在标签key的值写入其中)
配置:metrics_relabel_configs和relabel_configs的配置是一样的,只是含义不一样,metrics_relabel_configs操作对象是时间序列,relabel_configs操作对象是target
metric_relabel_configs
以上是关于prometheus-relabel_configs和metric_relabel_configs的主要内容,如果未能解决你的问题,请参考以下文章