centos7安裝部署opentsdb2.4.0


寫在前面

最近因為項目需要在讀opentsdb的一部分源碼,后面會做個小結分享出來。本人是不大喜歡寫這種安裝部署的文章,考慮到opentsdb安裝部署對於初次接觸者來說不太友好,另外對公司做測試的同事可能有些幫助作用,方便他們快速安裝部署,就把OpenTSDB 2.4.0安裝部署文檔寫在這里。

對於opentsdb是什么,應用領域這里就不說了,不了解的請看官網http://opentsdb.net/

這里只提一點,opentsdb的后端數據存儲依賴於HBase

所以安裝步驟就分為了三步 (我們也可以類比安裝傳統的依賴關系型數據庫比如mysql作為后端數據存儲的軟件)

  1. 安裝HBase (類比傳統軟件我們要安裝mysql)

  2. 創建表結構 (類比我們在mysql中創建database以及table)

  3. 安裝配置並啟動opentsdb (類比一些springboot的應用)

安裝HBase

如果已經有HBase環境了,那么請跳過這一步(大多數使用HBase集群環境應該都是用CDH管理)

官網地址: http://hbase.apache.org/

其實HBase的存儲又是依賴HDFS,當然了如果只是本地測試用,可以直接用本地文件系統代替HDFS,這樣就不需要部署一套HDFS集群了

搭建Standalone HBase,官方文檔http://hbase.apache.org/book.html#quickstart,一步一步都有,請仔細讀

這里簡單梳理一下關鍵的地方:

  • conf/hbase-env.sh文件
# The java implementation to use.
export JAVA_HOME=/usr/jdk64/jdk1.8.0_112
  • conf/hbase-site.xml文件
<configuration>
  <property>
    <!-- hbase實際存放數據地方,這里是本地文件系統,生產環境一般HDFS地址,例如hdfs://namenode.example.org:8020/hbase -->
    <name>hbase.rootdir</name>
    <value>file:///home/itwild/hbase</value>
  </property>
  <property>
    <!--
指定zookeeper的data目錄
目前hbase需要依賴zookeeper,HBase通過Zookeeper來做Master的高可用、RegionServer的監控、元數據的入口以及
集群配置的維護等工作
因為是Standalone,為了降低部署復雜度,啟動的時候也會啟zookeeper,指定zk data存儲目錄,實際使用大多用單獨的zk集群,一般不使用內置的zk
    -->
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/itwild/zookeeper</value>
  </property>
</configuration>

然后執行bin/start-hbase.sh, 啟動成功了jps命令可以看到HMaster進程。

在standalone模式下,雖然看到的是一個JVM實例,實際上啟了HMasterHRegionServerZooKeeper

啟動成功,可打開HBase Web UI, http://localhost:16010

在HBase中創建表結構

  1. 執行bin/hbase shell進入一個交互的界面 (這里我們也可以類比執行mysql -uXXX -pXXX后進入)

  2. 在交互界面里我們依次執行下面4條建表(table)語句

# opentsdb中那些metric數據就存在這張表中
# 這張表數據會很大,考慮到讀寫效率,我們注意到這張表就一個列族
create 'tsdb',{NAME => 't', VERSIONS => 1, BLOOMFILTER => 'ROW'}

# opentsdb中建立metric name、tagK、tagV字面量與uid一一對應的表
# opentsdb不會存儲實際的字符串字面值
# 比如system.cpu.util的metric,會將system.cpu.util轉化為id(默認自增,后面介紹部分源碼的時候會有講到)后,存入HBase
# 這張表有id、name兩個列族,可通過id找到name,也可以通過name找到id
create 'tsdb-uid',{NAME => 'id', BLOOMFILTER => 'ROW'},{NAME => 'name', BLOOMFILTER => 'ROW'}

# 下面兩張表暫時可不必太關心,先創建出來就好
create 'tsdb-tree',{NAME => 't', VERSIONS => 1, BLOOMFILTER => 'ROW'}
create 'tsdb-meta',{NAME => 'name', BLOOMFILTER => 'ROW'}

注意一下,這里的建表語句我有意把壓縮(COMPRESSION)選項去掉了,因為存儲用的是本地文件系統,有些壓縮可能是不支持的,生產環境使用HDFS的建表語句可能是這樣的

create 'tsdb',{NAME => 't', VERSIONS => 1, BLOOMFILTER => 'ROW', COMPRESSION => 'SNAPPY'}

create 'tsdb-uid',{NAME => 'id', BLOOMFILTER => 'ROW', COMPRESSION => 'SNAPPY'},{NAME => 'name', BLOOMFILTER => 'ROW', COMPRESSION => 'SNAPPY'}

create 'tsdb-tree',{NAME => 't', VERSIONS => 1, BLOOMFILTER => 'ROW', COMPRESSION => 'SNAPPY'}

create 'tsdb-meta',{NAME => 'name', BLOOMFILTER => 'ROW', COMPRESSION => 'SNAPPY'}
  • 在hbase shell的交互界面中執行list,即可看到上面創建的4張表
hbase(main):004:0> list
TABLE
tsdb
tsdb-meta
tsdb-tree
tsdb-uid

安裝配置並啟動opentsdb

下載地址:https://github.com/OpenTSDB/opentsdb/releases

這里centos7系統,選擇下載opentsdb-2.4.0.noarch.rpm

  • 執行yum -y localinstall opentsdb-2.4.0.noarch.rpm

如果這里安裝報錯,可能需要vi /usr/bin/yum臨時改一下python解析器的版本#!/usr/bin/python2.7
改過之后安裝過程中又有報錯,可能需要vi /usr/libexec/urlgrabber-ext-down同樣臨時改一下python解析器的版本#!/usr/bin/python2.7

  • 把opentsdb的服務注冊為系統服務,即可以用systemctl status/start/stop/restart opentsdb來查看控制

vi /usr/lib/systemd/system/opentsdb.service添加以下內容

[Unit]

Description=OpenTSDB Service

[Service]

Type=forking

PrivateTmp=yes

ExecStart=/usr/share/opentsdb/etc/init.d/opentsdb start

ExecStop=/usr/share/opentsdb/etc/init.d/opentsdb stop

Restart=on-abort

然后你就發現可以用systemctl status opentsdb了,不過現在服務還是dead狀態

注意一下,默認opentsdb配置文件目錄:/etc/opentsdb/opentsdb.conf,默認opentsdb日志目錄:/var/log/opentsdb

  • 修改/etc/opentsdb/opentsdb.conf配置文件
tsd.network.port = 4242
tsd.http.staticroot = /usr/share/opentsdb/static/
tsd.http.cachedir = /tmp/opentsdb
tsd.core.auto_create_metrics = true
tsd.core.plugin_path = /usr/share/opentsdb/plugins
# zookeeper的地址,即hbase依賴的zookeeper的地址,localhost:2181,localhost:2182,localhost:2183
tsd.storage.hbase.zk_quorum = localhost:2181
tsd.storage.fix_duplicates = true
tsd.http.request.enable_chunked = true
tsd.http.request.max_chunk = 4096000
tsd.storage.max_tags = 16
# 這里看到了我們上面在hbase中創建的4張表
tsd.storage.hbase.data_table = tsdb
tsd.storage.hbase.uid_table = tsdb-uid
tsd.storage.hbase.tree_table = tsdb-tree
tsd.storage.hbase.meta_table = tsdb-meta
# 下面幾個配置項到部分源碼解析的時候會有介紹,暫時可以先忽略
# tsd.query.skip_unresolved_tagvs = true
# hbase.rpc.timeout = 120000
  • 啟動opentsdb,systemctl start opentsdb,成功的話,就可以打開opentsdb的界面了http://localhost:4242/

至此,有關opentsdb的安裝部署就完成了。后面我會結合opentsdb部分源碼分享一些探究性問題。祝君好運!

更新

  • 2021.11.03 更新

好久沒接觸opentsdb了,也忘得差不多了,有網友問我為什么啟動opentsdb2.4.1失敗,我看了下 https://github.com/OpenTSDB/opentsdb/ ,2021-09-02發布的OpenTSDB 2.4.1更新了一些東西:

其中官方增加了把opentsdb的服務注冊為系統服務的方式,具體見: https://github.com/OpenTSDB/opentsdb/blob/master/build-aux/rpm/systemd/opentsdb.service ,建議按照官方相應的版本部署安裝,以免出現問題!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM