乐趣区

关于运维:Prometheus重新标记

一、背景

咱们晓得 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

退出移动版