openTSDB的安装与部署

openTSDB的安装与部署

0.前言

笔者的openTSDB运行在HBase集群上,这里可以参看我的其它博客,有一些关于hadoop集群的说明。

1.openTSDB简介

  • openTSDB是一个时序数据库,这里的TS即是Time Series【时间序列】。时间序列主要是统计学中的知识,包括有很多算法也是跟时间序列有关的,像ARMA,ARIMA等。利用这些算法可以方便的对数据进行预测,因此这些算法在股票,传感器数据中有着重要的应用。而这个openTSDB就是用来存储时序数据并将其展示出来【但让我说句实话,这个页面真的好丑啊+_+】

2.openTSDB部署

openTSDB是运行在HBase上的,所以如果需要好的性能,整套大数据集群是少不了的。主要如下:

  • 安装Hadoop集群;安装HBase集群;安装zookeeper集群。见笔者博客https://blog.csdn.net/liu16659/article/details/79819660【这篇博客对整个安装步骤有大概的讲解,适合大数据已入门者】
  • 安装openTSDB集群
    • step 1下载openTSDB,地址如右:https://github.com/OpenTSDB/opentsdb/releases 下载tar.gz包。
    • step 2解压缩:tar -zxvf opentsdb-2.3.0.tar.gz -C /usr/local
    • step 3.开始编译opentsdb。因为这里下载的不是rpm包,需要编译生成可执行的文件。但是经笔者验证,如果按照官网的命令去执行将会得到如下错误:
./build.sh执行报错
报错如下:
sd/BadRequestException.java ../src/tsd/ConnectionManager.java ../src/tsd/DropCachesRpc.java ../src/tsd/GnuplotException.java ../src/tsd/GraphHandler.java ../src/tsd/HttpJsonSerializer.java ../src/tsd/HttpSerializer.java ../src/tsd/HttpQuery.java ../src/tsd/HttpRpc.java ../src/tsd/HttpRpcPlugin.java ../src/tsd/HttpRpcPluginQuery.java ../src/tsd/LineBasedFrameDecoder.java ../src/tsd/LogsRpc.java ../src/tsd/PipelineFactory.java ../src/tsd/PutDataPointRpc.java ../src/tsd/QueryExecutor.java ../src/tsd/QueryRpc.java ../src/tsd/RpcHandler.java ../src/tsd/RpcPlugin.java ../src/tsd/RpcManager.java ../src/tsd/RpcUtil.java ../src/tsd/RTPublisher.java ../src/tsd/SearchRpc.java ../src/tsd/StaticFileRpc.java ../src/tsd/StatsRpc.java ../src/tsd/StorageExceptionHandler.java ../src/tsd/SuggestRpc.java ../src/tsd/TelnetRpc.java ../src/tsd/TreeRpc.java ../src/tsd/UniqueIdRpc.java ../src/tsd/WordSplitter.java ../src/uid/FailedToAssignUniqueIdException.java ../src/uid/NoSuchUniqueId.java ../src/uid/NoSuchUniqueName.java ../src/uid/RandomUniqueId.java ../src/uid/UniqueId.java ../src/uid/UniqueIdFilterPlugin.java ../src/uid/UniqueIdInterface.java ../src/utils/ByteArrayPair.java ../src/utils/ByteSet.java ../src/utils/Config.java ../src/utils/DateTime.java ../src/utils/Exceptions.java ../src/utils/FileSystem.java ../src/utils/JSON.java ../src/utils/JSONException.java ../src/utils/Pair.java ../src/utils/PluginLoader.java ../src/utils/Threads.java ../src/tools/BuildData.java ./src/net/opentsdb/query/expression/parser/*.java
javac: file not found: ./src/net/opentsdb/query/expression/parser/*.java
Usage: javac <options> <source files>
use -help for a list of possible options
make[1]: *** [.javac-stamp] Error 2
make[1]: Leaving directory `/usr/local/opentsdb-2.3.0/build'
make: *** [all] Error 2

这个报错【好像】是因为找不到某个jar包。但是我找到了另外一种解决方法,使用如下命令:
mkdir build
cp -r third_party ./build
./build.sh
然后编译成功。【编译成功的标志是在openTSDB父目录下生成build文件夹,并且会生成一个jar包:tsdb-2.3.0.jar】

  • step 4:接着执行脚本,创建openTSDB所需要的表,这些命令均已写好,只需要执行相应脚本即可。
    env COMPRESSION=NONE HBASE_HOME=/usr/local/hbase-1.4.0 ./src/create_table.sh

  • step 5:将openTSDB文件目录下的opentsdb.conf文件拷贝到./build目录下,
    mv opentsdb.conf build/opentsdb.conf配置内容如下【这里只列举出需要修改的配置项】:

# --------- NETWORK ----------
# The TCP port TSD should use for communications
# *** REQUIRED ***
tsd.network.port = 4399

# ----------- HTTP -----------
# The location of static files for the HTTP GUI interface.
# *** REQUIRED ***
tsd.http.staticroot = ./staticroot

# Where TSD should write it's cache files to
# *** REQUIRED ***
tsd.http.cachedir = /root/openTSDB_temp


# --------- CORE ----------
# Whether or not to automatically create UIDs for new metric types, default
# is False
tsd.core.auto_create_metrics = true

# Name of the HBase table where data points are stored, default is "tsdb"
tsd.storage.hbase.data_table = tsdb

# Path under which the znode for the -ROOT- region is located, default is "/hbase"
tsd.storage.hbase.zk_basedir = /hbase

# A comma separated list of Zookeeper hosts to connect to, with or without
# port specifiers, default is "localhost"
tsd.storage.hbase.zk_quorum = server4,server5,server6
  • step 6.运行openTSDB,执行命令:./tsdb tsd
  • step 7.运行之后,可以发现在当前窗口出现了很多的消息,这些便是启动openTSDB的日志消息。

3.openTSDB效果展示

  • step 1按照上述的介绍,便可以在浏览器中访问得到监控页面了,所示图形如下:
    这里写图片描述
    因为我们没有往表tsdb中存储数据,所以这是一个没有数据的页面。

  • step2.往tsdb表中存放数据,可以尝试执行如下命令:
    curl -i -X POST -d '{"metric":"mytest.cpu","timestamp":1531486607,"value":7,"tags":{"host":"server4"}}' htt//server4:4399/api/put?details。 需要注意的是更改timestamp的值。因为时序数据是一个二维数据点,每个时间戳对应一个数据点。但是我此刻的数据点可能不是你现在系统的时间点,最好改成你现在的时间点。【这个坑一定要注意,否则极不容易展示出数据】如果不知道你此刻的时间戳,可以去执行./tsdb tsd脚本所在的窗口中查找。比如,笔者的窗口就是如下这个样子:

2018-07-13 22:52:07,825 INFO  [AsyncHBase I/O Worker #2] TsdbQuery: 
TsdbQuery(start_time=1531492080, end_time=1531493527, metric=[0, 0, 1], filters=[],
rate=false, aggregator=sum, group_bys=()) matched 0 rows in 0 spans in 2.62747ms

start_time =1531492080。end_time=1531493527。在这段范围查询相应的metric,tag值得到的是0rows。相应更改这个时间戳值即可。
这里写图片描述

  • step 3我们详细介绍一下这个页面的组成部分:
    这里写图片描述
    • part 1:这个是监控数据的起始时间。可以选择
    • part 2:这个是监控数据的终止时间。这里设置成now(),即直至此刻的数据
    • part 3:勾选这个选项,可以设置成自动加载数据
    • part 4:与part3对应,这里是自动加载数据的频数
    • part 5:这里就是openTSDB的精华所在,一个是metric,一个是tag。这个需要与相应的数据来设置。
  • step 4.图形展示页面可以放大/缩小—>相应的导致时间点的前移/后退。从而在页面上的展示就是图形的变化。
    这里写图片描述

4.总结

整个过程需要注意以下几个步骤:
- 配置opentsdb.conf文件时,有一个选项是

# Path under which the znode for the -ROOT- region is located, default is "/hbase"
tsd.storage.hbase.zk_basedir = /hbase

这个值是zookeeper保存hbase数据的-ROOT-所在的路径。这个路径一般默认都是存放在/hbase路径下。这个/hbase路径是一个虚拟路径,并非物理真实存在。可以启动zkCli.sh服务查看。如下:

[zk: localhost:2181(CONNECTED) 1] ls /    #根下的文件【这里就是-root-所在的地方】
[cluster, controller_epoch, brokers, zookeeper, admin, isr_change_notification, consumers, log_dir_event_notification, latest_producer_id_block, config, hbase]

[zk: localhost:2181(CONNECTED) 2] ls /hbase   #/hbase下的文件
[replication, meta-region-server, rs, splitWAL, backup-masters, table-lock, flush-table-proc, master-maintenance, region-in-transition, online-snapshot, switch, master, running, recovering-regions, draining, namespace, hbaseid, table]

[zk: localhost:2181(CONNECTED) 3] ls /hbase/table     #真实存在hbase中的表
[hbase:meta, hbase:namespace, tsdb-tree, tsdb, tsdb-uid, tsdb-meta]
[zk: localhost:2181(CONNECTED) 4] 

5.参考文件

猜你喜欢

转载自blog.csdn.net/liu16659/article/details/81038756
今日推荐