prometheus relabel_configs配置介绍及使用(四)

relabel_configs配置介绍及使用

1.relabel_configs重新标签

1.1.重新标签的意义

重新标签就是重新定义一个标签

relabel_configs:这个配置项允许在采集之前对任何目标及标签进行修改

重新标签的意义:重命名原来的标签、删除标签、过滤目标,可以针对标签的某个值进行过滤

在查询一个监控指标时,prometheus会把只要包含这个监控指标的所有监控数据都列出来,这样看起来也是很麻烦,不过我们可以在查询时指定一个标签,这样就可以定位到指定的主机上

relabel_configs标签重新标记的意义特别大,我们可以把job_name定义成某一区域,在采集前进行标签重写,把标签的值传给一个新的标签,这样方便了我们的统计

1.2.重新标签配置介绍

relabel_cofnigs:
	[ source_labels: '[' <labelname> [, ...] ']' ]		//定义源标签,指定源标签是谁,多个原标签用逗号隔开
	[ separator: <string> | default = ; ]		//源标签的值,多个值用分号隔开
	[ target_label: <labelname> ]		//重新标记后的标签名,也就是要把标签重命名成什么
	[ regex: <regex> | default = (.*) ]			//匹配源标签的值,可以采用正则表达式
	[ modulus: <int> ]
	[ replacement: <string> | default = $1 ]			//将正则匹配到的标签值传给新的标签
	[ action: <relabel_action> | default = replace ]		//执行正则匹配时的动作

1.3.配置prometheus自身监控主机增加一个idc的标签

我们先使用简单的label标签

1.修改配置文件,增加idc标签
[root@prometheus-server prometheus]# vim prometheus.yml 
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['prometheus-server:9090']
      labels:
        idc: "bj"

2.加载配置文件
[root@prometheus-server prometheus]# curl -XPOST prometheus-server:9090/-/reload

查看页面是否显示标签增加

在这里插入图片描述

搜索标签idc为bj的CPU使用情况

语法格式:监控metrics名{标签名=“标签值”}

process_cpu_seconds_total{idc="bj"}

在这里插入图片描述

统计标签idc为bj的CPU使用总和

promql支持很多函数,总和我们可以用sum函数

命令格式:sum(metrics名{标签名=”标签值“})

sum(process_cpu_seconds_total{idc="bj"})

在这里插入图片描述

1.4.使用relabel_configs将job标签重写标记

1.4.1.将job_name改为bj

这一步操作是为了一会将job标签进行重写标记

1.修改主配置文件
[root@prometheus-server ~]# vim /data/prometheus/prometheus.yml 
scrape_configs:
  - job_name: 'bj'
    static_configs:
    - targets: ['prometheus-server:9090']

2.加载配置
[root@prometheus-server ~]# curl -XPOST prometheus-server:9090/-/reload

已经修改

出现两条记录的原因:由于prometheus监控一个主机默认会生成两个标签,一个instance和一个job,instance对应配置文件中的targets,job则对应job_name,在这里原来的job_name是prometheus,在这里已经是一个标签了,我们没有明确要删掉这个标签,而只是改了标签的值,因此他就会保留下来

在这里插入图片描述

1.4.2.将job标签重新标记

刚刚已经看现在的job标签值为bj,我们可以在采集前,把job的标签名修改为idc,这样也方便我们进行统计

配置解释

scrape_configs:
  - job_name: 'job'				#实例名称
    static_configs:
    - targets: ['prometheus-server:9090']			#监控主机ip
    relabel_configs:				#重新标记标签
    - action: replace				#动作,replace动作就是将原来标签的值传给新标签
      source_labels: ['job']			#源标签的名字
      regex: (.*)				#使用正则取出原标签的值,.*表示和原来的值保持一致
      replacement: $1				#将正则表达式匹配到的结果值引用给新标签
      target_label: idc			#新标签的名称

1.修改主配置文件
scrape_configs:
  - job_name: 'job'
    static_configs:
    - targets: ['prometheus-server:9090']
    relabel_configs:
    - action: replace
      source_labels: ['job']
      regex: (.*)
      replacement: $1
      target_label: idc

2.检查语法
[root@prometheus-server ~]# promtool check config /data/prometheus/prometheus.yml
Checking /data/prometheus/prometheus.yml
  SUCCESS: 0 rule files found
  
3.重载配置
[root@prometheus-server ~]# curl -XPOST prometheus-server:9090/-/reload

可以看到已经将job标签重新标记了一个idc,且原来的job也会保留,但是过段时间就会消失了

在这里插入图片描述

2.relabel_configs重新标签动作

2.1.标签动作介绍

action重新标签动作:

  • replace:默认动作,通过正则匹配匹配源标签(source_label)的值,使用replacement来引用表达式匹配的分组,就是将原标签的值传给新标签
  • keep:删除正则与连接不匹配的目标源标签,比如我们指定一个源标签job,这时我们指定的动作是keep,则通过源标签查出来的监控指标不会被删除,因为metrics中有job这个标签,如果没有这个标签则会被删除
  • drop:删除正则与连接匹配的目标源标签,比如我们指定的源标签为job,这个metrics值中包含job,则这个metrics会被删除,因为已经匹配的源标签
  • labeldrop:删除正则匹配的标签,也就是如果这个metrics中包含这个标签,则标签会被删除
  • labelkeep:删除正则不匹配的标签
  • hashmod;设置新标签名为modulus链接的哈希值source_labels
  • labelmap:匹配regex所有标签名称。然后复制匹配标签的值进行分组,replacement分组引用$1,$2替代

2.2.drop动作示例

匹配job标签的metrics进行删除

在添加一个action即可

1.修改主配置
[root@prometheus-server ~]# vim /data/prometheus/prometheus.yml 
scrape_configs:
  - job_name: 'bj'
    static_configs:
    - targets: ['prometheus-server:9090']
    relabel_configs:
    - action: replace
      source_labels: ['job']
      regex: (.*)
      replacement: $1
      target_label: idc
    - action: drop	
      source_labels: ['job']
      
2.加载配置
[root@prometheus-server ~]# curl -XPOST prometheus-server:9090/-/reload

前一会还存在

在这里插入图片描述

再次采集时则会被删除

在这里插入图片描述

2.3.keep动作示例

当前还是没有数据的

在这里插入图片描述

keep会将不匹配的进行删除,而我们的job原本是匹配的,因此加载完配置,重新采集时则会显示

1.修改主配置文件
[root@prometheus-server ~]# vim /data/prometheus/prometheus.yml 
scrape_configs:
  - job_name: 'bj'
    static_configs:
    - targets: ['prometheus-server:9090']
    relabel_configs:
    - action: replace
      source_labels: ['job']
      regex: (.*)
      replacement: $1
      target_label: idc
    - action: keep	
      source_labels: ['job']
      
2.加载配置
[root@prometheus-server ~]# curl -XPOST prometheus-server:9090/-/reload

在这里插入图片描述

2.4.labeldrop动作示例

使用labeldrop删除一个名为job的标签

labeldrop就是删除一个匹配的标签,labeldrop动作不能使用source_labels来匹配了,而是去匹配正则regex,要匹配多个值则用逗号隔开

当前还是这个标签

在这里插入图片描述

1.修改主配置
[root@prometheus-server ~]# vim /data/prometheus/prometheus.yml 
scrape_configs:
  - job_name: 'bj'
    static_configs:
    - targets: ['prometheus-server:9090']
    relabel_configs:
    - action: labeldrop
      regex: job

2.重载
[root@prometheus-server ~]# curl -XPOST prometheus-server:9090/-/reload

配置完labeldrop再次采集时就会把这个标签给删除

在这里插入图片描述

2.5.labelkeep动作示例

有点瑕疵,最后都删了,查不到监控数据

labelkeep是删除不匹配的标签,我们将除了job之外的标签全部删除

2.5.1.还原被删除的job标签

当前还是job被删除的样子,我们需要还原,否则用了labelkeep会全部删除,数据也就查不到了

在这里插入图片描述

还原回来的方式就是把配置文件刚刚写的labeldrop给删除就行了

已经还原回来了

在这里插入图片描述

2.5.2.删除除job之外的所有标签

1.修改主配置
[root@prometheus-server ~]# vim /data/prometheus/prometheus.yml 
scrape_configs:
  - job_name: 'bj'
    static_configs:
    - targets: ['prometheus-server:9090']
    relabel_configs:
    - action: labelkeep
      regex: job

2.重载
[root@prometheus-server ~]# curl -XPOST prometheus-server:9090/-/reload

猜你喜欢

转载自blog.csdn.net/weixin_44953658/article/details/113585819