Prometheus 学习之——远端存储

本文介绍了Prometheus的远端存储架构,包括其总体架构、远端接口规范、相关参数和存储汇聚。Prometheus通过Adapter适配器对接InfuxDB、OpenTSDB等远端存储,使用HTTP POST请求+protobuf编码的方式进行数据交互。文章详细阐述了Adapter如何将Prometheus的请求转化为第三方存储接口的请求,以及Prometheus如何判断并执行本地和远端存储的读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Prometheus 学习之——远端存储


前言

Prometheus 是 CNCF 收录的第二个项目,已经成为了云原生时代监控的标准。


一、总体架构

    面对更多历史数据的持久化,Prometheus 单纯依靠本地存储远不足以应对,为此引入了远端存储。为了适应不同的远端存储,Prometheus 并没有选择对接各种存储,而是定义了一套读写存储接口,并引入了 Adapter 适配器,将 Prometheus 的读写请求转化为第三方远端存储接口,从而完成数据读写,整体架构如下:
在这里插入图片描述
    目前已经实现 Adapter 的远程存储主要包括 InfuxDB、OpenTSDB、CreateDB、TiKV、Cortex、M3DB 等。

二、远端接口规范

    Prometheus 通过 『HTTP POST 请求+protobuf 编码』方式调用 Adapter 的读接口和写接口,未来应该会将采用效率更高的『gRPC(HTTP2)+ Protobuf』方式。接口被定义在 remote.proto 文件中,内容如下:

//写请求参数
message WriteRequest {
  repeated Prometheus.TimeSeries timeseries = 1;
}
//读请求参数
message ReadRequest {
  repeated Query queries = 1;
}
//读返回参数
message ReadResponse {
  repeated QueryResult results = 1;
}
//请求参数
message Query {
  int64 start_timestamp_ms = 1;
  int64 end_timestamp_ms = 2;
  repeated Prometheus.LabelMatcher matchers = 3;
  Prometheus.ReadHints hints = 4;
}
//查询结果
message QueryResult {
  repeated Prometheus.TimeSeries timeseries = 1;
}

    在上面的 proto 文件中定义了请求参数和返回结果,其中,请求参数 Query 主要包括监控数据查询的开始时间、结束时间和匹配的标签,这里 repeated 表示可以添加多个标签的条件筛选;返回参数 QueryResult 主要包括时间序列 TimeSeries,时间序列主要包含这个序列的标签和样本数据,样本数据以『时间戳:样本值』格式传输。
    每种存储的 Adapter 都通过实现读接口和写接口对接到 Prometheus,当然,Adapter 也可以只实现其中一个接口。若通过 Adapter 实现 OpenTSDB 的一个写接口,那么 Prometheus 会将数据写入 OpenTSDB 中,对监控数据的查询可以借助 OpenTSDB 原生的查询接口实现。
    下面通过官方提供的一个 InfluxDB Adapter 说明 Prometheus 远端存储接口的实现(代码路径为 Prometheus/documentation/examples/remote_storage/remote_storage_Adapter)。

  1. 首先启动写请求监听:
 http.HandleFunc("/write", func(w http.ResponseWriter, r *http.Request))
  1. 接着,解析写请求的参数,并将其转化为指标格式:
compressed, err := ioutil.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值