Prometheus标签的使用说明

prometheus在处理数据指标的过程中,包括【抓取的生命周期】和【标签的生命周期】

默认情况下,当prometheus加载target实例完成后,这些target时候会包含一些默认的标签,这些标签将会告诉prometheus如何从target实例中获取监控数据

       发生在采集样本数据之前,对Target实例的标签进行重写的机制在Prometheus被称为Relabeling。Prometheus允许用户在采集任务设置中通过relabel_configs来添加自定义的Relabeling过程

      Prometheus 从数据源拉取数据后,会对原始数据进行编辑;其中 metric_relabel_configs是 Prometheus 在保存数据前的最后一步标签重新编辑(relabel_configs)。哪怕你将 metric_relabel_configs模块放在 job_name模块的最前端,Prometheus 解析编辑文件后,也会将 metric_relabel_configs放在最后。metric_relabel_configs 模块和 relabel_config 模块很相似。metric_relabel_configs一个很常用的用途:将监控不需要的数据,直接丢掉,不在Prometheus 中保存。

系统默认使用的标签

  1. __address__:当前Target实例的访问地址[host]:[port]
  2. __scheme__:采集目标服务访问地址的HTTP Scheme,HTTP或者HTTPS
  3. __metrics_path__:采集目标服务访问地址的访问路径
  4. __param_:采集任务目标服务的中包含的请求参数
  5. __name__: 此标签是标识指标名称的预留标签。
  6. job:target的job标签设置为配置文件里的job_name的值

prometheus 允许在采集之前对任何目标及其标签进行修改操作

  • 重命名标签名
  • 删除标签
  • 过滤标签

action  标签的动作

    replace: 根据 regex 的配置匹配 source_labels 标签的值(注意:多个 source_label 的值会按                      照 separator 进行拼接),并且将匹配到的值写入到 target_label 当中,如果有多个匹                    配组,则可以使用 ${1}, ${2} 确定写入的内容。如果没匹配到任何内容则不对                                  target_label 进行重新, 默认为 replace。

    hashmod: 将 target_label 设置为关联的 source_label 的哈希模块删除指标:如:不想监控                             某 个target可以用drop删除。

    keep: 丢弃 source_labels 的值中没有匹配到 regex 正则表达式内容的 Target 实例

    drop: 丢弃 source_labels 的值中匹配到 regex 正则表达式内容的 Target 实例

             创建或删除标签

     labelmap: #根据 regex 去匹配 Target 实例所有标签的名称(注意是名称),并且将捕获到的                           内容作为为新的标签名称,regex 匹配到标签的的值作为新标签的值。

     labeldrop: 对 Target 标签进行过滤,会移除匹配过滤条件的所有标签

     labelkeep: 对 Target 标签进行过滤,会移除不匹配过滤条件的所有标签

relable_configs: # 源标签 [ source_labels: '[' <labelname> [, ...] ']' ] # 多个源标签时连接的分隔符 [ separator: <string> | default = ; ] # 定义重新标记的标签 [ target_label: <labelname> ] # 正则表达式匹配源标签的值 [ regex: <regex> | default = (.*) ] # 用的少,占时略 [ modulus: <uint64> ] # 替换正则表达式匹配的分组,分组引用 $1,$2,$3,.... [ replacement: <string> | default = $1 ] # 基于正则表达式匹配执行的操作 [ action: <relabel_action> | default = replace ]

 一、 replace  不指定action的动作就是 replace

以下三种写法都是一种意思   把addr = IP(IP为__address__值中的ip地址)
relabel_configs:
      - source_labels: [ '__address__' ]
        target_label:  'addr'
        replacement: 'localhost'


 relabel_configs:
      - source_labels: [ '__address__' ]
        target_label:  'addr'
        #regex: "(.*):.*"     #如果只是取$1,那么这句话跟下面的意思一样
        regex: "(.*):(.*)"
        replacement: $1

relabel_configs:
    - action: replace
      source_labels: [ '__address__' ]
      regex: "(.*):(.*)"
      replacement: $1
      target_label:  'addr'

  

 - job_name: 'elasticsearch'
    metrics_path: "/metrics"
    static_configs:
    - targets:
      - '10.32.238.22:9114'
      labels:
        service: elasticsearch # 新添加的标签
    relabel_configs:
    - action: replace # 执行的动作,默认就是这个值,可以省略不写。
      source_labels: [__address__] # 要替换的标签
      regex: '(.*)\:9114' # 正则匹配标签中的值,以备后面替换使用
      target_label:  'instance' # 替换后的标签名,instance=$1,target_label用于创建新标签
      replacement:   '$1' # 替换为正则匹配中的子模式的值,就是regex中的括号里的值

 

二、keep

只采集 172.19.1.21这台主机的指标
relabel_configs:
    - separator: ;
      source_labels: [ '__address__']
      regex: '172.19.1.21:.*'                     
      action: keep
不采集172.19.1.21这台主机的指标
 relabel_configs:
    - action: drop
      source_labels: ['__address__']
     regex: '172.19.1.21:.*'
 

三、labelmap 标签名替换

- job_name: 'node_exporter'
    static_configs:
    - targets: ['172.19.1.21:9100','172.19.1.22:9100','172.19.1.23:9100']
      labels:
        env: 'test'
        zone: 'shanghai'
        label_name: 'Test_label'
        label_value: 'za'
        __host__: 'master_abc'
    relabel_configs:
    - source_labels: [ '__host___']
      regex: 'label_(.+)'
      replacement: $1
      action: labelmap

效果如下

四、根据hashmod来选择采集哪些target

  当relabel_config设置为hashmod时,Prometheus会根据modulus的值作为系数,计算source_labels值的hash值。

relabel_configs:
    - source_labels: [ '__address__']
      modulus: 8              # 根据当前Target实例__address__的值以8作为系数,这样每个Target实例都会包含一个新的标签_tmp_hash_value,并且该值的范围在1~10之间
      target_label: _tmp_bash_value
      action: hashmod

效果如下

这个时候就可以利用_tmp_hash_value这个临时标签做任何标签处理了,如下对_tmp_bash_value=3的实例drop

 relabel_configs:
      - source_labels: [ '__address__' ]
        modulus: 8
        target_label: _tmp_hash_value
        action: hashmod
      - source_labels: [ '_tmp_hash_value' ]
        regex: "^3$"
        action: drop


    relabel_configs:
      - source_labels: [ '__address__' ]
        modulus: 8
        target_label: _tmp_hash_value
        action: hashmod
      - source_labels: [ '_tmp_hash_value' ]
        regex: "(^1$|^9$)"
        action: keep
 

五、labeldrop使用

- job_name: 'node_exporter'
    static_configs:
    - targets: ['172.19.1.21:9100','172.19.1.22:9100','172.19.1.23:9100']
      labels:
        env: 'test'
        zone: 'shanghai'
        label_name: 'Test_label'
        label_value: 'za'
        __host__: 'master_abc'
    relabel_configs:
    - regex: "label(.+)"
      action: labeldrop

metric_relabel_configs对拉取数据的操作

1、删除不需要的metrics

    删除以node_cpu_开头的所有metrics
    metric_relabel_configs:
    - source_labels: [__name__]
      separator: ;
      regex: node_cpu_(.+)
      replacement: $1
      action: drop

 修改指标(metrics)中标签(label)

让metric标签中的container_label_io_kubernetes_pod_name这个标签的值赋给新的标签pod_name
    metric_relabel_configs:pod_name
    - source_labels: ['container_label_io_kubernetes_pod_name'] 
      regex: (.+) 
      replacement: $1 
      target_label: pod_name
      action: replace
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凤舞飘伶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值