prometheus的relabel_config

Relabeling是一个强大的工具,它在对target进行scrape前起作用,用来对label进行重写。

注意:Relabeling在对target进行抓取前起作用

一些特殊的label:

  • job 被设置为job_name的值
  • __address__的值被设置为<host>:<port>
  • instance在Relabeling之后被默认设置为__address__的值(如果没有被设置值的话)
  • __scheme__设置为scheme配置的值
  • __metrics_path__设置为metrics_path配置的值
  • __param_<name>为scrape_config中配置的url参数name对应的值
  • __scrape_interval__设置为scrape_interval
  • __scrape_timeout__设置为scrape_timeout
  • __meta_开头的标签可能是由服务发现机制设置的
  • 如果需要暂时保存标签值,以__tmp作为标签开头
  • __开头的标签会在Relabeling后被删除

格式说明:

# 设置来源label,将这些label的value进行拼接,分隔符通过separator指定。
[ source_labels: '[' <labelname> [, ...] ']' ]

# 分隔符
[ separator: <string> | default = ; ]

# 目标标签。
[ target_label: <labelname> ]

# 正则表达式
[ regex: <regex> | default = (.*) ]

# 模数,主要用于prometheus的水平分片
[ modulus: <int> ]

# 正则表达式捕获的分组,默认为第一个 $1
[ replacement: <string> | default = $1 ]

# 执行的动作,可选的值有:replace, keep, drop, labelmap,labeldrop, labelkeep
[ action: <relabel_action> | default = replace ]

relabel_action说明:

  • replace

    1. 用正则表达式regex匹配source_labels拼接的字符串
    2. 用正则匹配结果替换replacement中的${1},${2},...
    3. 将target_label的value设置为替换后的replacement

    如果regex不匹配,则不会发生替换。

  • lowercase

    将source_labels拼接的字符串映射为小写字符串

  • uppercase

    将source_labels拼接的字符串映射为大写字符串

  • keep

    抛弃一些target,这些target的source_labels不匹配regex,换句话说,只保留source_labels匹配regex的target

  • drop

    抛弃一些target,这些target的source_labels匹配regex

  • keepequal

    保留source_labels和target_label一样的target

  • dropequal

    抛弃source_labels和target_label不一样的target

  • hashmod

    对source_labels的hash值取模后赋值给target_label,模数为modulus

  • labelmap

    1. 起作用的labels:source_labels,以及label name能被regex匹配
    2. 替换replacement中的${1},${2}...
    3. 将第一步中label对应的值,设置到名为replacement的label中
  • labeldrop

    用regex匹配所有的标签名,被匹配的标签将被删除

  • labelkeep

    用regex匹配所有的标签名,不匹配的标签将被删除

posted @ 2025-03-10 11:24  Hekk丶  阅读(102)  评论(0)    收藏  举报