OpenTSDB を使用する

Prev Next

Classic環境で利用できます。

HBaseベースで動作するOpenTSDB(Time Series DataBase)は、分散及び拡張可能な時系列データベースです。
OpenTSDBはサーバ、ネットワーク、アプリケーションから収集されたメトリック情報を保存、インデックス、伝達するなどの処理のために作られました。

OpenTSDBアーキテクチャ

  • TSD(Time Series Daemon):入力されたメトリック情報をHBase保存場所に保存する役割を担う
  • 入力ソース:サーバ、ネットワーク、アプリケーションなどから送られるメトリック情報
  • 保存場所:HBaseを基本保存場所として利用し、時系列データを保存

hadoop-chadoop-use-ex1_1-1

参考

OpenTSDBに関する詳細は、OpenTSDBの公式サイトをご参照ください。

このガイドでは、Cloud Hadoopを利用してOpenTSDBを構築する方法を説明します。 クラスタを作成する際は、クラスタタイプHBaseに選択します。

このガイドで使用するOpenTSDBオープンソースに関する内容は、OpenTSDBをご参照ください。

事前作業

OpenTSDBをインストールするサーバを作成します。 例では、Linuxサーバで使用する方法を説明します。

OpenTSDBを使用する

まず、サーバにOpenTSDBオープンソースをインストールする際に必要なシステム要件を確認します。 **<インストールのシステム要件>**は以下のとおりです。

<インストールのシステム要件>

  • Java SE (JDK)
  • Gnuplot
  • OpenTSDB(オープンソース)

1. OpenTSDBのインストール

サーバにOpenTSDBをインストールする方法は、以下のとおりです。

  1. 以下のコマンドを使用してOracleサイトからJDKをダウンロードし、サーバにインストールします。

    rpm -ivh jdk-8u192-linux-x64.rpm
    
    参考
    • i:パッケージをインストール
    • v:詳細情報を出力
    • h:インストールの進捗状況を出力
  2. yumパッケージ管理者を利用して、OpenTSDBのグラフの作成に必要なgnuplotパッケージをインストールします。

    yum -y install gnuplot
    
  3. ユーザーアカウントを作成します。

    useradd -m  -d /home/opentsdb -u 10001 opentsdb
    
  4. ログディレクトリを作成します。

    mkdir /var/log/opentsdb && chown opentsdb:opentsdb /var/log/opentsdb
    
  5. OpenTSDBオープンソースをインストールします。

    # rootユーザー
    su - opentsdb
    
    # opentsdbユーザー
    git clone https://github.com/OpenTSDB/opentsdb
    cd opentsdb
    
  6. OpentTSDBソースをビルドします。

    # opentsdbユーザー
    ./build.sh
    

2. HBaseクライアントのインストール

HBaseクライアントをインストールする方法は、以下のとおりです。

  1. 以下のコマンドを使用してHBase Binaryをダウンロードします。

    # opentsdbユーザー
    wget https://archive.apache.org/dist/hbase/1.1.2/hbase-1.1.2-bin.tar.gz
    tar xvfz hbase-1.1.2-bin.tar.gz
    ln -s hbase-1.1.2 hbase
    
  2. Ambari UIページでHBaseクライアントの設定情報をダウンロードします。

    • Ambari UIへのアクセスや使用に関する詳細は、Ambari UIガイドをご参照ください。
      hadoop-chadoop-use-ex1_2-2_ja
  3. HBaseクライアントの設定情報の圧縮を展開します。

    # opentsdbユーザー
    tar xvfz HBASE_CLIENT-configs.tar.gz -C ~/opentsdb/hbase/conf
    sed -i -e 's|\(^export JAVA_HOME=.*\)|#\1|' ~/opentsdb/hbase/conf/hbase-env.sh
    
  4. opentsdbユーザーの.bash_profileを修正します。

    # opentsdbユーザー
    echo 'export HBASE_HOME=~/hbase'                   >> ~/.bash_profile
    echo 'export PATH=$PATH:${HBASE_HOME}/bin'         >> ~/.bash_profile
    echo 'export JAVA_HOME=/usr/java/jdk1.8.0_192-amd64' >> ~/.bash_profile
    logout
    
  5. Ambari UI > Hostsページで、Cloud Hadoopクラスタのホスト名とPrivate IP情報を確認します。
    hadoop-chadoop-use-ex1_2-5_ja

  6. 以下のコマンドを用いて/etc/hosts情報を追加します。

    • 前の段階で確認したCloud Hadoopクラスタのホスト名とPrivate IP情報を追加します。
    # rootユーザー
    # echo 'IP               ホスト名'      >> /etc/hosts
    echo  '1*.**.**.237  e-001-*****-**'  >> /etc/hosts
    echo  '1*.**.**.109  m-001-*****-**'  >> /etc/hosts
    echo  '1*.**.**.142  m-002-*****-**'  >> /etc/hosts
    echo  '1*.**.**.169  dn-001-*****-**' >> /etc/hosts
    echo  '1*.**.**.186  dn-002-*****-**' >> /etc/hosts
    
  7. 以下のコマンドを用いてhbase shellアクセスをテストします。

    su - opentsdb
    # opentsdbユーザー
    hbase shell
    
    HBase Shell; enter 'help<RETURN>' for list of supported commands.
    Type "exit<RETURN>" to leave the HBase Shell
    Version 1.1.2, rcc2b70cf03e3378800661ec5cab11eb43fafe0fc, Wed Aug 26 20:11:27 PDT 2015
    hbase(main):001:0>
    

HBase Shellアクセスが失敗した場合、Cloud HadoopのACGにOpenTSDBサーバを追加します。
ACGの設定に関する内容は、ファイアウォールの設定(ACG)をご参照ください。

hadoop-chadoop-use-ex1_2-7_ja

3. OpenTSDBテーブルの作成

OpenTSDBテーブルを作成する方法は以下のとおりです。

  1. 以下のコマンドを使用してTSDBテーブルを作成します。

    # opentsdbユーザー
    export COMPRESSION=SNAPPY
    export DATA_BLOCK_ENCODING=FAST_DIFF
    export TSDB_TTL=2147483647
    sh ~/opentsdb/src/create_table.sh
    
  2. 以下のコマンドでテーブルリストを確認します。

    # opentsdbユーザー
    hbase shell
    hbase(main):001:0> list
    TABLE
    tsdb
    tsdb-meta
    tsdb-tree
    tsdb-uid
    4 row(s) in 0.1620 seconds
    
    => ["tsdb", "tsdb-meta", "tsdb-tree", "tsdb-uid"]
    hbase(main):002:0>
    

4. OpenTSDBの起動

以下のコマンドを用いてTSD(Time Series Daemon)を8888番ポートで起動します。

# opentsdbユーザー
cd opentsdb
./build/tsdb tsd --port=8888 --staticroot=build/staticroot --
cachedir=`pwd`/build/tmp --zkquorum=m-001-*****-**,m-002-*****-**,dn-001-*****-**:
2181 --zkbasedir=/hbase-unsecure &

5. OpenTSDBに時系列データを保存

OpenTSDBに時系列データを保存する方法は以下のとおりです。

  1. 以下のコマンドを使用してcpu.utilメトリックを作成します。

    # opentsdbユーザー
    .build/tsdb mkmetric cpu.util --zkquorum=m-001-*****-**,m-002-*****-**,dn-001-*****-**:
    2181 --zkbasedir=/hbase-unsecure metrics cpu.util: [0, 0, 1]
    
  2. 以下のコマンドを使用してcpu.utilメトリックの収集スクリプトを作成します。 (sar-data-input.sh)

    • スクリプトの出典:Effective Monitoring and Alerting原書を参照
    #!/bin/bash 
    # Ignore sar's header.  
    LC_ALL=en sar -u 1 | sed -u -e '1,3d' | 
    while read time cpu usr nice sys io steal idle; 
    do
        NOW=$(date +%s)
        echo put cpu.util $NOW $usr time=user
        echo put cpu.util $NOW $sys time=system
        echo put cpu.util $NOW $io time=io
        echo put cpu.util $NOW $idle time=idle
        # Report values to standard error.
        echo timestamp:$NOW user:$usr sys:$sys io:$io idle:$idle >&2 
    done | nc -w 30 localhost 8888
    
  3. 以下のコマンドを使用してメトリックデータをOpenTSDBに転送します。

    sh sar-data-input.sh
    

6. OpenTSDBグラフの確認

OpenTSDBグラフを確認する方法は以下のとおりです。

  1. サーバコンソールでOpenTSDBサーバのグローバルIPを確認します。
    hadoop-chadoop-use-ex1_6-1_ja

  2. OpenTSDBサーバの8888番ポートでアクセスして収集されたグラフを確認します。
    hadoop-chadoop-use-ex1_6-2_ko