OpenTSDB部署手记

OpenTSDB是一个基于HBase上的实时监控信息收集和展示平台。它支持秒级数据采集metrics,使用HBase进行永久存储,可以做容量规划,并很容易的接入到现有的监控系统里。OpenTSDB可以从大规模的设备中获取相应的metrics并进行存储、索引以及服务,从而使得这些数据更容易让人理解,如web化,图形化等。

1. 安装

Opentsdb依赖Gnuplot,它 是一个命令行的交互式绘图工具。用户通过输入命令,可以逐步设置或修改绘图环境,并以图形描述数据或函数,使我们可以借由图形做更进一步的分析。

Opentsdb目前有现成的rpm、deb打包,非常方便。下载链接:https://github.com/OpenTSDB/opentsdb/releases .下面我们安装rpm。

配置

配置完成后,我们通过下面命令在HBase中建立opentsdb所需的表。默认情况下opentsdb建立的HBase表启用了lzo压缩。需要开启Hadoop中的lzo压缩支持, 这里我们直接在下面脚本中把COMPRESSION的支持关闭:

然后在HBase用户下执行下面脚本,在HBase中create所需的几张表。

启动tsd(Time Series Daemon)服务,该命令有一些常用参数,会覆盖/etc/opentsdb/opentsdb.conf中的配置。参数列表如下:

那么我们通过14242端口启动TSD。

OK!下面我们打开URL:http://debugo01:14242/
metrics
Opentsdb已经安装成功!

2. OpenTSDB设计探索

在OpenTSDB中,有下面一个基本的概念:
Metric:一个可测量的单位的标称。metric不包括一个数值或一个时间,其仅仅是一个标签,包含数值和时间的叫datapoints,metric是用逗号连接的不允许有空格,例如:proc.loadavg.5m
Timestamp:一个绝对时间戳值。
Tags:tag描述被测量的实体,Tags由tag key和tag value组成,前者表示一个分组,后者表示一个特定的项。
Data Point:可以被记录为某一个Timestamp的一个数值。
Time Series:一个metric的带有多个tag的data point集合。
UID:在OpenTSDB中,每一个metric、tagk或者tagv在创建的时候被分配一个唯一标识叫做UID,他们组合在一起可以创建一个序列的UID或者TSUID。在OpenTSDB的存储中,对于每一个metric、tagk或者tagv都存在从0开始的计数器,每来一个新的metric、tagk或者tagv,对应的计数器就会加1。
TSUID。当一个data point被写到OpenTSDB时,其row key格式为:[…],不考虑时间戳的话,将其余部分都转换为UID,然后拼在一起,就可以组成为TSUID。在OpenTSDB中,所有数据存储在一张叫做tsdb的表中,这是为了充分利用hbase有序和region分布式的特点。所有的值都保存在唯一列簇t中。TSD启动后会接收到监控数据,包括指标(metric_uid)、时间戳、数据、tag标签,tag标签包括tag名称ID和tag值ID。
根据HBase rowkey有序的原则,rowkey为[…],UID默认编码为3 Bytes,而时间戳为4 Bytes编码。例如:proc.loadavg.5m 1292148123 42 host=debugo01
对于指标proc.loadavg.5m的ID为:[0, 0, 1], 标签名称的ID为:[0, 0, 1] debugo01标签值的ID为:[0, 0, 1],他们组成rowkey:

由此可见,对于metric + tags相同的数据都会连续存放,且metic相同的数据也会连续存放,这样对于scan以及做aggregation都非常有帮助。
Opentsdb使用一个单独的较小的表叫做tsdb-uid用来存储UID映射,包括正向的和反向的。存在两列簇,一个列簇叫做name用来将一个UID映射到一个字符串,另一个列族叫做id,用来将字符串映射到UID。列簇的每一行都至少有以下三列中的一个:
metrics 将metric的名称映射到UID
tagk 将tag名称映射到UID
tagv 将tag的值映射到UID

3. 使用OpenTSDB

首先创建metrics,命令会输出它的UID。

编写数据加载脚本,脚本来自http://scm.zoomquiet.io/data/20131204123732/index.html

每隔15秒会输出如下信息到tsd

通过Scan UID表可以找到它们对应的UID。

在Web页面中输入相应的metrics,可以得到数据的图展示:
graph

^^

参考

http://scm.zoomquiet.io/data/20131204123732/index.html
http://www.cnblogs.com/gsblog/p/4029894.html

Posted in BigData, HBase|Hive, NoSQL, Tools.
  1. 您好 请问您文章中说的:每隔15秒会输出如下信息到tsd:put proc.loadavg.1m 1288946927 0.36 host=debugo01这个信息可以在哪里看到呢?vim nohop.out 看到的信息是put: illegal argument: invalid tag: host=