2.3.0 数据处理

Prometheus 支持数据处理,主要包括 relabel、replace、keep、drop 等操作,提供过滤数据或者修改样本的维度信息等功能。

2.3.1 重新定义标签

在需要添加或者替换一个标签时需要重新定义标签,例如,在基于 Kubernetes 服务发现的环境中有很多 Prometheus 注入的格式:

通过 replace 或者 labelmap 的方式可以针对这些内部使用的标签进行重命名或者将多个标签的内容进行组合。

2.3.2 标签筛选

Prometheus 会从 target 中获取所有暴露的数据,但某些数据对 Prometheus 是无用的,如果直接保存这些数据,则不仅浪费空间,还会降低系统的吞吐量。Prometheus 提供了 keep 或 drop 机制,如果设置了 keep 机制,则会保留所有匹配标签的数据;如果设置了 drop 机制,则会丢弃匹配标签的数据,从而完成数据过滤。
除了处理 keep 或 drop,Prometheus 还支持 Hash 的分区采集,通过对 target 地址计算 Hash 值,然后取模匹配 Prometheus 设定的值,便可以过滤该 Prometheus 负责采集的 target,这也是一种服务端负载均衡的方案,从而扩展 Prometheus 的采集能力。下面是一种通过 Hash 取模的经典用法: