前言
阿里云推出了时间序列数据库TSDB For InfluxDB®,是国内首家提供InfluxDB服务的云服务商。InfluxDB作为流行的时序数据库系统,支持高性能读写,在监控,IOT,实时分析等领域有广泛应用;而Prometheus则是指标监控领域的领军软件,其提供的远程存储接口可将InfluxDB作为时序数据的存储,解锁本地存储的限制,提供更稳定可靠的用户体验。本文将介绍如何使用阿里云的TSDB For InfluxDB®服务来对接Prometheus,构建监控数据的高效存储方案。
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读写请求:
- /api/v1/prom/read
- /api/v1/prom/write
Prometheus支持多个平台,本文以Linux系统为例来介绍,MacOS和Windows系统的使用会稍有不同。
创建阿里云TSDB For InfluxDB®实例和数据库
1. 实例准备
在使用之前,首先需要在阿里云上购买TSDB For InfluxDB®实例(当前处于公测期,可免费试用),购买页面请点这里。
实例创建好后,在实例详情页面可以获取实例的网络地址。用户可以申请开通公共网络地址,也可以在VPC内使用VPC网络地址。
下文以公网地址为例来说明,假设其地址和端口为:**ts-1234abcd.influxdata.rds.aliyuncs.com:3242**
2. 创建数据库
有了实例之后,需要创建一个数据库来存储Prometheus数据。
进入时序数据管理->数据库管理界面,单击创建,新建一个数据库。
将数据库命名为prometheus,单击确定完成数据库的创建。
3. 创建用户
进入时序数据管理->账号管理界面,单击创建,新建一个用户账号。
命名新用户为prom,并且授予这个用户在数据库prometheus上的读写权限,设置并确认密码,单击确定完成用户的创建。
配置 Prometheus
Prometheus的安装可以参考官方文档,这里不详细介绍。
Linux平台的Prometheus下载解压后,包含了一个配置文件,我们仅需要在配置文件中增加influxdb远端存储的配置。
$ ls
console_libraries consoles data LICENSE NOTICE prometheus prometheus.yml promtool
使用文本编辑器(比如vim)修改prometheus.yml, 在文件末尾增加下面几行:
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"
其中URL地址即为前面的公网地址,prom为新建的用户,mypassword请替换为自己设置的用户密码。
修改完成后保存该配置文件,然后启动Prometheus:
$./prometheus --config.file=prometheus.yml
启动成功后,就可以通过浏览器来访问prometheus服务,其默认端口为9090.
参考文档
- 阿里云TSDB For InfluxDB®购买页面
- 阿里云TSDB For InfluxDB®用户文档
- Prometheus endpoints support in InfluxDB
- Prometheus远端存储
InfluxDB® is a trademark registered by InfluxData, which is not affiliated with, and does not endorse, TSDB for InfluxDB®.