Classic 환경에서 이용 가능합니다.
HBase 기반으로 동작하는 OpenTSDB(Time Series DataBase)는 분산 및 확장이 가능한 시계열 데이터베이스입니다.
OpenTSDB는 서버, 네트워크, 응용 프로그램으로부터 수집된 메트릭 정보를 저장, 색인, 전달하는 등의 처리를 위해 만들어졌습니다.
OpenTSDB 아키텍처
- TSD(Time Series Daemon): 입력된 메트릭 정보를 HBase 저장소에 저장하는 역할을 담당합니다.
- 입력 소스: 서버, 네트워크, 응용프로그램 등으로부터 보내지는 메트릭 정보입니다.
- 저장소: HBase를 기본 저장소로 이용하여 시계열 데이터를 저장합니다.
OpenTSDB에 대한 자세한 내용은 OpenTSDB 홈페이지를 참고해 주십시오.
CloudHadoop을 이용하여 OpenTSDB를 구축하는 방법을 설명합니다.
이 페이지에서 사용하는 OpenTSDB 오픈소스에 대한 내용은 OpenTSDB를 참고해 주십시오.
사전 작업
OpenTSDB를 설치할 서버를 생성해 주십시오. 예시는 리눅스 서버에서 사용하는 방법을 설명합니다.
- 서버 생성에 대한 자세한 내용은 서버 생성을 참고해 주십시오.
- 리눅스 서버에 접속하는 방법은 리눅스 서버 접속 가이드를 참고해 주십시오.
OpenTSDB 사용
우선, OpenTSDB 오픈소스를 서버에 설치 시 필요한 다음의 요구 사항을 확인해 주십시오.
설치 요구 사항
- Java SE (JDK)
- Gnuplot
- OpenTSDB (오픈 소스)
1. OpenTSDB 설치
서버에 OpenTSDB 설치하는 방법은 다음과 같습니다.
-
다음 명령어를 사용하여 Oracle 사이트에서 JDK를 다운로드한 후 서버에 설치해 주십시오.
rpm -ivh jdk-8u192-linux-x64.rpm
참고- i: 패키지 설치
- v: 상세 정보 출력
- h: 설치 진행 상황 출력
-
yum 패키지 관리자를 이용하여 OpenTSDB의 그래프를 생성하는 데 필요한
gnuplot
패키지를 설치해 주십시오.yum -y install gnuplot
-
사용자 계정을 생성해 주십시오.
useradd -m -d /home/opentsdb -u 10001 opentsdb
-
로그 디렉터리를 생성해 주십시오.
mkdir /var/log/opentsdb && chown opentsdb:opentsdb /var/log/opentsdb
-
OpenTSDB 오픈 소스를 설치해 주십시오.
# root 사용자 su - opentsdb # opentsdb 사용자 git clone https://github.com/OpenTSDB/opentsdb cd opentsdb
-
OpentTSDB 소스를 빌드해 주십시오.
# opentsdb 사용자 ./build.sh
2. HBase 클라이언트 설치
HBase 클라이언트를 설치하는 방법은 다음과 같습니다.
-
다음 명령어를 사용하여 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
-
Ambari UI 페이지에서 HBase 클라이언트 설정 정보를 다운로드해 주십시오.
- Ambari UI 접속 및 사용에 대한 자세한 내용은 Ambari UI를 참고해 주십시오.
- Ambari UI 접속 및 사용에 대한 자세한 내용은 Ambari UI를 참고해 주십시오.
-
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
-
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
-
Ambari UI Hosts 페이지에서 Cloud Hadoop 클러스터의 호스트명과 IP 정보를 확인해 주십시오.
-
다음 명령어를 사용하여
/etc/hosts
정보를 추가해 주십시오.- 이전 단계에서 확인한 Cloud Hadoop 클러스터의 호스트명과 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
-
다음 명령어를 사용하여
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)을 참고해 주십시오.
3. OpenTSDB 테이블 생성
OpenTSDB 테이블을 생성하는 방법은 다음과 같습니다.
-
다음 명령어를 사용하여
TSDB
테이블을 생성해 주십시오.# opentsdb 사용자 export COMPRESSION=SNAPPY export DATA_BLOCK_ENCODING=FAST_DIFF export TSDB_TTL=2147483647 sh ~/opentsdb/src/create_table.sh
-
다음 명령어로 테이블 리스트를 확인해 주십시오.
# 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에 시계열 데이터를 저장하는 방법은 다음과 같습니다.
-
다음 명령어를 사용하여
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]
-
다음 명령어를 사용하여
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
-
다음 명령어를 사용하여 메트릭 데이터를 OpenTSDB로 전송해 주십시오.
sh sar-data-input.sh
6. OpenTSDB 그래프 확인
OpenTSDB 그래프를 확인하는 방법은 다음과 같습니다.
- 서버 콘솔에서 OpenTSDB 서버의 공인 IP를 확인해 주십시오.
- OpenTSDB 서버의
8888
번 포트로 접속하여 수집된 그래프를 확인해 주십시오.