重新打标

标签重新打标:

指标抓取的生命周期:

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

最重要的元标签:
  __address__
  __metrics_path__
  __scheme__
  1. 保存指标数据之前,还允许对指标重新打标并过滤:
job配置段的`metrics_relabel_configs`配置中
删除不必要的指标
从指标中删除不需要的标签
添加、编辑或修改指标的标签值或标签格式

指标抓取步骤:

  1. 服务发现
  2. 配置
  3. 重新标记(relabel_configs)
  4. 抓取数据
  5. 重新标记(metric_relable_configs)

image-20230728002423898


对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.*开头的源标签 
posted @ 2023-11-06 18:09  suyanhj  阅读(47)  评论(0)    收藏  举报