CloudHadoop를 이용하여 OpenTSDB 사용하기

Daehyun Park
NAVER CLOUD PLATFORM
9 min readNov 25, 2020

--

본 포스팅에서는 CloudHadoop (HBase)를 이용하여 OpenTSDB를 구축하는 방법을 설명합니다. CloudHadoop 1.2 클러스터와 OpenTSDB를 설치할 서버를 이미 생성하였다고 가정하고, 진행하도록 하겠습니다.

OpenTSDB 란?

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

OpentTSDB의 아키텍쳐

  • TSD(Time Series Daemon) : 입력받은 메트릭 정보를 HBase 저장소에 저장하는 역할을 담당합니다.
  • 입력 소스: 서버, 네트워크, 응용프로그램 등으로부터 보내지는 메트릭 정보입니다.
  • 저장소 : HBase를 기본 저장소로 이용하여 시계열 데이타를 저장합니다.
이미지 출처: http://opentsdb.net/img/tsdb-architecture.png

OpenTSDB 설치

OpenTSDB 오픈소스의 설치는 이미 준비된 네이버 클라우드 플랫폼 서버에 설치를 한다고 가정하고 진행합니다.

설치 요구 사항

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

OpenTSDB 설치

  • Oracle 사이트에서 JDK를 다운로드 받은 후 서버에 설치합니다.(설명을 위해 JDK 8u192 버젼으로 진행하였습니다.)
rpm -ivh jdk-8u192-linux-x64.rpm
  • yum 패키지 관리자를 이용하여 gnuplot을 설치합니다. (OpenTSDB의 그래프를 생성하는데 필요한 패키지입니다.)
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

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
  • HBase 클라이언트 설정정보 다운로드
  • 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
  • CloudHadoop 클러스터의 호스트명과 IP 정보를 확인합니다.
  • /etc/hosts 정보를 추가합니다. (이전 단계에서 확인한 CloudHadoop 클러스터의 호스트명과 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
echo '1*.**.**.221 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 접속이 실패한 경우라면, CloudHadoop의 ACG 에 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>

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 &

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)
#!/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

(스크립트 출처 : Effective Monitoring and Alerting 원서 참고)

  • 메트릭 데이타를 OpenTSDB로 전송하기
sh sar-data-input.sh

OpenTSDB 그래프 확인하기

  • OpenTSDB 서버의 공인 IP 를 확인합니다.
  • OpenTSDB 서버의 8888번 포트로 접속하여 수집된 그래프를 확인합니다.

마치며

이번 페이지에서는 OpenTSDB 오픈 소스를 이용하여 CloudHadoop (HBase)를 저장소로 이용하는 방법을 알아보았습니다. 시계열 데이타를 이용하는데 도움이 되었으면 좋겠습니다.

--

--