Documentation Index

Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt

Use this file to discover all available pages before exploring further.

OpenTSDB 사용(Secure Hadoop)

Prev Next

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

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

Secure Hadoop에서 OpenTSDB를 사용하려면 일반 Cloud Hadoop 환경과 달리 Kerberos 인증, LDAP 계정, HBase 권한 설정, OpenTSDB JVM의 JAAS 설정이 필요합니다. OpenTSDB는 AsyncHBase 클라이언트를 통해 HBase와 ZooKeeper에 접근하므로, HBase Shell 접속이 가능하더라도 TSD(Time Series Daemon) 실행 시 별도의 JAAS 설정이 없으면 Kerberos 인증에 실패할 수 있습니다.

OpenTSDB 아키텍처

이 가이드에서는 Secure Hadoop을 이용하여 OpenTSDB를 구축하고 8888번 포트로 TSD를 기동하는 방법을 설명합니다.

이 가이드에서 사용하는 OpenTSDB 오픈소스에 대한 내용은 OpenTSDB를 참조해 주십시오.

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

hadoop-chadoop-use-ex1_1-1

참고

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

사전 작업

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

주의

Secure Hadoop에서는 단순히 Linux OS 계정을 useradd로 생성하는 것만으로 HBase 접근 권한이 부여되지 않습니다. OpenTSDB 실행 계정은 Kerberos principal, keytab, LDAP 사용자, HBase 권한이 모두 준비되어야 합니다.

OpenTSDB 사용

서버에 OpenTSDB 오픈소스를 설치할 때 필요한 요구 사항은 다음과 같습니다.

  • Java SE 8(JDK)
  • Gnuplot
  • OpenTSDB 오픈소스
  • Kerberos principal 및 keytab
  • LDAP 사용자
  • HBase 클라이언트 설정
  • HBase 테이블 생성 권한

1. Secure Hadoop 계정 생성

Secure Hadoop에서 OpenTSDB를 사용하려면 Kerberos principal과 LDAP 사용자를 생성해야 합니다. Kerberos와 LDAP에 등록되는 사용자 ID는 동일하게 구성하는 것을 권장합니다.

  1. 마스터 노드에서 Kerberos admin shell에 접속해 주십시오.

    kadmin.local
    
  2. OpenTSDB용 principal을 생성해 주십시오.

    addprinc -randkey opentsdb@USER.GUIDE
    
  3. OpenTSDB용 keytab 파일을 생성해 주십시오.

    ktadd -k /etc/security/keytabs/opentsdb.keytab opentsdb@USER.GUIDE
    
  4. keytab 파일 권한을 설정해 주십시오.

    chown opentsdb:hadoop /etc/security/keytabs/opentsdb.keytab
    chmod 400 /etc/security/keytabs/opentsdb.keytab
    
    참고

    OpenTSDB를 Secure Hadoop 클러스터 외부 서버에서 실행하는 경우, 생성한 keytab 파일을 OpenTSDB 서버의 안전한 경로로 복사해 주십시오.

  5. keytab에 포함된 principal을 확인해 주십시오.

    klist -kte /etc/security/keytabs/opentsdb.keytab
    

    출력 예시는 다음과 같습니다.

    Keytab name: FILE:/etc/security/keytabs/opentsdb.keytab
    KVNO Timestamp           Principal
    ---- ------------------- ----------------------
       1 06/12/2026 13:00:00 opentsdb@USER.GUIDE
    
    주의

    JAAS 설정과 kinit 명령에는 keytab에 실제로 포함된 principal을 그대로 입력해야 합니다. keytab에 hbase-<cluster>@USER.GUIDE 같은 클러스터용 headless principal이 들어 있다면 principal="opentsdb@USER.GUIDE"로 설정할 수 없습니다.

  6. LDAP 사용자를 생성해 주십시오.

    ldif=/tmp/add-opentsdb.ldif
    HASH_USER_PW=$(slappasswd -h "{SSHA}" -s "신규_패스워드")
    
    cat <<EOF | tee $ldif
    dn: uid=opentsdb,ou=users,dc=USER,dc=GUIDE
    objectClass: inetOrgPerson
    objectClass: posixAccount
    objectClass: top
    cn: opentsdb
    sn: opentsdb
    uid: opentsdb
    uidNumber: 30001
    gidNumber: 20004
    homeDirectory: /home/opentsdb
    loginShell: /bin/bash
    userPassword: ${HASH_USER_PW}
    EOF
    
    ldapadd \
      -H ldap://localhost:389 \
      -D "cn=root,dc=USER,dc=GUIDE" \
      -w "커버로스_패스워드" \
      -f "$ldif"
    
  7. 필요한 그룹에 opentsdb 사용자를 추가해 주십시오.

    ldif=/tmp/modify-opentsdb-group.ldif
    
    cat <<EOF | tee $ldif
    dn: cn=그룹명,ou=groups,dc=USER,dc=GUIDE
    changetype: modify
    add: memberUid
    memberUid: opentsdb
    EOF
    
    ldapmodify \
      -H ldap://localhost:389 \
      -D "cn=root,dc=USER,dc=GUIDE" \
      -w "커버로스_패스워드" \
      -f "$ldif"
    
  8. LDAP 사용자가 정상 등록되었는지 확인해 주십시오.

    ldapsearch \
      -H ldap://localhost:389 \
      -D "cn=root,dc=USER,dc=GUIDE" \
      -w "커버로스_패스워드" \
      -b "dc=USER,dc=GUIDE" \
      "(uid=opentsdb)"
    

2. OpenTSDB 설치

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

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

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

    yum -y install gnuplot
    
  3. OpenTSDB 실행 사용자를 생성하고 소스를 설치해 주십시오.

    useradd opentsdb
    su - opentsdb
    git clone https://github.com/OpenTSDB/opentsdb
    cd opentsdb
    
  4. OpenTSDB 소스를 빌드해 주십시오.

    ./build.sh
    

3. HBase 클라이언트 설치

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

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

    • Cloud Hadoop 2.0 이상 버전
    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
    
    • Cloud Hadoop 1.9 이하 버전
    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
    
    참고

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

  2. Ambari UI에서 다음 과정을 차례대로 수행해 주십시오.

    1. [ACTIONS] > Download Client Configs 메뉴를 차례대로 클릭해 주십시오.
    2. HBase 클라이언트 설정 정보 파일명을 확인해 주십시오.
    3. OpenTSDB 서버 터미널에서 명령어를 실행하여 설정 파일(HBASE_CLIENT-configs.tar.gz)을 다운로드해 주십시오.
    • Ambari UI 접속 및 사용에 대한 자세한 내용은 Ambari UI 가이드를 참조해 주십시오.
      hadoop-chadoop-use-ex1_2-2_ko
  3. HBase 클라이언트 설정 정보의 압축을 풀어 주십시오.

    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을 수정해 주십시오.

    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
    source ~/.bash_profile
    
  5. Ambari UI > Hosts 메뉴를 차례대로 클릭한 후, Secure Hadoop 클러스터의 호스트명과 Private IP 정보를 확인해 주십시오.

    hadoop-chadoop-use-ex1_2-5_ko

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

    • 이전 단계에서 확인한 Secure 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
    
  7. HBase 클라이언트 설정에서 ZooKeeper quorum과 znode parent 값을 확인해 주십시오.

    grep -E "hbase.zookeeper.quorum|hbase.zookeeper.property.clientPort|zookeeper.znode.parent|hbase.security.authentication" \
      $HBASE_HOME/conf/hbase-site.xml
    
    주의

    Ambari Web UI > HBase > Configs 나 Secure Hadoop VM 내에서 hbase-site.xmlzookeeper.znode.parent 값을 확인해 주십시오.

  8. OpenTSDB 실행 계정으로 Kerberos 인증을 수행해 주십시오.

    kinit -kt /etc/security/keytabs/opentsdb.keytab opentsdb@USER.GUIDE
    klist
    
  9. 다음 명령어를 사용하여 hbase shell 접속을 테스트해 주십시오.

    hbase shell
    
    HBase Shell; enter 'help<RETURN>' for list of supported commands.
    Type "exit<RETURN>" to leave the HBase Shell
    hbase(main):001:0> whoami
    hbase(main):002:0> exit
    
    • HBase Shell 접속을 실패할 경우 Secure Hadoop의 ACG에 OpenTSDB 서버를 추가해 주십시오.
    • ACG 설정에 대한 내용은 방화벽 설정(ACG) 가이드를 참조해 주십시오.

4. HBase 권한 부여

OpenTSDB 테이블을 생성하려면 OpenTSDB 계정에 HBase 테이블 생성 권한이 필요합니다.

  1. HBase Shell에 접속해 주십시오.

    sudo -u hbase hbase shell
    

    혹은 kinit을 수행한 후 HBase shell에 접속해 주십시오.

    kinit -kt /etc/security/keytabs/hbase.headless.keytab hbase-<CLUSTER_NAME>@USER.GUIDE
    
  2. OpenTSDB 계정에 권한을 부여해 주십시오.

    grant 'opentsdb@USER.GUIDE', 'RWXCA'
    
  3. OpenTSDB가 클러스터용 headless principal을 사용하도록 구성된 경우, keytab에 포함된 실제 principal에도 권한을 부여해 주십시오.

    grant 'hbase-<CLUSTER_NAME>', 'RWXCA'
    grant 'hbase-<CLUSTER_NAME>@USER.GUIDE', 'RWXCA'
    
    참고

    HBase 권한은 Linux 실행 사용자명이 아니라 Kerberos 인증 후 HBase가 인식한 사용자명에 적용됩니다. klist -kte <KEYTAB>hbase shellwhoami 결과를 기준으로 권한을 부여해 주십시오.

  4. 권한을 확인해 주십시오.

    user_permission '.*'
    exit
    

    opentsdb, opentsdb@USER.GUIDE 또는 실제 사용 principal에 READ, WRITE, EXEC, CREATE, ADMIN 권한이 표시되어야 합니다.

참고

Ranger를 통해 HBase 권한을 관리하는 환경이라면 Ranger 정책에서도 동일한 사용자에게 HBase 테이블 생성 권한을 부여해야 합니다.

5. OpenTSDB 테이블 생성

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

  1. OpenTSDB 실행 계정으로 Kerberos 인증을 수행해 주십시오.

    kinit -kt /etc/security/keytabs/opentsdb.keytab opentsdb@USER.GUIDE
    klist
    
  2. 다음 명령어를 사용하여 TSDB 테이블을 생성해 주십시오.

    export HBASE_HOME=~/opentsdb/hbase
    export COMPRESSION=SNAPPY
    export DATA_BLOCK_ENCODING=FAST_DIFF
    export TSDB_TTL=2147483647
    sh ~/opentsdb/src/create_table.sh
    
    참고

    OpenTSDB 기본 테이블 생성 스크립트는 기본 압축 코덱으로 LZO를 사용할 수 있습니다. Secure Hadoop 환경에 LZO codec이 없으면 ClassNotFoundException: com.hadoop.compression.lzo.LzoCodec 오류가 발생할 수 있습니다. 이 경우 COMPRESSION=SNAPPY 또는 COMPRESSION=NONE을 사용해 주십시오.

  3. 다음 명령어로 테이블 리스트를 확인해 주십시오.

    hbase shell
    hbase(main):001:0> list
    TABLE
    tsdb
    tsdb-meta
    tsdb-tree
    tsdb-uid
    4 row(s)
    
    => ["tsdb", "tsdb-meta", "tsdb-tree", "tsdb-uid"]
    hbase(main):002:0> exit
    

6. OpenTSDB 설정

TSD 기동 전 OpenTSDB 설정 파일과 JAAS 설정 파일을 구성해 주십시오.

  1. OpenTSDB 설정 디렉터리와 파일을 생성해 주십시오.

    mkdir /home1/opentsdb/opentsdb/conf
    vi /home1/opentsdb/opentsdb/conf/opentsdb.conf
    
  2. 다음 항목을 환경에 맞게 설정해 주십시오.

    hbase.security.auth.enable = true
    hbase.security.authentication = kerberos
    hbase.kerberos.regionserver.principal = hbase/_HOST@USER.GUIDE
    hbase.sasl.clientconfig = Client
    tsd.network.port = 8888
    tsd.http.staticroot = build/staticroot
    tsd.http.cachedir = /home1/opentsdb/opentsdb/build/tmp
    tsd.storage.hbase.zk_quorum = m-001-*****-**:2181,m-002-*****-**:2181,d-001-*****-**:2181
    tsd.storage.hbase.zk_basedir = /hbase-unsecure
    
    주의

    tsd.storage.hbase.zk_basedir에는 HBase 클라이언트 설정의 zookeeper.znode.parent 값을 입력해야 합니다. 값을 추정하여 /hbase-secure 또는 /hbase-unsecure로 고정하지 마십시오.

  3. JAAS 설정 파일을 생성해 주십시오.

    vi /home1/opentsdb/opentsdb/conf/opentsdb-jaas.conf
    

    3-1. 클러스터용 headless keytab을 사용하는 경우 다음과 같이 설정해 주십시오.

    Client {
      com.sun.security.auth.module.Krb5LoginModule required
      useKeyTab=true
      storeKey=true
      doNotPrompt=true
      useTicketCache=false
      keyTab="/etc/security/keytabs/hbase.headless.keytab"
      principal="hbase-<CLUSTER_NAME>@USER.GUIDE";
    };
    

    3-2. OpenTSDB 전용 keytab을 사용하는 경우, keytab에 포함된 principal을 확인한 후 출력된 값을 그대로 입력해 주십시오.

    klist -kte /etc/security/keytabs/opentsdb.keytab
    
    • 출력 예시가 다음과 같다면, JAAS 설정을 작성해 주십시오.
    KVNO Timestamp           Principal
    ---- ------------------- ----------------------
       1 06/09/2026 21:42:13 opentsdb@USER.GUIDE
    
    • JAAS 설정은 다음과 같이 작성해 주십시오.
    Client {
      com.sun.security.auth.module.Krb5LoginModule required
      useKeyTab=true
      storeKey=true
      doNotPrompt=true
      useTicketCache=false
      keyTab="/etc/security/keytabs/opentsdb.keytab"
      principal="opentsdb@USER.GUIDE";
    };
    
  4. keytab으로 Kerberos 인증이 되는지 확인해 주십시오.

    4-1. hbase.headless.keytab 사용 시 인증 확인

    kdestroy
    kinit -kt /etc/security/keytabs/hbase.headless.keytab hbase-<CLUSTER_NAME>@USER.GUIDE
    klist
    

    4-2. opentsdb.keytab 사용 시 인증 확인

    kdestroy
    kinit -kt /etc/security/keytabs/opentsdb.keytab opentsdb@USER.GUIDE
    klist
    
    주의

    kinit이 실패하면 TSD도 기동할 수 없습니다. 이 경우 OpenTSDB 설정이 아니라 keytab 파일, principal 값, KDC 시간 동기화 여부를 먼저 확인해 주십시오.

7. OpenTSDB 기동

다음 명령어를 사용하여 TSD를 8888번 포트로 기동해 주십시오.

  1. OpenTSDB 실행 계정으로 전환해 주십시오.

    su - opentsdb
    cd /home1/opentsdb/opentsdb
    
  2. OpenTSDB JVM에 JAAS 설정을 전달해 주십시오.

    export JVMARGS="-Djava.security.auth.login.config=/home1/opentsdb/opentsdb/conf/opentsdb-jaas.conf -Djavax.security.auth.useSubjectCredsOnly=false -Dzookeeper.sasl.client=true -Dzookeeper.sasl.clientconfig=Client"
    
  3. TSD를 기동해 주십시오.

    ./build/tsdb tsd --config=/home1/opentsdb/opentsdb/conf/
    
    
    
    
  4. 백그라운드로 기동하려면 다음과 같이 실행해 주십시오.

    nohup ./build/tsdb tsd --config=/home1/opentsdb/opentsdb/conf/opentsdb.conf > /var/log/opentsdb/opentsdb.log 2>&1 &
    
  5. 8888번 포트가 정상적으로 열렸는지 확인해 주십시오.

    ss -lntp | grep 8888
    
  6. OpenTSDB API 응답을 확인해 주십시오.

    curl -s http://localhost:8888/api/version
    

    정상 응답 예시는 다음과 같습니다.

    {
      "version": "2.5.0"
    }
    

8. OpenTSDB에 시계열 데이터 저장

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

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

    export JVMARGS="-Djava.security.auth.login.config=/home1/opentsdb/opentsdb/conf/opentsdb-jaas.conf -Djavax.security.auth.useSubjectCredsOnly=false -Dzookeeper.sasl.client=true -Dzookeeper.sasl.clientconfig=Client"
    ./build/tsdb mkmetric cpu.util --config=/home1/opentsdb/opentsdb/conf/opentsdb.conf
    
  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
    

9. OpenTSDB 그래프 확인

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

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

문제 해결

Kerberos TGT 오류

다음 오류가 발생하면 Kerberos 인증이 되지 않은 상태입니다.

Failed to find any Kerberos tgt

다음 명령어로 인증을 수행해 주십시오.

kinit -kt /etc/security/keytabs/opentsdb.keytab opentsdb@USER.GUIDE
klist

keytab 파일 없음

다음 오류가 발생하면 keytab 파일이 존재하지 않거나 경로가 잘못된 것입니다.

Key table file '/etc/security/keytabs/opentsdb.keytab' not found

마스터 노드에서 keytab을 생성한 뒤 OpenTSDB 실행 서버에 배치해 주십시오.

ktadd -k /etc/security/keytabs/opentsdb.keytab opentsdb@USER.GUIDE

HBase 테이블 생성 권한 없음

다음 오류가 발생하면 HBase 권한이 부족한 상태입니다.

AccessDeniedException: Insufficient permissions for user 'opentsdb@USER.GUIDE' (action=create)

HBase 관리자 계정으로 권한을 부여해 주십시오.

grant 'opentsdb', 'RWXCA'
grant 'opentsdb@USER.GUIDE', 'RWXCA'

권한이 short name인 opentsdb에만 있고 실제 요청 사용자가 opentsdb@USER.GUIDE으로 인식되면 권한 매칭이 되지 않을 수 있습니다. 이 경우 full principal에도 권한을 부여해야 합니다.

LZO codec 오류

다음 오류가 발생하면 LZO codec이 HBase classpath에 없는 상태입니다.

ClassNotFoundException: com.hadoop.compression.lzo.LzoCodec

테이블 생성 전 압축 코덱을 변경해 주십시오.

export COMPRESSION=SNAPPY

또는 압축을 사용하지 않습니다.

export COMPRESSION=NONE

HBase Shell은 실행되지만 create가 실패하는 경우

hbase shell이 실행되는 것은 Kerberos 인증이 성공했다는 의미입니다. 그러나 테이블 생성에는 별도 HBase 권한이 필요합니다.

다음 항목을 확인해 주십시오.

klist
whoami
user_permission '.*'

whoami 결과가 opentsdb@USER.GUIDE인데 권한이 opentsdb에만 부여되어 있으면 테이블 생성이 실패할 수 있습니다. 이 경우 full principal에 권한을 추가해 주십시오.

grant 'opentsdb@USER.GUIDE', 'RWXCA'

TSD 기동 시 No LoginModules configured for Client 오류

다음 오류가 발생하면 OpenTSDB JVM이 JAAS 설정 파일을 읽지 못한 상태입니다.

javax.security.auth.login.LoginException: No LoginModules configured for Client

오류 발생 시 다음 항목을 확인해 주십시오.

  • /home1/opentsdb/opentsdb/conf/opentsdb-jaas.conf 파일이 존재하는지 확인합니다.
  • JAAS 파일에 Client { ... }; 섹션이 있는지 확인합니다.
  • TSD 기동 전 JVMARGS-Djava.security.auth.login.config 옵션을 설정했는지 확인합니다.

기동 예시는 다음과 같습니다.

export JVMARGS="-Djava.security.auth.login.config=/home1/opentsdb/opentsdb/conf/opentsdb-jaas.conf -Djavax.security.auth.useSubjectCredsOnly=false -Dzookeeper.sasl.client=true -Dzookeeper.sasl.clientconfig=Client"
./build/tsdb tsd --config=/home1/opentsdb/opentsdb/conf/opentsdb.conf

TSD 기동 시 No password provided 오류

다음 오류가 발생하면 JAAS 파일은 읽었지만 keytab 인증에 실패하여 password prompt로 전환된 상태입니다.

javax.security.auth.login.LoginException: No password provided

오류 발생 시 다음 항목을 확인해 주십시오.

  1. keytab에 포함된 principal을 확인합니다.

    klist -kte /etc/security/keytabs/hbase.headless.keytab
    
  2. JAAS의 principal 값이 klist -kte 출력과 정확히 일치하는지 확인합니다.

  3. JAAS에 doNotPrompt=true가 포함되어 있는지 확인합니다.

  4. keytab으로 직접 인증이 되는지 확인합니다.

    kdestroy
    kinit -kt /home1/opentsdb/opentsdb/conf/hbase.headless.keytab hbase-<CLUSTER_NAME>@USER.GUIDE
    klist
    
  5. kinit이 실패하면 keytab 파일 또는 principal 값이 잘못된 것입니다. 올바른 keytab을 다시 생성하거나 JAAS의 keyTab, principal 값을 수정해 주십시오.

ZooKeeper AuthFailed 오류

다음 오류가 발생하면 ZooKeeper SASL 인증에 실패한 상태입니다.

WatchedEvent state:AuthFailed type:None path:null

오류 발생 시 다음 항목을 확인해 주십시오.

  • -Dzookeeper.sasl.client=true 옵션이 설정되어 있는지 확인합니다.
  • -Dzookeeper.sasl.clientconfig=Client 옵션이 설정되어 있는지 확인합니다.
  • JAAS 파일의 Client 섹션이 올바른 keytab과 principal을 사용하고 있는지 확인합니다.
  • kinit -kt <KEYTAB> <PRINCIPAL>이 성공하는지 확인합니다.

TSD는 기동되었지만 8888 포트가 열리지 않는 경우

다음 명령어로 TSD 프로세스와 포트를 확인해 주십시오.

ps -ef | grep '[t]sdb tsd'
ss -lntp | grep 8888

TSD 프로세스가 없으면 OpenTSDB 로그를 확인해 주십시오.

tail -200 /var/log/opentsdb/opentsdb.log

HBase meta region이 온라인 상태가 아닌 경우

OpenTSDB는 HBase의 hbase:meta region에 접근할 수 있어야 합니다. HBase Master가 초기화 중이거나 HBase region 수가 0으로 표시되면 OpenTSDB 기동도 실패할 수 있습니다.

다음 명령어로 HBase 상태를 확인해 주십시오.

echo "status 'simple'" | hbase shell -n

정상 상태에서는 live region server가 표시되고, 최소한 hbase:meta region이 온라인 상태여야 합니다. 다음과 같은 로그가 반복되면 HBase 관리자 또는 서비스 담당자를 통해 HBase meta region 상태를 먼저 복구해 주십시오.

hbase:meta,,1.1588230740 is NOT online
Master startup cannot progress
PleaseHoldException: Master is initializing
주의

ZooKeeper의 HBase znode를 직접 수정하거나 삭제하는 작업은 HBase 서비스 상태에 영향을 줄 수 있습니다. HBase meta region 복구 작업은 HBase 관리자 또는 서비스 담당자의 지시에 따라 수행해 주십시오.