3.5.1 OpenTSDB 概述
OpenTSDB是基于HBase的分布式、可伸缩的时间序列数据库。它存储的是时间序列数 据,时间序列数据是指在不同时间点上收集到的数据,这类数据反映了一个对象随时 间的变化状态或程度。
OpenTSDB 架构
OpenTSDB由时间序列守护进程(TSD)和一组命令行实用程序组成。与OpenTSDB的 交互主要通过运行一个或多个TSD来实现。每个TSD都是独立的。没有主服务器,没有 共享状态,因此您可以根据需要运行任意数量的TSD来处理您向其投入的任何负载。
每个TSD使用CloudTable集群中的HBase来存储和检索时间序列数据。数据模式经过高 度优化,可快速聚合相似的时间序列,从而最大限度地减少存储空间。TSD的用户不 需要直接访问底层存储。您可以通过HTTP API与TSD进行通信。所有通信都发生在同 一个端口上(TSD通过查看它收到的前几个字节来确定客户端的协议)。
图3-25 OpenTSDB 架构
基本概念
● data point:时间序列数据点,包括metric、timestamp、value和tag。表示某个 metric在某个时间点的数值。
● metric:指标项。例如,在系统监控中的CPU使用率、内存、IO等指标。
● timestamp:UNIX时间戳(自Epoch以来的秒或毫秒),即value产生的时间。
● value:某个metric的值,是JSON格式的事件或直方图/摘要。
● tag:标签,是由Tagk和Tagv组成的键值对。用于描述该点所属的时间序列。
标签允许您从不同的源或相关实体中分离出类似的数据点,因此您可以轻松地单 独或成组地绘制它们。标签的一个常见用法是使用生成数据点的机器名称以及机 器所属的集群或池的名称来注释数据点。这使您可以轻松地制作显示每个服务器 的服务状态的仪表盘,以及显示跨逻辑服务器池的聚合状态的仪表盘。
OpenTSDB 系统表简介
OpenTSDB是基于HBase存储时序列数据的,在集群中开启OpenTSDB后,系统会在集 群中创建4张HBase表。OpenTSDB系统表如表3-15所示。
说明
请不要人为去修改这4张HBase表,因为这可能会导致OpenTSDB不可用。
表3-15 OpenTSDB 系统表
表名 说明
OPENTSDB.DATA 用于存储数据点,OpenTSDB的所有数据都存储在这个表中。
OpenTSDB按照salt进行分区,默认20个region,暂不支持设 置。
OPENTSDB.UID 用于存储UID映射,数据点中的每个metric,tag都会映射成 UID,同时每个UID反向映射为metric,tag,这些映射关系存储 在这个表中。
OPENTSDB.TREE 用于存储metric的结构信息,默认未开启该特性。
OPENTSDB.MET
A 用于存储时间序列索引和元数据,默认未开启该特性。
3.5.2 连接 OpenTSDB
创建CloudTable集群时,如果开启了OpenTSDB,等集群创建成功后,用户就可以在 弹性云服务器上通过OpenTSDB链接地址访问OpenTSDB,向资源路径发送HTTP请求 进行数据的读写。
如果在创建集群时没有开启OpenTSDB,可以在集群创建完成后,参考开启
OpenTSDB进行开启。
OpenTSDB 的 HTTP API 访问
OpenTSDB只支持通过HTTP API的方式进行访问。对于未开启IAM认证的集群,
OpenTSDB对外的访问是采用HTTP协议的方式实现,对于开启了IAM认证的集群,
OpenTSDB对外的访问是采用HTTPS协议的方式实现。
说明
HTTP协议本身有安全风险,HTTPS是安全协议,建议使用HTTPS连接方式。
CloudTable服务上的OpenTSDB使用的版本是OpenTSDB 2.3.0,它的接口与开源 OpenTSDB的接口是保持一致的。
有关OpenTSDB API的更多信息,请参考《表格存储服务开发指南》的OpenTSDB API
简介章节。
连接 OpenTSDB
步骤1 获取OpenTSDB链接地址。
请登录表格存储服务管理控制台,在左侧导航树单击“集群模式”,在集群列表中找 到所要查看的集群,单击集群名称进入集群基本信息页面,获取其中的“OpenTSDB 链接地址(内网)”。
图3-26 OpenTSDB 链接地址
步骤2 准备客户端运行环境。
OpenTSDB链接地址是内网地址,您需要准备一台和CloudTable集群在相同区域、可 用区、虚拟私有云、子网和安全组的弹性云服务器才能访问OpenTSDB。
创建并登录弹性云服务器的具体操作,请参见准备弹性云服务器。
步骤3 在弹性云服务器上,访问OpenTSDB。
您可以通过以下两种方式访问OpenTSDB:
● 使用cURL命令行工具或Postman等REST客户端,发送HTTP请求访问 OpenTSDB。
例如,使用cURL命令行工具发送以下请求,如果返回200 OK,说明连接 OpenTSDB成功。{OpenTSDB URL}为步骤1中获取的OpenTSDB链接地址。
curl -i -X GET http://{OpenTSDB URL}/api/version
以下是一个写入数据和查询数据的示例:
a. 写入数据:
curl -i -X POST -d '{"metric":"money", "timestamp":1524900283, "value":1, "tags":
{"card":"card1"}}' http://{OpenTSDB URL}/api/put?sync -k -v
b. 查询数据:
curl -i -X POST -d '{"start": 1524900283,"end": 1524900289,"queries": [{"aggregator":
"sum","metric": "money"}]}' http://{OpenTSDB URL}/api/query -k -v
● 开发应用程序,调用HTTP API访问OpenTSDB进行数据的读写。
详细内容请参考《表格存储服务开发指南》中的以下章节:
–
开发OpenTSDB应用
–