一、背景

咱们晓得prometheus是一个工夫序列数据库。会周期性的从各个target上抓取数据。那么咱们抓取回来的各种指标数据,咱们有没有方法再次进行解决呢?
比方:

1、增加或删除某些不必要的标签。

2、从指标中删除敏感或不须要的标签。

3、批改标签的名字或标签的值等。

要实现上述性能,咱们就须要对标签进行从新标记
通过从新标记,咱们能够管制、治理并标准化环境中的指标。

二、简化的指标抓取的生命周期

从上图中可知,咱们有2个阶段(relable_configsmetric_relabel_configs)能够进行从新标记。

1、配置参数详解

# 从已有的标签抉择值的源标签组;多个标签,应用separator分隔;# regex匹配源标签里的值[ source_labels: '[' <labelname> [, ...] ']' ]# 多个 source_labels 时以这个连接起来[ separator: <string> | default = ; ]# 替换成的指标标签,能够应用正则中的分组[ target_label: <labelname> ]# 正则表达式匹配标签中的值[ regex: <regex> | default = (.*) ]# Modulus to take of the hash of the source label values.[ modulus: <int> ]# 替换正则表达式匹配的分组,分组援用应用 $1,$2,$3[ replacement: <string> | default = $1 ]# 正则表达式匹配后执行的动作[ action: <relabel_action> | default = replace ]

1、action:存在的值

1、替换标签值

  1. replace:首先将source_labels中指定的各标签的值以separator进行连接起来,而后将regex字段中的正则标签是对连接起来的标签值进行匹配断定,如果匹配上了,则将target_label字段中指定的标签的值替换为replacement字段中保留的值。
  2. hashmod:target_label的值设置为一个hash值,该hash则由modules字段指定的hash模对source_labels上各标签的串联值进行hash计算生成。

2、删除指标

  1. keep: 应用regex不能匹配到target上的source_labels上的各标签的串联值时,则删除该target
  2. drop:应用regex能匹配到target上的source_labels上的各标签的串联值时,则删除该target

3、创立或删除标签

  1. lablemap:regex对所有的标签名进行匹配断定,而后将匹配到的标签的值赋给replacement字段指定的标签名之上。通常用于生成一个新的标签。
  2. labeldrop:regex对所有的标签名进行匹配判断,可能匹配到的标签从该target的标签集中删除。
  3. labelkeep:regex对所有的标签名进行匹配判断,不可能匹配到的标签从该target的标签集中删除。

2、删除标签注意事项

标签工夫序列唯一性束缚。如果删除标签或重命名标签并导致工夫序列反复,那么零碎 可能会呈现问题。

3、几个零碎内置的标签

__address__:以后Target实例的拜访地址<host>:<port>。
__scheme__:采集指标服务拜访地址的HTTP Scheme,HTTP或者HTTPS。
__metrics_path__:采集指标服务拜访地址的拜访门路。
__param_<name>:采集工作指标服务的中蕴含的申请参数。
__name__:此标签是标识指标名称的预留标签。

1、relable_configs 阶段

该阶段产生在指标抓取之前,即来自服务发现的指标。

示例:将__scheme__、__address__和__metrics_path__标签对应的值连接起来,判断是否是以(http或https)结尾,如果是,则将 instance 标签对应的值批改成正确匹配的值。

scrape_configs:  - job_name: 'prometheus'    static_configs:    - targets: ['localhost:9080']    relabel_configs:      - source_labels: ["__scheme__","__address__","metrics_path__"]        regex: "(http|https)(.*)"        separator: ""        target_label: "instance"        replacement: "${1}://${2}"        action: replace

2、metric_relable_configs 阶段

该阶段产生在指标抓取之后且数据没有保留到零碎之前。

示例:删除go_info标签

三、参考文档

1、https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config