其他分享
首页 > 其他分享> > Prometheus 重新打标

Prometheus 重新打标

作者:互联网

概述

指标抓取的生命周期

官网地址: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config

下图展示了Prometheus上进行指标抓取的简单生命周期 配置标签会在抓取的生命周期中被重复利用以生成其他标签,例如,指标上的instance标签的默认值就来自于__address__标签的值;   对于发现的各目标,Prometheus提供了可以重新标记(relabel) 目标的机会 它定义在job配置段的relabel_config配置中,常用于实现如下功能 这之后,便是数据抓取、以及指标返回的过程; 抓取而来的指标在保存之前,还允许用户对指标重新打标并过滤的方式;

对target重新打标

 对target重新打标是在数据抓取之前动态重写target标签的强大工具,在每个数据抓取配置中,可以定义多个relabel步骤,它们将按照定义的顺序依次执行; 对于发现的每个target,Prometheus默认会执行如下操作 重新标记期间,还可以使用该target上以“__meta_”开头的元标签; 重新标记完成后,该target上以“__”开头的所有标签都会被移除;

relabel_configs

  <relabel_action>字段用于定义重新标记的行为,其可用取值如下 注意:要确保在labeldrop或labelkeep操作后,余下的标签集依然能惟一标识该指标   

示例

标签replace替换

   将三个原标签的值按格式进行串联, 有正则表达式进行模式匹配, 而后由 replacement 引用模式匹配结果, 赋值给endpoint标签.

  - job_name: 'nodes'
    static_configs:
    - targets:
      - 192.168.168.105:9100
      - 192.168.168.107:9100
      - 192.168.168.108:9100

    relabel_configs:
    - source_labels:
      - __scheme__
      - __address__
      - __metrics_path__
      regex: "(http|https)(.*)"
      separator: ""
      target_label: "endpoint"
      replacement: "${1}://${2}"
      action: replace

 

 

标签计算哈希值hashmod

  意义:   Prometheus server 数据(比如一个机房的所有机器信息)特别大,超过了单机承载能力。

      此时我们可以采用 hashmod 配置,使用同样的配置列表,将抓取目标散列到不同的 Prometheus server 中去, 从而很好实现 Prometheus 数据收集的横向扩展。

  - job_name: 'nodes'
    static_configs:
    - targets:
      - 192.168.168.105:9100
      - 192.168.168.107:9100
      - 192.168.168.108:9100

    relabel_configs:
    - source_labels:
      - __scheme__
      - __address__
      - __metrics_path__
      target_label: "hash"
      modulus: 2
      action: hashmod
                       

 标签映射 labelmap

    将regex指定的模式对target上的所有标签进行匹配判定,对于匹配到的标签名,它将以该标签名中匹配的部分为前缀,指定的“_name”为后缀生成新的标签名,而新标签的值则与其原标签的值相同;
  - job_name: 'nodes'
    static_configs:
    - targets:
      - 192.168.168.105:9100
      - 192.168.168.107:9100
      - 192.168.168.108:9100

    relabel_configs:
    - regex: "(job|app)"
      replacement: ${1}_name
      action: labelmap

 

 标签删除 labeldrop

  将regex指定的模式对target上的所有标签进行匹配判定,对于匹配到的标签名,将删除此标签.

  # all node
  - job_name: 'nodes'
    static_configs:
    - targets:
      - 192.168.168.105:9100
      - 192.168.168.107:9100
      - 192.168.168.108:9100

    relabel_configs:
    - regex: "(job|app)"
      action: labeldrop

 

标签保留 labelkeep

   将regex指定的模式对target上的所有指标(__name__)进行匹配判定,对于匹配到的指标名,将删除.

   也可删除 target.

目前测试此选项会删除 instance.

  # all node
  - job_name: 'nodes'
    static_configs:
    - targets:
      - 192.168.168.105:9100
      - 192.168.168.107:9100
      - 192.168.168.108:9100
    relabel_configs:
    - regex: "(instance|job|app)"
      action: labelkeep

删除指标 drop

    将regex指定的模式对target上的所有标签进行匹配判定,对于匹配到的标签名,将删除此标签.

  # all node
  - job_name: 'nodes'
    static_configs:
    - targets:
      - 192.168.168.105:9100
      - 192.168.168.107:9100
      - 192.168.168.108:9100

    relabel_configs:
    - source_labels:
      - __name__
      regex: "go_info"
      action: drop

 

配置前查看指标

 

配置后查看指标

target保留 keep

    将regex指定的模式对target上的指定的标签进行匹配判定,对于匹配到的标签名,则保留此target, 反之则删除.

# all node
- job_name: 'nodes'
static_configs:
- targets:
- 192.168.168.105:9100
- 192.168.168.107:9100
- 192.168.168.108:9100
relabel_configs:
- source_labels:
- __address__
regex: "192.168.168.105.*"
action: keep

 

 

 

 

 

 

 

 

 

 

         

 

标签:__,regex,target,9100,标签,192.168,Prometheus,重新,打标
来源: https://www.cnblogs.com/yanshicheng/p/15510556.html