Prometheusrelabel_config

Posted shark_西瓜甜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prometheusrelabel_config相关的知识,希望对你有一定的参考价值。

标签重新配置 relabel_config

# source labels 从现有标签(可以是已经配置的和动态已经生成的)中选择值。
# 使用配置的分隔符(默认 = )并与配置的正则表达式匹配到的内容进行连接,用于替换、保留和删除操作。
[ source_labels: '[' <labelname> [, ...] ']' ]

# 分隔符 放在内容和原标签之间
[ separator: <string> | default = ; ]

# 在替换操作中将结果值写入的标签。
# 对于替换操作,它是强制性的。Regex捕获组($1,$2)是可以可用的
[ target_label: <labelname> ]

# 正则表达式  与提取的内容相匹配,一般是 source_labels
# 书写的正则表达是需要是 .*<regex>.* 的方式,就是两头必须都有 .*,或者使用单引号引起来 '<regex>'
[ regex: <regex> | default = (.*) ]

# 替换
# 如果正则表达式匹配,则对其执行正则表达式替换。Regex捕获组可用。
# 这个是默认行为,如果需要替换为其他值,可以使用这个配置去指定。
# 一般替换的值是给 target_label,可以用于创建新标签。
[ replacement: <string> | default = $1 ]

# 动作
# 基于正则表达式匹配执行的动作
[ action: <relabel_action> | default = replace ]

relabel_action 有:

  • replace: 替换 这个是默认动作,其行为是将 regex 从source_labels 匹配的内容进行替换. 替换的值存放在replacement ,正则匹配到的组可以引用 (比如 $1, $2, …)。
    最终 replacement 值会赋值给 target_label。如果regex 不匹配,则不进行替换。
  • lowercase: 将连接的source_labels 映射到它们的小写字母。
  • uppercase: 将连接的source_labels 映射它们的大写字母。
  • keep: 删除regex与连接不匹配的目标 source_labels,让Prometheus丢弃没有匹配到regex的target.
  • drop: 删除regex与连接匹配的目标 source_labels,让Prometheus丢弃匹配到regex的target
  • labelmap: 匹配regex所有标签名称,并将捕获的内容分组,用第一个分组内容作为新的标签名(使用正则提取出多个字段,使用匹配到的作为新标签名,但是标签的内容不会改变,相对于对原有标签换了个名字,原标签仍然存在)
  • labeldrop:将正则表达式与所有标签名称匹配。任何匹配的标签都将从标签集中删除
    labelkeep:将正则表达式与所有标签名称匹配。任何不匹配的标签都将从标签集中删除

实战分析

    static_configs:
      - targets:
        - getway=192.168.0.39:8766
        - a=192.168.0.39:6060
        - b=192.168.0.39:6130
        - c=127.0.0.1:6130
    relabel_configs:
      - source_labels: [__address__]
        regex: '([a-z]+)=.*'
        target_label: server_name

      - source_labels: [__address__]
        regex: '[a-z]+=(.*)'
        target_label: server_addr

      - source_labels: [server_addr]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 192.168.0.39:9115

__address__ 是targets 中的值,比如 getway=192.168.0.39:8766

  - source_labels: [__address__]
    regex: '([a-z]+)=.*'
    target_label: server_name

上面的意思是使用 regex 指定的正则表达式 '([a-z]+)=.*'
__address__ 的值进行匹配,并且进行了分组。
之后把分组 $1 的内容赋值给新的标签 server_name

  - source_labels: [__address__]
    regex: '[a-z]+=(.*)'
    target_label: server_addr

上面的意思是把匹配到的分组内容 $1 分配给新的标签 server_addr

  - source_labels: [server_addr]   # 192.168.0.39:8766
    target_label: __param_target  # 192.168.0.39:8766

上面的意思是把 server_addr 标签的内容赋值给 Prometheus 内置标签 __param_target
实际会映射到 Prometheus 的配置文件中为如下内容

  - job_name: "java-tcp"
    scrape_interval: 5s
    metrics_path: /probe
    params:
      target:
        - 192.168.0.39:8766 # server_addr 的值
  - source_labels: [__param_target]
    target_label: instance

上面的意思是 把内置标签 __param_target 的值赋值个标签 instance

  - target_label: __address__
    replacement: 192.168.0.39:9115

上面的意思是把 replacement 的值 192.168.0.39:9115
赋值给Prometheus 内置的标签 __address__

这里的场景是 192.168.0.39:9115 为黑盒监控的监听地址。

以上是关于Prometheusrelabel_config的主要内容,如果未能解决你的问题,请参考以下文章

大数据技术都有哪些

大天使之剑怎么获得大天使武器

新如何学习大数据技术?大数据怎么入门?怎么做大数据分析?

大数据包括哪些?

大数据如何入门

大数据与Hadoop之间的关系