目录
1. 概述
2. Metadata标签
3. Relabeling 规则
3.1 语法
3.2 action解释
4. 修改标签场景
5. 场景实战
5.1 过滤指定target
5.2 将__meta_等内部标签转为promsql可使用的标签
5.3 删除标签
1. 概述
relabel_config,用于标签的管理,包括标签过滤、重定义或替换标签等。简单的说,就是可以删除不要标签,保留隐藏的标签与元数据,替换指定标签值等,只适用于数据采集之前的标签修改,如需在采集数据后再修改,参阅metric_relabel_configs。
常见的场景使用中,如prometheus采集node_exporter的数据,在Targets中,可以看到 “job="xxxx"”等标签,以及以__meta开头的元组标签,有些标签可能需要重写标签,有些需要保留,如__meta是prometheus系统内部使用,无法被promql查询时使用的,这个时候就需要对__meta的标签进行重写保留。另外也可用于过滤不要target,只保留满足匹配的label的target。
2. Metadata标签
以双下划线__开头的标签属于特殊的标签,如__meta_开头的标签,它们在重新标记后会被删除。
说明:
__address__:包含应该被抓取目标的地址,它最初默认为服务发现机制提供的
__scheme__:抓取目标的请求模式,包括 http 与 https,默认为 http。
__metrics_path__:表示用于采集指标的 HTTP 路径,默认为 /metrics。
__param_
3. Relabeling 规则
3.1 语法
# vim prometheus.yml
- job_name: 'prometheus'
*** ***
relabel_configs:
- regex: __meta_xx_(.+) #正则匹配指定的标签
action: replace | keep | drop | labelmap | labeldrop | labelkeep
source_labels: [源标签] # 根据action选择
target_label: [目标标签] # 根据action选择
replacement: [替换的标签] # 根据action选择
3.2 action解释
# vim prometheus.yml - job_name: 'prometheus' *** *** relabel_configs: - regex: __meta_xx_(.+) #正则匹配指定的标签 action: replace | keep | drop | labelmap | labeldrop | labelkeep source_labels: [源标签] # 根据action选择 target_label: [目标标签] # 根据action选择 replacement: [替换的标签] # 根据action选择
3.2 action解释
动作 | 说明 |
replace | 默认值,通过regex匹配source_label的值,使用replacement替换新的标签值 |
keep | 只保留regex匹配source_label的target,其它不匹配的target删除 |
drop | 丢弃regex匹配source_label的target |
labelmap | 复制保留regex匹配source_label的值,并生成一个新标签 |
labeldrop | 删除匹配的标签 |
labelkeep | 只保留匹配的标签 |
4. 修改标签场景
- 删除不要的标签
- 增加新标签(如使__meta等内部标签重命名后可被promsql查询使用)
- 标签重命名
- 过滤指定target
5. 场景实战
5.1 过滤指定target
只抓取标签:job= *mysql_exporter*的target
- job_name: 'prometheus'
*** ***
relabel_configs:
- source_labels: [job]
regex: .*mysql_exporter.*
action: keep
5.2 将__meta_等内部标签转为promsql可使用的标签
- job_name: 'prometheus'
*** ***
relabel_configs:
- regex: __meta_ecs_tag_(.+)
action: labelmap
5.1 过滤指定target
只抓取标签:job= *mysql_exporter*的target
- job_name: 'prometheus'
*** ***
relabel_configs:
- source_labels: [job]
regex: .*mysql_exporter.*
action: keep
5.2 将__meta_等内部标签转为promsql可使用的标签
- job_name: 'prometheus'
*** ***
relabel_configs:
- regex: __meta_ecs_tag_(.+)
action: labelmap
- job_name: 'prometheus' *** *** relabel_configs: - regex: __meta_ecs_tag_(.+) action: labelmap
如内部标签(自动生成的)__meta_ecs_tag_prometheus="test",通过上面的正则匹配后,新生成的标签为prometheus="test",这个就能将内部标签转化为promsql能使用的标签
5.3 删除标签
- job_name: 'prometheus'
*** ***
relabel_configs:
- action: labeldrop
regex: "job" #正则匹配标签名称
附:
官方文档:https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
参考文档:
Prometheus Relabeling 重新标记的使用 - 腾讯云开发者社区-腾讯云
Prometheus 动态lables标签 | Jesse's home