Prometheus对接阿里云TSDB For InfluxDB®️服务

更新时间:

Prometheus是指标监控领域的领军软件,其提供的远程存储接口可将InfluxDB作为时序数据的存储,解锁本地存储的限制,提供更稳定可靠的用户体验。本文将介绍如何使用阿里云的TSDB For InfluxDB®服务来对接Prometheus,构建监控数据的高效存储方案。

背景信息

Prometheus是一套监控和告警系统,最初由SoundCloud公司开发,2016年加入CNCF,成为流行的开源项目。Prometheus支持多维数据模型,使用metric和label来表示时序数据,同时提供了PromQL查询语言来支持多维查询。存储方面,Prometheus内置一个基于本地存储的时序数据库,这个单节点的数据库在扩展性和可靠性方面都有所限制,功能也不够强大;Prometheus没有在存储系统深入造轮子,而是通过提供接口的方式来集成其他存储系统,建立了灵活多样的生态。Prometheus的远端存储(remote storage)原理如下图所示:

Prometheus定义了同远端存储的读写接口,交互协议使用protocol buffer定义,传输基于HTTP;一个存储系统如果要支持Prometheus,仅需要实现一个adapter层,将Prometheus的读写请求转换为其内部的格式来处理。TSDB For InfluxDB®时序数据库提供高性能数据存储功能,支持数据保留策略等特性,是Prometheus远端存储很好的选择TSDB For InfluxDB®内置了对Prometheus协议的支持,集成了adapter的功能,直接提供了两个HTTP API来处理Prometheus读写请求。关于TSDB For InfluxDB®时序数据库详细说明,请参见InfluxDB®️介绍

  • /api/v1/prom/read

  • /api/v1/prom/write

前提条件

配置 Prometheus

说明

Prometheus支持多个平台,本文以Linux系统为例来介绍。

Linux平台的Prometheus下载解压后,包含了一个配置文件,我们仅需要在配置文件中增加InfluxDB远端存储的配置。

$ ls
console_libraries  consoles  data  LICENSE  NOTICE  prometheus  prometheus.yml  promtool

使用文本编辑器(比如vim)修改prometheus.yml, 在文件末尾增加下面几行:

说明

其中URL地址替换为真实的TSDB For InfluxDB®实例的公网地址,u值请替换为已创建的用户,p值请替换为用户密码。

remote_write:
    - url: "https://ts-1234abcd.influxdata.rds.aliyuncs.com:3242/api/v1/prom/write?db=prometheus&u=prom&p=mypassword"

remote_read:
    - url: "https://ts-1234abcd.influxdata.rds.aliyuncs.com:3242/api/v1/prom/read?db=prometheus&u=prom&p=mypassword"

修改完成后保存该配置文件,然后启动Prometheus:

$./prometheus --config.file=prometheus.yml

启动成功后,就可以通过浏览器来访问prometheus服务,其默认端口为9090。

参考文档