2.3 数据处理

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取模的经典用法: