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
前提条件
已购买TSDB For InfluxDB®实例,请参见购买流程。
已创建数据库与用户,请参见管理用户账号和数据库。
已安装Prometheus,请参见官方文档。
配置 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。
参考文档
阿里云TSDB For InfluxDB®InfluxDB®️介绍