首页 > 其他分享 >relabel简介

relabel简介

时间:2024-03-07 14:44:55浏览次数:21  
标签:__ regex 简介 labels relabel job 标签 configs

一、relabel简介

为了更好的识别监控指标,便于后期调用数据绘图、告警等需求,prometheus支持对发现的目标进行label修改,可以在目标被抓取之前动态重写目标的标签集。每个抓取配置可以配置多个重新标记步骤。它们按照它们在配置文件中出现的顺序应用于每个目标的标签集。

 

除了配置的每个目标标签之外,prometheus还会自动添加几个标签:

job标签:设置为job_name相应的抓取配置的值。

instance标签:__address__设置为目标的地址<host>:<port>。重新标记后,如果在重新标记期间未设置标签,则默认将__address__标签值赋值给instance。

__schema__:协议类型

__metrics_path:抓取指标数的url

__scrape_interval__:scrape抓取数据时间间隔(秒)

__scrape_timeout__:scrape超时时间(秒)

 

__meta_在重新标记阶段可能会提供带有前缀的附加标签。它们由提供目标的服务发现机制设置,并且因机制而异。

__目标重新标记完成后,将从标签集中删除以开头的标签。

如果重新标记步骤只需要临时存储标签值(作为后续重新标记步骤的输入),可以使用__tmp标签名称前缀。这个前缀保证不会被 Prometheus 本身使用。

 

常用的在以下两个阶段可以重新标记:

relabel_configs:在采集之前(比如在采集数据之前重新定义元标签),可以使用relabel_configs添加一些标签、也可以只采集特定目标或过滤目标

metric_relabel_configs:如果是已经抓取到指标数据时,可以使用metric_relabel_configs做最后的重新标记和过滤

 二、relabel_configs配置

source_labels:源标签,没有经过relabel处理之前的标签名字

target_labels:通过relabel处理之后的标签名字

separator:源标签的值的连接分隔符。默认是";"

module:取源标签值散列的模数

regex:正则表达式,匹配源标签的值。默认是(.*)

replacement:通过分组替换后标签(target_label)对应的值。默认是$1

action:根据正则表达式匹配执行的动作。默认是replace

  • replace:替换标签值,根据regex正则匹配到原标签值,使用replacement来引用表达式匹配的分组
  • keep:满足regex正则条件的实例进行采集,把source_labels中没有匹配到regex正则内容的target实例丢掉,即只采集匹配成功的实例
  • drop:满足regex正则条件的实例不采集,把source_labels中没有匹配到regex正则内容的target实例丢掉,即只采集没有匹配成功的实例
  • hashmod: 使用hashmod计算source_labels的hash值并进行对比,基于自定义的模数取模,以实现对目标进行分类、重新赋值等功能
  • labelmap: 匹配regex所有标签名称,然后复制匹配标签的值进行分组,通过replacement分组引用($1,$2,...)替代
  • labeldrop: 匹配regex所有标签名称,对匹配到的实例标签进行删除
  • labelkeep: 匹配regex所有标签名称,对匹配到的实例标签进行保留

 三、常用的action案例

在开始之前准备prometheus配置文件

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 scrape_configs:   # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.   - job_name: "prometheus"       # metrics_path defaults to '/metrics'     # scheme defaults to 'http'.       static_configs:       - targets: ["localhost:9090"]     - job_name: "nodes"     static_configs:       - targets:         - 192.168.88.201:9100         labels:           __hostname__: node01           __region_id__: "shanghai"           __zone__: a       - targets:         - 192.168.88.202:9100         labels:           __hostname__: node02           __region_id__: "beijing"           __zone__: b

查看target

 因为我们的label都是以__开头的,目标重新标签之后,以__开头的标签将从标签集中删除的。

 3.1、replace

将labels中的__hostname__替换为node_name

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 scrape_configs:   # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.   - job_name: "prometheus"       # metrics_path defaults to '/metrics'     # scheme defaults to 'http'.       static_configs:       - targets: ["localhost:9090"]     - job_name: "nodes"     static_configs:       - targets:         - 192.168.88.201:9100         labels:           __hostname__: node01           __region_id__: "shanghai"           __zone__: a       - targets:         - 192.168.88.202:9100         labels:           __hostname__: node02           __region_id__: "beijing"           __zone__: b     relabel_configs:     - source_labels:       "__hostname__"       regex: "(.*)"       target_label: "node_name"       action: replace       replacement: $1

重启服务查看target信息如下

说下上面的配置: source_labels指定我们需要处理的源标签, target_labels指定了我们要replace后的标签名字, action指定relabel动作,这里使用replace替换动作。 regex去匹配源标签(__hostname__)的值,"(.*)"代表__hostname__这个标签是什么值都匹配的,然后replacement指定的替换后的标签(target_label)对应的数值。采用正则引用方式获取的。

3.2、keep

只要source_labels的值匹配node01的实例才会被采集数据,其他实例不会采集

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 scrape_configs:   # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.   - job_name: "prometheus"       # metrics_path defaults to '/metrics'     # scheme defaults to 'http'.       static_configs:       - targets: ["localhost:9090"]     - job_name: "nodes"     static_configs:       - targets:         - 192.168.88.201:9100         labels:           __hostname__: node01           __region_id__: "shanghai"           __zone__: a       - targets:         - 192.168.88.202:9100         labels:           __hostname__: node02           __region_id__: "beijing"           __zone__: b     relabel_configs:     - source_labels:       "__hostname__"       regex: "node01"       action: keep

target如下图

 3.3、drop

在keep的基础上把action修改为drop

target如下图

 action为drop,其实和keep是相似的, 不过是相反的, 只要source_labels的值匹配regex(node01)的实例不会被采集。 其他的实例会被采集。

3.4、labelmap

 所有被regex __(.*)__匹配到的标签名,复制匹配到的标签的值,通过replacement分组引用$1,然后创建匹配到的标签集

修改配置如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 scrape_configs:   # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.   - job_name: "prometheus"       # metrics_path defaults to '/metrics'     # scheme defaults to 'http'.       static_configs:       - targets: ["localhost:9090"]     - job_name: "nodes"     static_configs:       - targets:         - 192.168.88.201:9100         labels:           __hostname__: node01           __region_id__: "shanghai"           __zone__: a       - targets:         - 192.168.88.202:9100         labels:           __hostname__: node02           __region_id__: "beijing"           __zone__: b     relabel_configs:     - regex: "__(.*)__"       action: labelmap

查看target

 3.5、labelkeep

先给每个实例打上几个label,配置文件如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 scrape_configs:   # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.   - job_name: "prometheus"       # metrics_path defaults to '/metrics'     # scheme defaults to 'http'.       static_configs:       - targets: ["localhost:9090"]     - job_name: "nodes"     static_configs:       - targets:         - 192.168.88.201:9100         labels:           __hostname__: node01           __region_id__: "shanghai"           __zone__: a       - targets:         - 192.168.88.202:9100         labels:           __hostname__: node02           __region_id__: "beijing"           __zone__: b     relabel_configs:     - source_labels:       "__hostname__"       regex: (.*)       target_label: hostname       action: replace       replacement: $1     - source_labels:       "__region_id__"       regex: (.*)       target_label: region_id       action: replace       replacement: $1     - source_labels:       "__zone__"       regex: (.*)       target_label: zone       action: replace       replacement: $1

查看target如下

添加labelkeep配置,保留正则__.*__|job匹配到的标签,没有匹配到的则删除

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 scrape_configs:   # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.   - job_name: "prometheus"       # metrics_path defaults to '/metrics'     # scheme defaults to 'http'.       static_configs:       - targets: ["localhost:9090"]     - job_name: "nodes"     static_configs:       - targets:         - 192.168.88.201:9100         labels:           __hostname__: node01           __region_id__: "shanghai"           __zone__: a       - targets:         - 192.168.88.202:9100         labels:           __hostname__: node02           __region_id__: "beijing"           __zone__: b     relabel_configs:     - source_labels:       "__hostname__"       regex: (.*)       target_label: hostname       action: replace       replacement: $1     - source_labels:       "__region_id__"       regex: (.*)       target_label: region_id       action: replace       replacement: $1     - source_labels:       "__zone__"       regex: (.*)       target_label: zone       action: replace       replacement: $1     - action: labelkeep       regex: "__.*__|job"

查看target,只有instance和job标签,instance标签是prometheus自动生成的

 3.6、labeldrop

修改labeldrop配置,删除正则region|zone 匹配到的标签,不匹配的保留

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 scrape_configs:   # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.   - job_name: "prometheus"       # metrics_path defaults to '/metrics'     # scheme defaults to 'http'.       static_configs:       - targets: ["localhost:9090"]     - job_name: "nodes"     static_configs:       - targets:         - 192.168.88.201:9100         labels:           __hostname__: node01           __region_id__: "shanghai"           __zone__: a       - targets:         - 192.168.88.202:9100         labels:           __hostname__: node02           __region_id__: "beijing"           __zone__: b     relabel_configs:     - source_labels:       "__hostname__"       regex: (.*)       target_label: hostname       action: replace       replacement: $1     - source_labels:       "__region_id__"       regex: (.*)       target_label: region_id       action: replace       replacement: $1     - source_labels:       "__zone__"       regex: (.*)       target_label: zone       action: replace       replacement: $1     - action: labeldrop       regex: "region_id|zone"

查看target,region和zone标签已被删除,但hostname标签还在

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back  

标签:__,regex,简介,labels,relabel,job,标签,configs
From: https://www.cnblogs.com/gaoyuechen/p/18058860

相关文章

  • flutter入门1——概念简介
    简介Flutter是Google开发的一个开源移动应用框架,用于构建高性能、高保真的跨平台应用。它使用Dart语言作为开发语言,具有许多独特的特点和优势。特点跨平台性:Flutter支持Android和iOS两大主流移动平台,开发者可以使用同一套代码库来构建应用,大大减少了开发和维护的成本。高性能......
  • TIDB简介及TIDB部署、原理和使用介绍
    从MySQL架构到TiDB数据库分类​介绍TiDB数据库之前,先引入使用场景。如今的数据库种类繁多,RDBMS(关系型数据库)、NoSQL(NotOnlySQL)、NewSQL,在数据库领域均有一席之地,可谓百家争鸣之势。那么为什么要使用TiDB呢?接下来就从最熟悉的MySQL的使用说起。MySQL痛点​假设现在有一个高速......
  • 19_W25Q64简介
    W25Q64简介介绍硬件电路W25Q64框图Flash操作注意事项最小擦除单元->一个扇区软件SPI读写W25Q64接线图代码MySPI.c#include"stm32f10x.h"//DeviceheadervoidMySPI_W_SS(uint8_tBitValue){ GPIO_WriteBit(GPIOA,GPIO_Pin_4,(BitAction)......
  • kubernetes可视化管理工具KubePi体验简介
    kubernetes可视化管理工具KubePi体验简介原创 zhuhb 运维笔谈 2024-03-0111:55 上海 听全文推荐一个飞致云开源的kubernetes可视化面板KubePi,Github地址https://github.com/1Panel-dev/KubePiKubePi可以导入多个Kubernetes集群,并且通过权限控制,将不同cluster......
  • Visual Leak Detector 简介
    1.工具简介VisualLeakDetector简称VLD,是Windows平台下用于C/C++代码内存泄漏检测的开源工具,使用起来比较简单,配置好环境后包含头文件,就可以在运行时自动检测是否存在内存泄漏,并在指定位置(控制台或者文本文件)输出检测报告。该工具最初由DanMoulding开发,但是后面2.......
  • SpringBoot—01—简介;基本使用;
     @RequestMapping@Controller@GetMapping@ResponstBody(不走视图解析,直接返回数据)@Component(是Controller和Service的父类,就是让sping创建一个bean)@ConfigurationPerproties(prefix=xxx),从配置文件中读取配置赋值给实体类@Autowire,自动装配,但是具体的还是没搞懂@valiated,做......
  • 04应用程序简介1
    应用程序简介1在Windows系统中,应用程序(软件)的本质是文件.最常见的应用程序文件的类型是.exe文件.我们将从软件的安装,绿色软件,单文件应用程序等几个方面进行介绍.软件的安装一般情况下,我们所使用的很多软件都是需要经过安装流程才能使用的.安装软件的应用程序叫做安装包.......
  • envoy&istio 对接ratelimit 实现限流之ratelimit简介
    23年的时候公司因调用企业微信接口超限,导致业务问题。架构组经过协商后决定上一个限流服务。限流这块自然而然就落到我负责的网关这块,小公司我一个人负责api网关这块。之前基于istio给公司上线了一个本地的限流(我给公司开发了一个devops管理工具,可以用来管理k8s、istio、jenki......
  • hbase结构简介
    Hbase结构图hmaster负责给regionserver分配region,region处理具体的数据存储和查找,zk是一个注册中心,hmaster通过zk感知regionserver存活与否。客户端是通过zk取到hmater的位置,然后取到位于namespace下面的mate表里面的region分区信息才能知道对应得rowkey应该去哪里取得。Hba......
  • 安全测试简介
    安全测试:对资产进行一个较为完整的安全评估,web渗透测试,app渗透测试,操作系统渗透测试,社会工程学;主要工作是为了检测自家公司应用的安全性;web渗透测试:对网站应用的安全测试,目标不仅是我们能看到的具有页面的网站,也包括接口和一些比较抽象的功能;app渗透测试:主要是对app本身的安全性测......