Prometheus监控学习之路(三)

重新打标

对target重新打标

对target重新打标是在数据抓取之前动态重写target标签的强大工具,在每个数据抓取配置中,可以定义多个relabel步骤,他们将按照定义的书序依次执行。
对于发现的每个target,Prometheus默认会执行如下操作:

  • job的标签设定为其所属的job_name的值
  • __address__标签的值为该target的套接字地址“<host>:<port>”
  • instance标签的值为__address__的值
  • __scheme__标签的值为抓取该target上指标时使用的协议(http或https)
  • __metrics_path__标签的值为抓取该target上的指标时使用的URL路径,默认为“/metrics”
  • __param_<name>标签的值为传递URL参数中第一个名称为<name>的参数的值

重新标记期间还可以使用该target上以“__meta__”开头的元标签,各服务发现机制为其target添加的元标签会有所不同。
重新标记完成后,该target上以“__”开头的所有标签都会被移除,若在relabel的过程中需要临时存储标签的值,则要使用“__tmp”标签名称为前缀进行保存,以避免同Prometheus的内建标签冲突。

重新打标基本配置

在这里插入图片描述

参数 详解
source_labels 引用那些已有标签,可以引用多个
target_label 将引用的标签赋值给新标签
separator 引用多个标签时使用什么样的连接符,默认为“;”
regex 对引用标签的值进行正则匹配,对匹配到的值可以赋值给target_label
action 对匹配到的结果进行什么操作,默认“replace”
replacement 等于regex匹配到的值

action字段可执行动作

替换标签值:

  • replace首先将source_labels中指定的各标签的值进行串连,然后将regex字段中的正则表达式对source_labels进行匹配,若匹配则将target_label字段中定义的标签值替换为replacement字段中保存的值
  • hashmod将target_labels的值设置为一个hash值,该hash则由modules字段指定的hash模块对source_labels上各标签的串连值进行hash计算生成

删除指标:该处的每个指标名称对应一个target

  • keep,regex不能匹配到target上的source_labels上的各标签串连值时,则删除该target
  • drop,regex能够匹配到target上的source_labels上的各标签串连值时,则删除该target

创建或删除标签:

  • labelmap,将regex对所有的标签名进行匹配,然后将匹配到的标签的值赋给replacenment字段指定的标签名之上;通常用于取出匹配的标签的一部分生成新的标签
  • labeldrop,将regex对所有的标签名进行匹配,能够匹配到的标签将从该target的标签集中删除
  • labelkeep,将regex对所有的标签名进行匹配,不能匹配到的标签将从该target的标签集中删除

注意:要确保在labeldrop或labelkeep操作后,余下的标签集依然能唯一标记该指标

重新打标示例

rplace

修改Prometheus的配置文件

  - job_name: 'consul-node'
    consul_sd_configs:
    - server: "192.168.0.181:8500"
      tags:
      - "nodes"
      refresh_interval: 2m
    relabel_configs:
    - source_labels:
      - __scheme__
      - __address__
      - __metrics_path__
      regex: "(http|https)(.*)"
      separator: ""
      target_label: "endpoint"
      replacement: "${1}://${2}"
      action: replace

解释:匹配“__scheme__,__address__,__metrics_path__”这三个标签中含有http或https和标签中所有的值,利用replacement对匹配到的值进行重组然后赋值给target_label中的endpoint

重启Prometheus查看已经存在新打的标签
在这里插入图片描述

labelmap

  - job_name: 'consul-node'
    consul_sd_configs:
    - server: "192.168.0.181:8500"
      tags:
      - "nodes"
      refresh_interval: 2m
    relabel_configs:
    - regex: "(job|app)"
      replacement: ${1}_name
      action: labelmap

重新打标前:
在这里插入图片描述
重新打标后:
在这里插入图片描述
解释:对target上的所有标签进行匹配,对匹配到的标签,将以标签的名称为前缀,以“_name”为结尾生成新的标签名称,新标签的值则与原标签的值相同

指标名称relabel操作

drop

  - job_name: 'consul-node'
    consul_sd_configs:
    - server: "192.168.0.181:8500"
      tags:
      - "nodes"
      refresh_interval: 2m
    metric_relabel_configs:
    - source_labels:
      - __name__
      regex: "go_memstats.*"
      action: drop

生成前查看metric:
在这里插入图片描述

生成后查看metric:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_33235529/article/details/113556609