Naver에서 개발한 오픈소스인 Pinpoint… APM Tool이면서 성능 분석도구로 많이 사용하고 있다.
다른 APM 툴에 비해서 장단점은 명확히 존재하지만, 오픈소스기도 하고 따로 소스코드쪽 수정이 필요없기에 많은 선택을 받고 있다고 생각한다.
Pinpoint는 여러가지 서비스(모듈)들이 합쳐지는데 각각의 버전 호환 여부가 중요하다.
https://github.com/pinpoint-apm/pinpoint
위 링크를 통해 버전들을 확인해보면서 아직 정식출시되지는 않았지만 어느정도 개발이 완료된 것 같은 Pinpoint 3.0을 채택하였다.
(실제 운영 서비스에서는 3.0을 채택하기에는 무리가 있을 것 같아 신규 데모 서비스에 붙이기로 했다.)
먼저 Pinpoint에서 먼저 설치할 서비스는 HBase 최신 버전이다.
HBase v2.5.10 설치하기
https://hbase.apache.org/downloads.html
위 경로에서 hbase의 최신버전을 확인하면 되는데, 2.6.0 버전보다는 2.5.10이 안정되어있어서 2.5.10 버전을 채택하였다.
(사실 Pinpoint 3.0부터가 불안정한 것 같은데 이게 맞나 싶긴 하지만..)
HBase의 설치 자체는 어렵지 않다.
wget https://dlcdn.apache.org/hbase/2.5.10/hbase-2.5.10-bin.tar.gz
tar -zxvf hbase-2.5.10-bin.tar.gz
vim ./hbase-2.5.10/conf/hbase-env.sh (JAVA_HOME 변경)
hbase-env.sh에 JAVA_HOME을 변경해줘야하는데 다른 Pinpoint 서비스들의 Java 버전 호환 여부를 확인하고 해당 JAVA_HOME을 설정해준다.
vim ./hbase-2.5.10/conf/hbase-site.xml
<property>
<name>hbase.cluster.distributed</name>
<value>false</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/hbase</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>file:///hbase_data/data</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/hbase_data/zookeeper</value>
</property>
<property>
<name>hbase.master.port</name>
<value>60000</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase</value>
mkdir -p /hbase_data/zookeeper
hbase-site.xml에 필요한 설정 및 값들을 수정하는 부분이 중요하다.
data directory를 잡아주고, zookeeper 포트 및 관련 설정들을 설정한 후 아래 스크립트를 실행시키면 끝난다.
./hbase-2.5.10/bin/start-hbase.sh
다만 이렇게 하면 HBase는 설치가 되지만 Pinpoint에서 필요한 database가 없기에 이를 만들어주는 스크립트를 실행시켜줘야한다.
vim ./hbase-2.5.10/bin/hbase-create.hbase
(https://github.com/pinpoint-apm/pinpoint/blob/master/hbase/scripts/hbase-create.hbase 파일 참조)
./hbase-2.5.10/bin/hbase shell hbase-create.hbase
이렇게 Pinpoint용 HBase 설정을 끝냈다.
간단하게 netstat 명령어로 hbase의 60000포트가 떠있는지 체크만 하면 마무리 된다.
설정쪽을 보니 hbase의 이중화도 쉽게 가능할 것 같은데 이 부분 또한 추후에 적용해볼까 싶다.