一、背景
咱们晓得 prometheus
是一个工夫序列数据库。会周期性的从各个 target
上抓取数据。那么咱们抓取回来的各种指标数据,咱们有没有方法再次进行解决呢?
比方:
1、增加或删除某些不必要的标签。
2、从指标中删除敏感或不须要的标签。
3、批改标签的名字或标签的值等。
要实现上述性能,咱们就须要对标签进行 从新标记
。
通过 从新标记
,咱们能够管制、治理并标准化环境中的指标。
二、简化的指标抓取的生命周期
从上图中可知,咱们有 2 个阶段 (relable_configs
和metric_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、替换标签值
replace:
首先将source_labels
中指定的各标签的值以separator
进行连接起来,而后将regex
字段中的正则标签是对连接起来的标签值进行匹配断定,如果匹配上了,则将target_label
字段中指定的标签的值替换为replacement
字段中保留的值。hashmod:
将target_label
的值设置为一个 hash 值,该 hash 则由modules
字段指定的 hash 模对source_labels
上各标签的串联值进行 hash 计算生成。
2、删除指标
keep:
应用regex
不能匹配到target
上的source_labels
上的各标签的串联值时,则删除该target
。drop:
应用regex
能匹配到target
上的source_labels
上的各标签的串联值时,则删除该target
。
3、创立或删除标签
lablemap:
将regex
对所有的标签名进行匹配断定,而后将匹配到的标签的值赋给replacement
字段指定的标签名之上。通常用于生成一个新的标签。labeldrop:
将regex
对所有的标签名进行匹配判断,可能匹配到的标签从该target
的标签集中删除。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