Receiver

Recevier目前是实验性的组件,其设计目的在于构建Prometheus即服务。

Receiver组件实现了Prometheus的Remote Write API,Prometheus节点上采集的指标数据不会写到本地而是通过该接口写入到Receiver中。Receiver将接收到的数据以TSDB的Block形式存储在本地,当生成只读块时,Receiver会将该块上传到对象存储桶中。

Receiver扮演着数据写入网关的角色,接收来自于现有的Prometheus服务器的数据,既保留的架构的简单性,同时通过长期存储,水平可伸缩性和下采样扩展了其功能。只有在推送方式是唯一可行的解决方案时才推荐使用Receiver组件,例如跨数据中心的数据汇集。

多租户

Receiver提供了对于数据写入的租户隔离,可以在服务启动时指定该组件所对应的租户ID和用以识别租户ID的请求头名称。Receiver会通过哈希环组集群,当携带了租户ID头部的请求到达时,会判断该Receiver是否与租户ID对应,是则将数据写入,否则将请求转到其他对应的Receiver上。

对于租户级全局查询,建议使用分层的Querier的划分所属Sidecar的方法。此外,可以使用prom-label-proxy来强制为查询添加额外的过滤标签。

多副本

可以为Receiver设置副本因子(一般为3)以及用以识别该因子的请求头部名称,当写入请求到达时,Receiver会判断是否携带了副本因子头部,如果没有则将请求复制为三个请求,每个请求上都携带了副本因子的头部以及因子序号,根据哈希环判断后将请求发出,当超过一半的副本成功写入到Receiver后才会响应写入成功。

最后更新于