> Hello World !!!

     

@syaku

JAVA APM Tool PINPOINT : 자바 모니터링툴 핀포인트

핀포인트는 자바 환경의 서비스를 모니터링하기 위해 개발된 APM Tool 이다. 네이버 개발자들이 개발하고 오픈소스로 배포되고 있다. 상용 APM tool 만큼이나 화려하지 않지만 모니터링하는 데 아주 유용하게 사용할 수 있다. 설치가 간단해서... 설명이 필요할까 싶다??

https://github.com/naver/pinpoint

설치 메뉴얼
https://github.com/naver/pinpoint/blob/master/quickstart/README.md
https://github.com/naver/pinpoint/blob/master/doc/installation.md

설치준비

핀포인트는 자바6부터 자바8 버전까지 지원하는 것으로 보인다. 그런데 한가지 버전만 있으면 구동이 되지 않는 다. 그래서 자바6부터 자바8까지 환경변수를 등록해야한다. 

export JAVA_HOME=
export JAVA_6_HOME=
export JAVA_7_HOME=
export JAVA_8_HOME=

맥 사용자는 아래와 같이하면 된다.

$ vi ~/.bash_profile

export JAVA_HOME="$(/usr/libexec/java_home -v 1.7)"
export JAVA_6_HOME="$(/usr/libexec/java_home -v 1.6)"
export JAVA_7_HOME="$(/usr/libexec/java_home -v 1.7)"
export JAVA_8_HOME="$(/usr/libexec/java_home -v 1.8)"

$ source ~/.bash_profile

메이븐은 3.2.x 이상 버전을 설치한다.

설치

git이 없으면 핀포인트 사이트에서 전체 소스를 내려받는 다. git으로 소스를 모두 내려받는 다.

$ git clone https://github.com/naver/pinpoint.git
$ cd pinpoint
$ mvn install -Dmaven.test.skip=true

메이븐 빌드가 완료되어야 한다.

Apache HBase를 사용하기 때문에 설치해야 한다. 설치는 직접 내려받지 않고 아래와 같이 실행하면 된다.

$ ./quickstart/bin/start-hbase.sh   # 다운로드 및 서비스 구동
$ ./quickstart/bin/init-hbase.sh    # 테이블 생성

핀포인트는 collector와 웹UI가 있는 데 collector는 데이터를 수집하는 역활을 하고 웹UI는 핀포인트를 쉽게 접근해서 사용할 수 있는 사용자환경인터페이스를 제공하는 웹서비스이다. 그래서 각각 구동해줘야 한다.

collector를 구동할 경우 대상이 되는 서비스가 1개 이상 구동(에이전트)되고 있어야 collector가 구동된다.

대상이 될 서비스를 핀포인트와 연동하기 위해 에이전트를 설정한다. 에이전트는 quickstart 폴더 안에 agent/target/pinpoint-agent 경로에 위치하고 있다. collector와 에이전트의 포트는 일치해야 하므로 두개의 설정 파일을 열어 수정한다.

< / > quickstart/conf/pinpoint.config

profiler.collector.span.port=29996
profiler.collector.stat.port=29995
profiler.collector.tcp.port=29994

< / > quickstart/agent/target/pinpoint-agent/pinpoint.config

profiler.collector.span.port=29996
profiler.collector.stat.port=29995
profiler.collector.tcp.port=29994

에이전트에 포트설정이 다르게 되어 있을 것이다 수정한다.

그리고 에이전트의 경로를 환경변수 AGENT_PATH에 등록한다.

export AGENT_PATH=pinpoint-agent

모니터링 대상이될 웹서비스에 옵션을 추가하고 구동한다. 환경변수가 적용되지 않는 다면 직접 경로를 입력한다.

-javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar 
-Dpinpoint.agentId=핀포인트유일한값을입력한다.
-Dpinpoint.applicationName=웹서비스이름을입력한다.

톰캣에 옵션을 설정하고 싶다면 아래와 같이 한다.

CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=$AGENT_ID"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=$APPLICATION_NAME"

웹서비스를 구동한다. 그리고 핀포인트 collector와 웹UI 를 구동한다.

$ ./quickstart/bin/start-collector.sh

$ ./quickstart/bin/start-web.sh

이제 웹UI에 http://localhost:28080 접속할 수 있다.

서비스 종료

$ ./quickstart/bin/start-web.sh

$ ./quickstart/bin/start-collector.sh

$ ./quickstart/bin/stop-hbase.sh

다시 시작할때는 hbase 시작 후 collector , web 순으로 시작한다.




현재 서비스에 대한 정보를 한눈에 확인할 수 있으며, 자동 웹페이지 리로드기능도 있다. 오른쪽 상단 차트에 원하는 시간대를 드래그하면 상세한 정보를 얻을 수 있다.


디비 요청에 대한 정보와 프로그램 요청 처리에 관련된 모든 정보를 조회할 수 있다. 예외는 빨간색으로 표시된다.



posted syaku blog

Syaku Blog by Seok Kyun. Choi. 최석균.

http://syaku.tistory.com