prometheus label标签的使用

1,102 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

1.label标签概述

标签提供了时间序列的纬度,他们可以定义目录,并为时间序列提供上下文,但最重要的是结合指标名称,他们构成了时间序列的表示,如果他们改变了,那么时间序列的表示也会改变

标签的常见用例:

  • 删除不必要的指标
  • 从指标中删除敏感或不需要的标签
  • 添加、编辑或修改指标的标签或标签格式

记住有两个阶段我们可以重新命名。第一阶段是重新标记来自服务发现的目标。这对于将来自服务发现的元数

据标签的信息应用到您的度量上的标签非常有用。这是在作业内部的relabel_configs快中完成的。

第二个阶段是在刮刮(scape)之后,但在保存到存储系统之前。这使我们能够确定我们保存了那些指标,删除了那些指标,以及这些指标将是什么样子。这是在我们的工作中的metric_relabel_configs块中完成的。

记住这两个阶段最简单的方法是:relabel_configs发生在刮刮之前,metric_relebel_configs发生在刮刮之后。

2.label标签使用

2.1删除标签中的一个metrics

#修改配置文件 
[root@192.168.100.146~]# vim /data/prometheus/prometheus.yml 
- job_name: "docker" 
static_configs: 
- targets: ['192.168.100.147:8080'] 
metric_relabel_configs: 
- source_labels: [__name__] 
regex: '(container_tasks_state|container_memory_failures_total)' 
action: drop 

#注释:metric_relabel_configs: #metric配置 
- source_labels: [__name__] #指定label标签,__name__属于内置label 
regex: #要操作的metrics值,如果有多个regex则用分号隔开 
action: #对刚刚选择metrics值做什么操作,drop为删除 

#重载配置文件 
[root@192.168.100.146/data/prometheus]#curl -XPOST http://localhost:9090/-/reload

image.png

在prometheus页面查看配置是否生效

image.png

查看对应的metrics监控指标是否删除

image.png

image.png

2.2.更新一个标签值

一个metric_relabel_configs:下可以跟多个source_labels对不同的标签进行操作

我们可以对一个标签的值进行替换,但是,不是真的替换,而且将原来的值取出来后新增一个标签并赋予值

容器的进程都会有下图的一个输出,id='/docker/.....'

image.png

/docker/后面的就是容器的id,我们想要取出id在把id放到一个新标签container_id中

[root@192.168.100.146/data/prometheus]# vim prometheus.yml 
- job_name: "docker" 
static_configs: 
- targets: ['192.168.100.147:8080'] 
metric_relabel_configs: 
- source_labels: [__name__] 
regex: '(container_tasks_state|container_memory_failures_total)' 
action: drop 
- source_labels: [id] 
regex: '/docker/([a-z0-9]+)' 
replacement: '$1' 
target_label: container_id 

#注释: 
一个metric_relabel_configs下面可以包含多个source_labels 
source_labels: [id] #对id标签进行操作 
regex: '/docker/([a-z0-9]+)' #取出docker的id 
replacement: '$1' #交给$1 
target_label: container_id #传给新标签container_id作为标签值 

#加载配置
[root@192.168.100.146/data/prometheus]# curl -X POST http://localhost:9090/-/reload 
level=info ts=2021-05-17T08:55:45.302Z caller=main.go:944 msg="Loading configuration file" filename=/data/prometheus/prometheus.yml 
level=info ts=2021-05-17T08:55:45.362Z caller=main.go:975 msg="Completed loading of configuration file" filename=/data/prometheus/prometheus.yml totalDuration=60.482016ms remote_storage=3.726µs web_handler=621ns query_engine=1.974µs scrape=646.844µs scrape_sd=8.300646ms notify=20.933µs notify_sd=14.578µs rules=1.542µs

仅配置框中的即可

image.png

配置已经生效

image.png

查看是否增加新标签container_id

image.png

2.3.删除一个标签

我们删除一个kernelVersion的标签,也就是内核版本的标签,这个不易暴露

我们可以根据cadvisor_version_info这个metrics值找到kernelVersion标签

image.png

[root@192.168.100.146/data/prometheus]# vim prometheus.yml 
- job_name: "docker" 
static_configs: -
targets: ['192.168.100.147:8080'] 
metric_relabel_configs: 
- source_labels: [__name__] 
regex: '(container_tasks_state|container_memory_failures_total)'
action: drop 
- source_labels: [id] 
regex: '/docker/([a-z0-9]+)' 
replacement: '$1' 
target_label: container_id 
- regex: 'kernelVersion' 
action: labeldrop 

#注释: 
- regex: 'kernelVersion' #填写要删除的标签 
action: labeldrop #动作为标签删除 

#重新加载
[root@192.168.100.146/data/prometheus]# curl -X POST http://localhost:9090/-/reload 
level=info ts=2021-05-17T09:04:09.993Z caller=main.go:944 msg="Loading configuration file" filename=/data/prometheus/prometheus.yml 
level=info ts=2021-05-17T09:04:10.091Z caller=main.go:975 msg="Completed loading of configuration file" filename=/data/prometheus/prometheus.yml totalDuration=98.031403ms remote_storage=3.36µs web_handler=752ns query_engine=1.432µs scrape=513.451µs scrape_sd=46.784µs notify=9.816µs notify_sd=9.692µs rules=1.417µs

仅配置框中的即可

image.png

查看配置是否更新

image.png

已经删除

cadvisor_version_info

image.png