OpenTSDB2.3.0安装部署

 

2017年05月31日 16:43:43 阅读数:7594 标签: OpenTSDB hadoop 数据库  更多

个人分类: 数据库 时序数据库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012842205/article/details/72817966

转载请注明出处:http://blog.csdn.net/u012842205/article/details/72817966

一、简介

        OpenTSDB是基于HBase存储时间序列数据的一个开源数据库,但只是一个HBase的应用而已。也即是在HBase之上加了一层外壳,用于更好的处理时序数据库,真实的数据存储还是在HBase。

         时序数据是基于时间的一系列的数据。在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析,机器学习,实现预测和预警。时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能。

         OpenTSDB实现的时间序列Schema主要有两个表:tsdb-uid和tsdb. 前者描述指标(metrics)相关的元数据,后者存储时间序列数据。首先我们来了解一下“指标”(metrics)的概念,简单讲一个指标就是一个需要收集的数据项,但是只有指标是不能全面地描述出一条数据产生的相关背景信息的,比如:如果我们要统计cpu的使用率,我们可以建立一下名为proc.stat.cpu的metrics,如果我们从不同的机器和用户下收集了大量的cpu信息,如果没有对一条信息进行一定地标识,我们是无法区分出哪些数据来自哪台机器的哪个用户,所以我们还需要建立一些“标签”(Tag)来标识一条数据。严格地说,指标和标签之间并没有必然的从属关系,就像两个不同的指标的数据可能都有指示其来自哪台主机的host标签一样,但是有一点是确定的,即:对于一条数据来说,应该至少含有一个指标和一个标签,这样的数据才是有意义的,因此,在OpenTSDB的表设计上,就把“指标”(metrics)和“标签”(Tag)统一放在了tsdb-uid表中存储,格式为:RowKey(自增ID,3字节数组):name:metrics,name:tagk,name:tagv同时对它们之间的反向关联关系也作了展开存储。

二、安装

1、安装环境

操作系统:CentOS Linux release 7.2.1511 (Core)

OpenTSDB版本:2.3.0

JDK版本:1.8.1_101

Apache HBase版本:1.2.2

以上组件的安装步骤本文不再赘述。

2、安装

OpenTSDB属于HBase上层应用,其底层是与HBase交互,而Schema的逻辑都是OpenTSDB控制。这里需要提一点,OpenTSDB一般不用集群安装,但可以有集群部署的方案,这些方案大多使用第三方组件完成。具体参看官方文档。本文只记录单节点安装部署。下面的操作都针对安装节点完成。

除了上面提到的依赖组件,Opentsdb还依赖Gnuplot,它是一个命令行的交互式绘图工具,一般使用Linux发行版的源即可安装:

yum install gnuplot

注意:OpenTSDB依赖Gnu Make。

安装OpenTSDB,进入OpenTSDB官网,下载到tar.gz。并解压:

tar -xzvf /home/opentsdb/opentsdb-2.3.0.tar.gz  -C /home/opentsdb/

注意:这里我已经在服务器上创建了一个opentsdb系统用户,用于运行opentsdb服务。

我们下载到的是github托管的源码,这里需要编译出jar。切换到解压后的目录,运行脚本文件configuration。这个脚本文件检查安装环境的组件依赖,调整一些参数,并最后生成Makefile。运行命令`make`进行编译。

当编译正常结束后,将在当前目录产生tsdb-2.3.0.jar文件。这个jar依赖的所有jar文件都在当前目录的./third_party下。这时候还会有一个tsdb的脚本,这个脚本将用于启动OpenTSDB服务。这个脚本也是运行其他tools的入口调用脚本,非常简单。

如此安装完成。接下来是配置。

三、配置

安装完成后,第一步是创建schema所需要的表:

env COMPRESSION=NONE HBASE_HOME=/home/hadoop/hbase ./src/create_table.sh

这条命令同样在根目录下运行。

其他配置

使用配置文件opentsdb.conf,在部署根目录创建配置文件即可,可以从./src得到这个文件,复制过来。更改如下配置项:

 
  1. # 接受请求的端口

  2. tsd.network.port = 4399

  3.  
  4. # 接受请求的网卡

  5. tsd.network.bind = 0.0.0.0

  6.  
  7. # HTTP客户端的GUI静态页面,这个使用默认值即可。

  8. tsd.http.staticroot = ./staticroot

  9.  
  10. # cache 路径,最好提前创建好,保证读写权限。

  11. tsd.http.cachedir = /home/opentsdb/tsdb_cache

  12.  
  13. # 是否能自动创建统计指标

  14. tsd.core.auto_create_metrics = true

  15.  
  16. # HBase表名称

  17. tsd.storage.hbase.data_table = tsdb

  18.  
  19. # HBase访问相关

  20. tsd.storage.hbase.zk_basedir = /hbase

  21. tsd.storage.hbase.zk_quorum = master1,master2,slave1,slave2

  22. tsd.storage.fix_duplicates = true

四、运行使用

1、上面有提到,运行OpenTSDB的服务使用tsdb这个脚本完成,这里我编写了一个脚本,专用于启动服务:

 
  1. #!/bin/bash

  2.  
  3. # Author: ez

  4. # Date: 2017/3/13

  5. # Discription: Start Opentsdb server.

  6.  
  7. ROOT=`dirname $0`

  8. LOG_DIR=$ROOT/logs

  9. OUT_FILE=server.log

  10.  
  11. nohup $ROOT/tsdb tsd >> $LOG_DIR/server.log 2>&1 &


逻辑很简单,只是配置了一个log目录,用于接收打印到stdout的日志。并用nohup将session终端与进程分离,挂到init上。

测试时也可以直接使用如下命令:

./tsdb tsd 


2、简单使用

启动起来后,可以使用浏览器查看GUI,配置的端口为4399。由于OpenTSDB使用的都是HTTP请求,所以这里我们同样使用HTTP请求来测试读写数据。我们使用curl工具做请求。

写入统计指标mytest.cpu,host=master1

curl -i -X POST -d '{"metric":"mytest.cpu","timestamp":1496219345,"value":1.3,"tags":{"host":"master1"}}' http://master1:4399/api/put?details

接下来通过浏览器访问GUI,输入指标(matrix)mytest.cpu,host为master1则可以得到曲线图。

猜你喜欢

转载自blog.csdn.net/wangshuminjava/article/details/82319303