全部产品

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

更新时间:2019-04-25 17:12:17

前言

阿里云近期开启了时间序列数据库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远端存储的配置。

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

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

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

其中URL地址即为前面的公网地址,prom为新建的用户,mypassword请替换为自己设置的用户密码。
修改完成后保存该配置文件,然后启动Prometheus:

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

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

参考文档


InfluxDB® is a trademark registered by InfluxData, which is not affiliated with, and does not endorse, TSDB for InfluxDB®.