OpenTSDB 사용

Prev Next

VPC 환경에서 이용 가능합니다.

HBase 기반으로 동작하는 OpenTSDB(Time Series DataBase)는 분산 및 확장이 가능한 시계열 데이터베이스입니다. OpenTSDB는 서버, 네트워크, 응용 프로그램으로부터 수집된 메트릭 정보를 저장, 색인, 전달하는 등의 처리를 위해 만들어졌습니다.

  • TSD(Time Series Daemon): 입력된 메트릭 정보를 HBase 저장소에 저장하는 역할을 담당합니다.
  • 입력 소스: 서버, 네트워크, 응용프로그램 등으로부터 보내지는 메트릭 정보입니다.
  • 저장소: HBase를 기본 저장소로 이용하여 시계열 데이터를 저장합니다.

hadoop-chadoop-use-ex1_1-1

참고

OpenTSDB에 대한 자세한 내용은 OpenTSDB 홈페이지를 참고해 주십시오.

Cloud Hadoop을 이용하여 OpenTSDB를 구축하는 방법을 설명합니다.
이 페이지에서 사용하는 OpenTSDB 오픈소스에 대한 내용은 OpenTSDB를 참고해 주십시오.

OpenTSDB를 설치할 서버를 생성해 주십시오. 예시는 리눅스 서버에서 사용하는 방법을 설명합니다.

  • 서버 생성에 대한 자세한 내용은 Server 시작 가이드를 참고해 주십시오.
  • 리눅스 서버에 접속하는 방법은 서버 접속 가이드를 참고해 주십시오.

OpenTSDB 오픈소스를 서버에 설치할 때 필요한 요구 사항을 확인해 주십시오. 설치 요구 사항 은 다음과 같습니다.

<설치 요구 사항>

  • Java SE (JDK)
  • Gnuplot
  • OpenTSDB (오픈소스)

서버에 OpenTSDB 설치하는 방법은 다음과 같습니다.

  1. 다음 명령어를 사용하여 OpenJDK를 서버에 설치해 주십시오.

    yum install java-1.8.0-openjdk-devel.x86_64
    
    Plain text
  2. yum 패키지 관리자를 이용하여 OpenTSDB의 그래프를 생성하는 데 필요한 gnuplot 패키지를 설치해 주십시오.

    yum -y install gnuplot
    
    Plain text
  3. 사용자 계정을 생성해 주십시오.

    useradd -m  -d /home/opentsdb -u 10001 opentsdb
    
    Plain text
  4. 로그 디렉터리를 생성해 주십시오.

    mkdir /var/log/opentsdb && chown opentsdb:opentsdb /var/log/opentsdb
    
    Plain text
  5. OpenTSDB 오픈소스를 설치해 주십시오.

    # root 사용자
    su - opentsdb
    
    # opentsdb 사용자
    git clone https://github.com/OpenTSDB/opentsdb
    cd opentsdb
    
    Plain text
  6. OpenTSDB 소스를 빌드해 주십시오.

    # opentsdb 사용자
    ./build.sh
    
    Plain text

HBase 클라이언트를 설치하는 방법은 다음과 같습니다.

  1. 다음 명령어를 사용하여 HBase binary를 다운로드해 주십시오.

    • Cloud Hadoop 2.0 이상 버전
    # opentsdb 사용자
    wget https://archive.apache.org/dist/hbase/2.2.6/hbase-2.2.6-bin.tar.gz
    tar xvfz hbase-2.2.6-bin.tar.gz
    ln -s hbase-2.2.6 hbase
    
    Plain text
    • Cloud Hadoop 1.9 이하 버전
    # opentsdb 사용자
    wget https://archive.apache.org/dist/hbase/2.0.2/hbase-2.0.2-bin.tar.gz
    tar xvfz hbase-2.0.2-bin.tar.gz
    ln -s hbase-2.0.2 hbase
    
    Plain text
    참고

    Cloud Hadoop Classic의 경우 HBase 1.1.2를 다운로드해 주십시오.

  2. Ambari UI에서 [ACTIONS] > Download Client Configs를 클릭하여 다운로드 받은 'HBase 클라이언트 설정 정보'를 OpenTSDB를 설치한 서버로 전송해 주십시오.

    • Ambari UI 접속 및 사용에 대한 자세한 내용은 Ambari UI 가이드를 참고해 주십시오.
      hadoop-chadoop-use-ex1_2-2_ko
  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
    
    Plain text
  4. opentsdb 사용자의 .bash_profile을 수정해 주십시오.

    # opentsdb 사용자
    echo 'export HBASE_HOME=~/opentsdb/hbase'                 >> ~/.bash_profile
    echo 'export PATH=$PATH:${HBASE_HOME}/bin'                >> ~/.bash_profile
    echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk'   >> ~/.bash_profile
    logout
    
    Plain text
  5. Ambari UI Hosts 페이지에서 Cloud Hadoop 클러스터의 호스트명과 Private IP 정보를 확인해 주십시오.
    hadoop-chadoop-use-ex1_2-5_ko

  6. 다음 명령어를 사용하여 /etc/hosts 정보를 추가해 주십시오.

    • 이전 단계에서 확인한 Cloud Hadoop 클러스터의 호스트명과 Private IP 정보를 추가해 주십시오.
    # root 사용자
    # echo 'IP            호스트명'     >> /etc/hosts
    echo  '1**.**.*.*  e-001-*****-**'  >> /etc/hosts
    echo  '1**.**.*.*  m-001-*****-**'  >> /etc/hosts
    echo  '1**.**.*.*  m-002-*****-**'  >> /etc/hosts
    echo  '1**.**.*.*  d-001-*****-**' >> /etc/hosts
    echo  '1**.**.*.*  d-002-*****-**' >> /etc/hosts
    
    Plain text
  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>
    
    Plain text

만약 HBase Shell 접속을 실패할 경우 Cloud Hadoop의 ACG에 OpenTSDB 서버를 추가해 주십시오.
ACG 설정에 대한 내용은 방화벽 설정(ACG) 가이드를 참고해 주십시오.

OpenTSDB 테이블을 생성하는 방법은 다음과 같습니다.

  1. 다음 명령어를 사용하여 TSDB 테이블을 생성해 주십시오.

    # opentsdb 사용자
    export COMPRESSION=SNAPPY
    export DATA_BLOCK_ENCODING=FAST_DIFF
    export TSDB_TTL=2147483647
    sh ~/opentsdb/src/create_table.sh
    
    Plain text
  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>
    
    Plain text

다음 명령어를 사용하여 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-*****-**,d-001-*****-**:
  2181 --zkbasedir=/hbase-unsecure &
Plain text

OpenTSDB에 시계열 데이터를 저장하는 방법은 다음과 같습니다.

  1. 다음 명령어를 사용하여 cpu.util 메트릭을 생성해 주십시오.

    # opentsdb 사용자
    .build/tsdb mkmetric cpu.util --zkquorum=m-001-*****-**,m-002-*****-**,d-001-*****-**:
    2181 --zkbasedir=/hbase-unsecure metrics cpu.util: [0, 0, 1]
    
    Plain text
  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
    
    Plain text
  3. 다음 명령어를 사용하여 메트릭 데이터를 OpenTSDB로 전송해 주십시오.

    sh sar-data-input.sh
    
    Plain text

OpenTSDB 그래프를 확인하는 방법은 다음과 같습니다.

  1. 서버 콘솔에서 OpenTSDB 서버의 공인 IP를 확인해 주십시오.
    hadoop-chadoop-use-ex1_6-1_ko
  2. OpenTSDB 서버의 8888번 포트로 접속하여 수집된 그래프를 확인해 주십시오.
    hadoop-chadoop-use-ex1_6-2_ko