OpenTSDB 安裝 啟動 資料儲存

衣舞晨風發表於2017-05-28

1、安裝啟動zookeeper並啟動

 zkServer.sh start

2、安裝hadoop
參考文章:http://www.powerxing.com/install-hadoop-in-centos/
開啟 NaneNode 和 DataNode 守護程式

./sbin/start-dfs.sh

3、安裝hbase
參考:http://liubin.org/blog/2016/03/05/tsdb-opentsdb/
4、配置hbase對應的環境變數

#set HBASE environment
export HBASE_HOME=/home/jiankunking/software/hbase-1.3.1
export PATH=$PATH:$HBASE_HOME/bin

重新整理環境變數:

source /etc/profile

5、啟動hbase

nohup ./bin/start-hbase.sh

6、安裝opentsdb

git clone git://github.com/OpenTSDB/opentsdb.git
cd opentsdb
./build.sh

執行完以上命令後,將會在build資料夾下生成一個tsdb.jar,接下來安裝:

cd build/
make install

7、初始化opentsdb表結構

env COMPRESSION=NONE ./src/create_table.sh

8、啟動opentsdb

sudo build/tsdb tsd --port 14242 --staticroot=/home/jiankunking/software/opentsdb/staticroot --cachedir=/home/jiankunking/software/opentsdb/cachedir --auto-metric

安裝過程中問題記錄:
1、更新

sudo apt-get -f 

2、問題:./bootstrap: 17: exec: autoreconf: not found

sudo apt-get install autoconf

3、啟動habse shell

bin/hbase shell

啟動shell之後,輸入命令:list

hbase(main):001:0> list
TABLE                                                                                                                       
tsdb                                                                                                                          
tsdb-meta                                                                                                                     
tsdb-tree                                                                                                                   
tsdb-uid                                                                                                                     
4 row(s) in 0.5360 seconds
=> ["tsdb", "tsdb-meta", "tsdb-tree", "tsdb-uid"]

3、新增
post http://192.168.179.129:14242/api/put/details

{
    "metric": "sys.cpu.nice",
    "timestamp": 1346846400,
    "value": 18,
    "tags": {
       "host": "web01",
       "dc": "lga"
    }
}

tsdb

儲存資料點

hbase(main):001:0> scan 'tsdb'
ROW                                              COLUMN+CELL                                                                                                                                   
 \x00\x00\x01PG>\xC0\x00\x00\x01\x00\x00\x01\x00 column=t:\x00\x00, timestamp=1495927692942, value=\x12
 \x00\x02\x00\x00\x02                                                                                                                                                                          
1 row(s) in 0.6230 seconds

小注:10進位制數值18轉16進位制後為:0x12

左面的row key則是 OpenTSDB 的特點之一,其規則為:

<metric_UID><timestamp><tagk1_UID><tagv1_UID>[...<tagkN_UID><tagvN_UID>]

tsdb-uid

用來儲存名字和UID(metric,tagk,tagv)之間互相對映的關係,都是成組出現的,即給定一個name和uid,會儲存(name,uid)和(uid,name)兩條記錄。

hbase(main):012:0> scan 'tsdb-uid'
ROW                                              COLUMN+CELL                                                                                                                                   
 \x00                                            column=id:metrics, timestamp=1495927692002, value=\x00\x00\x00\x00\x00\x00\x00\x01                                                            
 \x00                                            column=id:tagk, timestamp=1495927692081, value=\x00\x00\x00\x00\x00\x00\x00\x02                                                               
 \x00                                            column=id:tagv, timestamp=1495927692109, value=\x00\x00\x00\x00\x00\x00\x00\x02                                                               
 \x00\x00\x01                                    column=name:metrics, timestamp=1495927692020, value=sys.cpu.nice                                                                              
 \x00\x00\x01                                    column=name:tagk, timestamp=1495927692041, value=host                                                                                         
 \x00\x00\x01                                    column=name:tagv, timestamp=1495927692064, value=web01                                                                                        
 \x00\x00\x02                                    column=name:tagk, timestamp=1495927692089, value=dc                                                                                           
 \x00\x00\x02                                    column=name:tagv, timestamp=1495927692113, value=lga                                                                                          
 dc                                              column=id:tagk, timestamp=1495927692091, value=\x00\x00\x02                                                                                   
 host                                            column=id:tagk, timestamp=1495927692046, value=\x00\x00\x01                                                                                   
 lga                                             column=id:tagv, timestamp=1495927692115, value=\x00\x00\x02                                                                                   
 sys.cpu.nice                                    column=id:metrics, timestamp=1495927692022, value=\x00\x00\x01                                                                                
 web01                                           column=id:tagv, timestamp=1495927692073, value=\x00\x00\x01 

這裡寫圖片描述

1.第一條記錄:rowkey為\x00,含3個欄位:metrics,tagk,tagv,其值分別是已經新增的所有指標、標籤名和標籤值的數量。這一條資料是系統生成和維護的。這裡有兩個metrics:cpu和mem,兩個key:host和type,兩個value:foo和user,所以 rowkey為\x00的三個資料的value都是2

2.在OpenTSDB中,每一個metric、tagk或者tagv在建立的時候被分配一個唯一標識叫做UID,他們組合在一起可以建立一個序列的UID或者TSUID。在OpenTSDB的儲存中,對於每一個metric、tagk或者tagv都存在從0開始的計數器,每來一個新的metric、tagk或者tagv,對應的計數器就會加1。當data point寫到TSD時,UID是自動分配的。你也可以手動分配UID,前提是auto metric被設定為true。

參考文章:http://blog.csdn.net/bluishglc/article/details/31052749

opentsdb基礎概念可以參考:https://yq.aliyun.com/articles/25847

解密OpenTSDB的表儲存優化

軟體版本:
Ubuntu 16.04.2 LTS
hadoop 2.8.0
hbase 1.3.1
opentsdb 2.3.0

作者:jiankunking 出處:http://blog.csdn.net/jiankunking

相關文章