重新打标
标签重新打标:
指标抓取的生命周期:
- 服务发现:
每个scrape_interval期间,prom会检查执行的job
会根据job指定的发现配置生成target列表(服务发现过程)
服务发现会返回一个Target列表,其中包含一组称为元数据的标签,这些标签都以“\_\__meta__”为前缀(每个服务发现后的标签不同)
服务发现还会根据目标配置来设置其它标签,这些标签带有“\__\_”前缀和后缀,包括“__scheme__”、“__address__”和“__metrics_path__”,分别保存有target支持使用协议(http或https,默认为http)、target的地址及指标的URI路径(默认为/metrics);
若URI路径中存在任何参数,则它们的前缀会设置为“__param_”
这些目标列表和标签会返回给Prometheus,其中的一些标签也可以配置中被覆盖
- 对于被发现的目标重新打标:
job配置段的`relabel_confi`配置中
将服务发现的元数据标签中的信息附加到指标的标签上
过滤标签
最重要的元标签:
__address__
__metrics_path__
__scheme__
- 保存指标数据之前,还允许对指标重新打标并过滤:
job配置段的`metrics_relabel_configs`配置中
删除不必要的指标
从指标中删除不需要的标签
添加、编辑或修改指标的标签值或标签格式
指标抓取步骤:
- 服务发现
- 配置
- 重新标记(relabel_configs)
- 抓取数据
- 重新标记(metric_relable_configs)

对target重新打标:
是在数据抓取前动态重写target标签的强大工具,每个数据抓取配置中,可定义多个relabel步骤,都将按定义顺序执行
重新标记期间,还可以使用该目标上以__meta__开头的元标签
重新标记完后,该目标上以__开头的所有标签都被移除。如果在重新标记过程中需要临时存储标签值,需要用__tmp标签为前缀来进行保存
默认执行:
- job标签设定为所属的job_name值
- __address__标签的值为该target的连接地址
- instance标签的值为__address__的值
- __scheme__标签的值为抓取该target上指标时使用的协议(http/https)
- __metrics_path__的值为抓取该目标时使用的url路径
- __param__的值为传递url参数中的第一个名称为
的参数的值
配置:
scrape_configs:
- job_name: 'test'
relabel_configs:
source_labels: #源标签
- 源标签
separator: #匹配源标签后的数据的连接符,默认;分隔符
target_label: #将源标签内容赋值给新标签
regex: #源标签正则匹配,默认(.*)
modulus: #hash算法函数,对source_labels进行计算,实现目标分类、重新赋值
replacement: #正则匹配下标符,默认$1(与sed一样)
action: 操作 #默认替换操作
操作:
替换标签值:
- replace 替换
- hashmode 变为hash
删除指标
- keep 正则匹配没有才删除
- drop 正则匹配到就删除
删除指标标签:
- labelmap 正则匹配,将匹配的标签赋值给replacement给出的新标签,通常用于取出部分标签
- labeldrop 正则匹配,匹配的标签删除
- labelkeep 正则,不匹配的标签删除
案例:
例1: replace
scrape_configs:
- job_name: 'nodes'
file_sd_configs:
- files:
- targets/pro/node*.yml
relabel_configs:
- source_labels:
- __scheme__
- __address__
- __metrics_path__
regex: "(http|https)(.*)"
separator: ""
target_label: "endpoint"
replacement: "${1}://${2}"
action: replace
解析:
源值为: http 1.1.1.1:80 /index.html
新标签为:endpoint
值为: http://1.1.1.1:80/index.html
例2: labelmap
scrape_configs:
- job_name: 'nodes'
file_sd_configs:
- files:
- targets/pro/node*.yml
relabel_configs:
- regex: "(job|app)"
replacement: ${1}_name
action: labelmap
解析:
源标签: job
源值为: xxx
新标签: job_name
新值为: xxx
对metrics重新打标:
与target的重新打标一样,只是配置段变了
metric_relable_configs字段
案例:
例1: drop
scrape_configs:
- job_name: 'nodes'
file_sd_configs:
- files
- targets/pro/node*.yml
metric_relabel_configs:
- source_labels:
- __name__
regex: "go_info.*"
action: drop
解析:
删除以go_info.*开头的源标签

浙公网安备 33010602011771号